Тестировщик (Верификатор) / QA Engineer
Обязанности:
Проектировать и развивать систему автоматизированного тестирования мобильных приложений Android и iOS; Разрабатывать и поддерживать нативные автотесты на Kotlin и Swift; Развивать архитектуру мобильной автоматизации, тестовые библиотеки и внутренние инструменты; Развивать подходы к синхронизации, работе с асинхронным UI и повышению стабильности автотестов; Интегрировать и развивать автоматизированные тесты в CI/CD; Организовывать параллельное выполнение больших наборов тестов на эмуляторах, симуляторах и физических устройствах; Развивать механизмы sharding, retry и quarantine; Анализировать и устранять flaky-тесты и проблемы тестовой инфраструктуры; Совместно с разработчиками улучшать testability мобильных приложений; Проводить code review и участвовать в принятии архитектурных решений в области автоматизации.
Требования:
Опыт разработки и развития систем автоматизированного тестирования мобильных приложений от 5 лет; Глубокий практический опыт автоматизации нативных Android- и iOS-приложений; Уверенное владение Kotlin и Swift; Глубокое знание Kaspresso, Espresso, UiAutomator и XCUITest; Практический опыт автоматизации приложений на Jetpack Compose; Опыт проектирования и развития архитектуры мобильной автоматизации, тестовых библиотек и внутренних инструментов; Глубокое понимание механизмов синхронизации UI-тестов, асинхронного поведения приложения и причин возникновения flaky-тестов; Уверенное понимание OOP, SOLID и основных паттернов проектирования; Хорошее понимание архитектуры, lifecycle и принципов работы Android- и iOS-приложений; Умение читать и анализировать production-код мобильных приложений и вносить изменения для повышения testability; Практический опыт работы с Gradle, ADB, AVD, Xcode, xcodebuild и iOS Simulator; Опыт самостоятельного построения и развития CI/CD для мобильных автотестов; Опыт организации параллельных запусков и работы с sharding, retry и quarantine; Опыт системного расследования flaky-тестов и проблем, воспроизводящихся только в CI; Опыт разработки вспомогательных инструментов и автоматизации процессов вокруг тестовых прогонов; Способность самостоятельно принимать архитектурные решения в области автоматизации и отвечать за их дальнейшее развитие
