Перейти к основному содержимому

6.08. Тестирование мобильных приложений

Тестировщику Разработчику Аналитику

Тестирование мобильных приложений

что такое Тестирование мобильных приложений

Мобильные приложения предъявляют уникальные требования к тестированию, обусловленные разнообразием платформ (iOS, Android), устройств (разные размеры экранов, сенсоры, производительность), операционных систем (множество версий), а также спецификой взаимодействия с пользователем (жесты, ориентация, фон/активность, push-уведомления). Тестирование мобильных приложений включает как функциональные, так и нефункциональные аспекты: UI, производительность, потребление батареи, работу в условиях нестабильного соединения и т.д.

Инструменты для мобильного тестирования можно разделить на три категории:

Кросс-платформенные — единый код для iOS и Android;
Нативные — специализированные фреймворки для одной платформы;
Гибридные/специализированные — ориентированные на определённые типы приложений (например, React Native).

Appium — самый известный кросс-платформенный инструмент для автоматизации мобильных приложений. Он реализует протокол WebDriver для мобильных ОС, что позволяет использовать привычные API и интегрировать тесты в существующие Selenium-инфраструктуры. Appium поддерживает:

нативные приложения (написанные на Swift/Kotlin);
гибридные (веб-контент внутри WebView);
мобильные веб-сайты.

Для Android Appium использует UiAutomator2 (или Espresso в режиме automationName: Espresso), для iOS — XCUITest. Это обеспечивает взаимодействие на уровне нативных тестовых фреймворков, что повышает стабильность и точность. Appium работает по принципу «не нужно перекомпилировать приложение», что упрощает интеграцию в CI/CD.

Ключевое ограничение — скорость выполнения тестов из-за накладных расходов на межпроцессное взаимодействие.

Espresso — нативный фреймворк для Android, разработанный Google. Он работает внутри процесса приложения, что обеспечивает мгновенную синхронизацию с UI-потоком и исключает необходимость в ручных ожиданиях. Тесты на Espresso компилируются вместе с приложением и запускаются на устройстве или эмуляторе через Android Test Orchestrator.

XCUITest — нативный фреймворк от Apple для тестирования iOS-приложений. Он является частью XCTest и работает на уровне UI-иерархии приложения через private API. XCUITest позволяет записывать и воспроизводить взаимодействия с интерфейсом, поддерживает параметризацию и интеграцию с Xcode.


Detox — фреймворк, разработанный Wix, специально для E2E-тестирования React Native-приложений. В отличие от Appium, Detox использует grey-box подход: он интегрируется в нативный код приложения и получает информацию о его внутреннем состоянии (например, завершении анимаций, сетевых запросов). Это позволяет избегать таймаутов и делать тесты детерминированными.

Detox поддерживает как iOS (через EarlGrey), так и Android (через Espresso), и пишется на JavaScript/TypeScript. Он особенно эффективен в CI/CD благодаря стабильности и скорости.

Maestro — современный инструмент с открытым ядром, предлагающий декларативный подход к мобильному тестированию. Сценарии описываются в YAML-файлах, что делает их легко читаемыми и поддерживаемыми даже без глубоких навыков программирования