Автоматизация тестирования Android-приложения Wikipedia
- Описание
- Технологии и инструменты
- Реализованные проверки
- Запуск тестов
- Сборка в Jenkins
- Интеграция с Allure Report
- Интеграция с Allure TestOps
- Уведомления в Telegram
- Видео выполнения теста
- Правовая информация
Википедия — многоязычная общедоступная интернет-энциклопедия со свободным контентом. Является самым крупным и наиболее читаемым справочником, а также самой полной энциклопедией из когда-либо создававшихся за всю историю человечества.
-
Современная архитектура тестов
- Использован шаблон проектирования Page Object для поддержки чистоты и переиспользуемости кода;
- Конфигурации написаны с использованием библиотеки Owner, что обеспечивает гибкость и удобство настройки окружений.
-
Кастомные расширения для тестов
@Layer,@Manual— интеграция с Allure TestOps для категоризации тестов.
-
Мобильная специфика
- Тестирование Android-приложения с использованием Appium;
- Запуск на реальных устройствах и эмуляторах.
-
Удобные сценарии запуска
- Локальный и удалённый запуск;
- Фильтрация тестов по тегам;
- Возможность запуска напрямую из Allure TestOps.
-
CI/CD-процессы
- При каждом пуше в основные ветки и перед мержем пулл-реквестов запускается сборка проекта в GitHub Actions.
-
Интеграция с Allure
- После прохождения автотестов формируется наглядный Allure-отчет:
- Шаги выполнения;
- Скриншот страницы перед завершением теста;
- Видео прохождения сценария;
- HTML-код страницы и логи браузера.
- Результаты автоматически синхронизируются с Allure TestOps.
- После прохождения автотестов формируется наглядный Allure-отчет:
-
Уведомления о результатах
- Итоги тестового прогона отправляются в Telegram-чат с помощью библиотеки Allure notifications.
-
Среда разработки
-
Язык программирования
-
Фреймворки для тестирования
-
Сборка и управление зависимостями
- Gradle — сборка, управление зависимостями и настройка запуска тестов
-
Контроль версий и репозиторий
-
Инфраструктура и CI/CD
- GitHub Actions — автоматизация рабочих процессов и CI/CD в GitHub
- Jenkins — автоматизация прогонов тестов, формирование отчётов и интеграция с внешними сервисами
- Browserstack — облачная платформа для запуска тестов на реальных устройствах
-
Отчётность и интеграции
- Allure Report — детализированные отчёты о тестовых прогонах
- Allure TestOps — управление тестами и аналитика результатов
- Telegram — интеграция через бота для оперативных уведомлений о статусе прогонов
UI
Онбординг:
- Проверка содержимого всех фрагментов онбординга
- Переход между фрагментами онбординга свайпами
- Нажатие кнопки "Back" закрывает онбординг
- Нажатие кнопки "Skip" закрывает онбординг
- Нажатие кнопки "Get started" закрывает онбординг
- Онбординг не открывается после пропуска при повторном запуске приложения
- Онбординг не открывается после завершения при повторном запуске приложения
Поиск:
- Ввод поискового запроса с проверкой наличия результатов
- Открытие статьи из результатов поиска
Ручные проверки
Авторизация:
- Авторизация с валидными данными
- Авторизация с несуществующим логином
---
config:
theme: base
themeVariables:
primaryColor: '#F9F9F9'
primaryBorderColor: '#404040'
primaryTextColor: '#7F7F7F'
lineColor: '#404040'
nodeBorder: '#404040'
---
flowchart LR
subgraph C["Локальный запуск"]
C1["Запуск через локальный Appium Server"]
end
subgraph D["Удалённый запуск"]
D2[/"Учетные данные Browserstack"/]
D1["Запуск через Browserstack"]
end
subgraph S["Настройки запуска"]
S1[/"Параметры устройства"/]
S2[/"Параметры приложения"/]
end
A(["Запуск тестов"]) --> B{"Выбор окружения<br>remote=?"}
B -- false --> C1
B -- true --> D1
D1 --> D2
C1 --> S1
D2 --> S1
S1 --> S2
S2 --> U{"Выбор типов тестов<br>includeTags=?"}
U -- regress --> X["Регрессионные тесты"]
U -- smoke --> Y["Smoke-тесты"]
X --> Z(["Результаты тестов"])
Y --> Z
D2 -. Необходимо задать id приложения .-> S2
N1["Возможно хранение в конфигурационных файлах"] -.-> D2 & S1 & S2
N1@{ shape: braces}
A:::terminator
B:::decision
C:::block
D:::block
S:::block
U:::decision
Z:::terminator
classDef terminator fill:#808080,stroke:#404040,stroke-width:2px,color:#000
classDef decision fill:#404040,stroke:#000000,stroke-width:2px,color:#FFF
classDef block fill:#7F7F7F,stroke:#404040,stroke-width:2px,color:#000
gradle clean test -Premote={true|false} -PincludeTags={tags} -Ddevice={device} \
-Dremote.domain={domain} -Dremote.username={username} -Dremote.access_key={access_key} -Dproject.name={project_name} \
-Dapp.id={id} -Dapp.package={package} -Dapp.activity={activity}remote— выбор окружения (опционально):true— запуск тестов через Browserstackfalse— запуск тестов через локальный Appium Server (по умолчанию)
device— предопределенная конфигурация устройства (опционально):device1,device2- по умолчанию
default
remote.*(только дляremote=true) — данные для авторизации в Browserstack:domain— домен (по умолчаниюhub.browserstack.com)username— логин пользователя Browserstackaccess_key— ключ доступа пользователя Browserstackproject.name(только дляremote=true) — название проекта в Browserstack
app.*— данные тестируемого приложения:id(только дляremote=true) — id приложения в Browserstack, которое будет устанавливаться на устройствоpackage— имя пакета приложения (по умолчаниюorg.wikipedia.alpha)activity— название стартовой Activity приложения (по умолчаниюorg.wikipedia.main.MainActivity)
includeTags— теги тестов для запуска (можно комбинировать, см. документацию JUnit):regress— регрессионные тестыsmoke— smoke-тесты
Минимальный набор параметров для запуска через Browserstack:
gradle clean test -Premote=true -Dremote.username={username} -Dremote.access_key={access_key} -Dapp.id={id}Дополнительные команды
-
Формирование Allure-отчёта:
gradle allureReport
По умолчанию отчёт генерируется в папку
build/allure-results. -
Формирование Allure-отчёта, запуск локального HTTP-сервера и открытие в браузере:
gradle allureServe
- Установить Android Studio и настроить переменные среды
- Открыть
Virtual Device Managerи создать эмулятор с требуемыми свойствами - Установить Node.js
- Установить Appium через
npmnpm i -g appium
- Установить UiAutomator2 Driver
appium driver install uiautomator2
- Запустить Appium Server
appium server --base-path /wd/hub
- Запустить эмулятор
- Запустить тесты
Для упрощения локального запуска можно создать файлы remote/browserstack.properties, remote/local.properties, app/app.properties, devices/local.{device_name}.properties и devices/browserstack.{device_name}.properties в корневой папке config.
В папке есть шаблоны: browserstack.example.properties, local.example.properties, browserstack.device.example.properties, local.device.example.properties, app.example.properties. Необходимо скопировать их, убрав из имени .example, и заполнить своими данными.
Минимальный набор параметров для локального запуска, если настроена локальная конфигурация:
gradle clean testСборка в Jenkins
Jenkins — инструмент для автоматизации сборки, тестирования и деплоя проектов.
В проекте используется для:
- удалённого запуска автотестов,
- формирования Allure-отчётов по результатам прогонов,
- интеграции с уведомлениями в Telegram.
На странице проекта доступна информация о последних сборках и график успешности прохождения тестов из Allure-отчёта:
Раздел Build with Parameters позволяет задать необходимые параметры перед запуском сборки:
После завершения сборки автоматически формируется Allure-отчёт, и обновляются результаты прохождения тестов в Allure TestOps.
Интеграция с Allure Report
Allure Report — инструмент для визуализации результатов тестов, который формирует наглядные и подробные отчёты.
В проекте используется для:
- отображения шагов выполнения теста,
- демонстрации скриншотов и видео,
- анализа логов и исходного кода страницы,
- отслеживания успешных и упавших тестов.
Во вкладке Overview отображается общий результат прогона тестов: диаграммы успешных и упавших тестов, распределение по сьютам и функциональным фичам:
При переходе в конкретный тест доступны подробности — шаги теста, скриншоты, видео и логи браузера:
Интеграция с Allure TestOps
Allure TestOps — облачная платформа для управления тестами и анализа результатов.
В проекте используется для:
- хранения тест-кейсов,
- группировки тестов по функциональностям и пользовательским историям,
- отслеживания выполнения тестов в динамике,
- интеграции с Jenkins и отчетами Allure.
Интеграция с Jenkins позволяет запускать выбранные тесты и отслеживать их выполнение в реальном времени:
Прогоны тестов отображаются на графиках и диаграммах, что позволяет быстро оценивать динамику и стабильность тестов:
Тестовые сценарии автоматически синхронизируются с кодом проекта после завершения прогонов, обеспечивая актуальность кейсов:
Результаты тестового прогона автоматически отправляются в Telegram-чат, что позволяет оперативно отслеживать статус прогонов и быстро реагировать на падения тестов:
Для каждого теста в отчёте прилагается видео прохождения, позволяя визуально проверить выполнение шагов и воспроизвести возможные ошибки:
Все названия продуктов, логотипы и изображения (включая материалы сайта wikipedia.org и приложения Wikipedia, которые используются в тестах) использованы исключительно в образовательных и демонстрационных целях. Все права принадлежат их законным владельцам.









