Автотесты мобильного приложения Android: Appium 2, UiAutomator2, Java 17, JUnit 5, Allure.
Проект — часть портфолио по автоматизации тестирования. Веб-часть: parabank-ui-tests, API: conduit-api-tests.
Статус: каркас. Окружение поднято, драйвер и первый smoke-тест написаны. Сценарии мобильной специфики — в работе.
| Слой | Инструмент |
|---|---|
| Клиент | Appium java-client 10.1.1 |
| Сервер | Appium 3.7.0 |
| Драйвер | uiautomator2 8.7.0 |
| Тест-раннер | JUnit 5 |
| Отчёты | Allure |
| Сборка | Maven |
src/main/java/com/mobile/
config/MobileConfig.java — параметры запуска и адрес сервера
screens/SettingsScreen.java — Screen Object
src/test/java/com/mobile/tests/
BaseMobileTest.java — жизненный цикл драйвера
SmokeTests.java — тесты
Требуется запущенный эмулятор или устройство с включённой отладкой и поднятый Appium-сервер:
appium --address 127.0.0.1
mvn clean test
Отчёт:
mvn allure:serve
Приложение под тестом вынесено в конфигурацию. appPackage и appActivity читаются из параметров запуска. В реальном проекте сюда подставляется APK из артефактов сборки, а не константа в коде:
mvn clean test -Dapp.package=... -Dapp.activity=...
Только явные ожидания. Неявное ожидание (implicitlyWait) не используется: при смешивании с явными тайминги складываются непредсказуемо, и тесты начинают мигать.
Свежая сессия на каждый тест (@BeforeEach, не @BeforeAll). Мобильное приложение хранит состояние между экранами — общая сессия делает тесты зависимыми друг от друга.
Утверждения живут в тестах, а не в Screen Object. Экран отвечает за то, что на нём есть; тест — за то, каким это должно быть.
Appium-сервер запускается на 127.0.0.1. По умолчанию он слушает на всех интерфейсах и не имеет аутентификации: любой в той же сети получает управление подключёнными устройствами.
- Сценарии мобильной специфики: разрешения, поворот экрана, работа без сети, свёртывание и восстановление приложения
- Прогон на реальном устройстве
- Отчёт Allure со скриншотами при падении