Как протестировать билд на Android?
1. Подготовка
Убедиться в рабочем артефакте:
app.apkилиapp.aab.Подпись: release-подпись присутствует или включён Play App Signing.
Собрать debug и release сборки:
Gradle:
./gradlew assembleDebug/./gradlew assembleReleaseДля AAB:
./gradlew bundleRelease→ получаемapp-release.aab.
2. Установка билда на устройство (ручная проверка)
Установка APK:
adb devices
adb install -r path/to/app.apk    # -r — перезаписать
adb uninstall com.example.appУстановка AAB (универсальный .apk через bundletool):
# Скачать bundletool.jar
java -jar bundletool.jar build-apks --bundle=app.aab --output=app.apks --mode=universal
unzip app.apks -d out
adb install -r out/universal.apkОчистка данных и перезапуск:
adb shell pm clear com.example.app
adb shell am start -n com.example.app/.MainActivity3. Сбор логов и багрепортов
Логи в реальном времени:
adb logcat -c
adb logcat > device_logcat.txtБагрепорт:
adb bugreport bugreport.zipСнять стек трейс при крэше:
logcat+tombstones(adb shell ls /data/tombstones).
4. Быстрая ручная проверка (smoke)
Проверить на одном реальном устройстве минимум:
Установка/удаление, первый запуск.
Авторизация/логин.
Основной пользовательский путь (critical flow).
Отправка/приём данных (offline/online).
Работа уведомлений, deep links, интенты.
Разрешения (permissions) — запросы и поведение при отказе.
Пауза/возобновление (background/foreground). Записывать шаги + скриншоты (
adb exec-out screencap -p > sc.png).
5. Тестирование на множестве устройств (фрагментация)
Эмуляторы: разные API (minSdk → targetSdk), разные экраны, плотности.
Реальные устройства: как минимум 3–5 популярных моделей/версий у вашей аудитории.
Облачные сервисы: Firebase Test Lab, BrowserStack, Sauce Labs — для широкого охвата устройств.
6. Автоматизация тестов
Unit tests:
./gradlew test(JVM).Instrumentation / UI tests: Espresso / UIAutomator:
./gradlew connectedAndroidTest.Пример запуска определённого теста:
adb shell am instrument -w -r -e class com.example.MyTest com.example.test/androidx.test.runner.AndroidJUnitRunnerE2E через Appium (если нужно кроссплатформенно).
CI: запускать тесты в пайплайне (GitHub Actions, GitLab CI, Bitrise) и/или отправлять сборки в Firebase Test Lab.
7. Типы тестирования и конкретные проверки
Регрессия — ключевые пользовательские пути.
Функциональное — фичи по спецификации.
UI/UX — корректность верстки на разных экранах и локалях.
Производительность: холодный/тёплый запуск, время отклика, кадры/сек (ANR и jank).
Память/утечки: профилирование в Android Studio / LeakCanary.
Энергопотребление: батарея / wakelocks.
Сеть: тесты при слабом соединении/потере соединения/переходе 3G↔4G↔Wi-Fi (use Charles/CLI tools или встроенные эмуляции).
Безопасность: хранение ключей, TLS, Intent-exposure, WebView.
Хранилище: backup/restore, миграции БД.
Параллельные сессии/мультиоконность (если релевантно).
Локализация и форматы дат/валют.
8. Инструменты для нагрузочного / автоматического тестирования
Firebase Test Lab — набора тестов на множестве устройств.
Android Profiler, Systrace — для производительности.
Monkey/MonkeyRunner — стресс-тесты (генерация случайных событий).
Gatling/Locust (для бэкенда) + эмуляция мобильного трафика.
LeakCanary — обнаружение утечек памяти.
9. Работа с Flaky tests / нестабильностью
Использовать IdlingResource (Espresso) для синхронизации.
Убрать жесткие таймауты, заменить sleep на ожидания условий.
Локальные mocking/stubbing сервисов (MockWebServer / WireMock).
Повторный запуск упавших тестов в CI с контролем процента флейков — если > threshold — лечить, не игнорировать.
10. Play Console — предрелизные опции и релиз-гейт
Internal/Closed/Open testing tracks: быстро раздаёт билд тестерам.
Pre-launch report (Test Lab) — автоматическая проверка на наборах устройств (UI, краши).
Release checklist в Play Console: review, rollout % (степенчатый релиз), crash & ANR monitoring, vitals.
Поддержка App Bundles: Play генерирует оптимизированные APK для устройств — проверить signing & targeting.
11. Критерии готовности к релизу (пример)
Smoke tests OK на реальных устройствах.
Unit + Instrumentation тесты проходят в CI.
Нивелированы критические баги (P0/P1).
Crash rate и ANR < допустимых значений в метриках.
Производительность в пределах SLA (cold start, memory).
Rollout plan: поэтапный — 5% → 25% → 100%.
12. Полезные команды и проверки (сводка)
# установить apk
adb install -r app.apk
# удалить
adb uninstall com.example.app
# запустить активити
adb shell am start -n com.example.app/.MainActivity
# очистить данные
adb shell pm clear com.example.app
# запустить instrumentation тесты
adb shell am instrument -w com.example.test/androidx.test.runner.AndroidJUnitRunner
# логи
adb logcat
# скриншот
adb exec-out screencap -p > screen.png
# снять багрепорт
adb bugreport bugreport.zip13. Дополнительные практические советы (коротко, без рассуждений)
Всегда иметь reproducible steps и минимальный repro-apk для багов.
Использовать feature flags / remote config для безопасного выключения фич в проде.
Хранить релизную конфигурацию и ключи в защищённом месте, не коммитить подпись в публичный репозиторий.
Вести матрицу устройств и покрытие тестами.
Оценивайте метрики после релиза (crashlytics, Play Console vitals) и откатывайте при необходимости.
Last updated
Was this helpful?