Налаштування тестування на реальних пристроях через Firebase Test Lab
Емулятор бреше. Не зловмисно, але систематично: GPU-рендеринг інший, Bluetooth недоступний, камера симульована, поведінка пам'яті відрізняється від реального пристрою. Ми в TrueTech за 10+ років досвіду з мобільними проєктами стикалися з цим десятки разів. Firebase Test Lab надає доступ до фізичних пристроїв — Pixel 8, Samsung Galaxy S24, планшетів, старих Xiaomi з кастомними прошивками. Тест, який пройшов на емуляторі, може впасти на Samsung One UI через кастомний WebView або змінену систему дозволів. Замовте налаштування під ключ — ми підготуємо матрицю, Robo Script і CI-інтеграцію за 2–3 дні.
Чому емулятори підводять, а реальні пристрої — ні?
Емулятор не відтворює апаратні особливості: різну поведінку пам'яті, відсутність реальних датчиків (акселерометр, гіроскоп), емульовану камеру. На реальному пристрої виявляються проблеми з push-сповіщеннями (APNs/FCM), роботою у фоні (Background fetch) та глибокими посиланнями (Universal Links / App Links). За нашими даними, близько 30% крешів, виявлених на фізичних пристроях, не відтворюються на емуляторі. Використання Firebase Test Lab гарантує, що ваш застосунок готовий до реальних користувачів.
Що вміє Firebase Test Lab
Два режими тестування:
Instrumentation Tests — запускає ваші Espresso / XCUITest тести на обраних пристроях. Повний контроль над тим, що перевіряється.
Robo Test — автоматичний краулер. Запускаєте APK без жодного написаного тесту, Robo самостійно обходить інтерфейс по Accessibility-дереву, натискає кнопки, заповнює поля випадковими даними, шукає креші. Корисний для швидкої перевірки нових збірок перед релізом.
Підтримка платформ: Android (Espresso, UI Automator, Appium) та iOS (XCUITest). Firebase Test Lab для iOS — окрема історія з меншим парком пристроїв, але реальні iPhone та iPad все одно цінніші за симулятор.
Налаштування: від завантаження білда до результатів
Android
Складання APK та тест-APK:
./gradlew assembleDebug assembleAndroidTest Завантаження та запуск через gcloud:
gcloud firebase test android run \ --type instrumentation \ --app app/build/outputs/apk/debug/app-debug.apk \ --test app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk \ --device model=Pixel8,version=34,locale=ru,orientation=portrait \ --device model=a54xnsxx,version=13,locale=ru,orientation=portrait \ --results-bucket gs://my-project-test-results \ --results-dir "run_$(date +%Y%m%d_%H%M%S)" model=a54xnsxx — це Samsung Galaxy A54. Список доступних моделей: gcloud firebase test android models list.
Матриця пристроїв
Вибір матриці — окрема аналітична задача. Немає сенсу ганяти тести на 50 пристроях. Принцип:
| Критерій | Що включаємо |
|---|---|
| Топ-5 пристроїв з аналітики | За даними Firebase Analytics / Crashlytics |
| Мінімальна підтримувана версія ОС | minSdkVersion / deployment target |
| Поточна версія ОС | Android 14 / iOS 17 |
| Samsung (One UI) | Окремо — через кастомізації |
| Планшет | Якщо підтримується форм-фактор |
Реалістична матриця для більшості проєктів: 3–5 пристроїв. Більше — дорожче та довше, але не обов'язково інформативніше.
iOS
Для iOS потрібен .ipa з development-підписом (не distribution). Завантаження:
gcloud firebase test ios run \ --test MyAppTests.zip \ --device model=iphone15pro,version=17.4,locale=ru_RU,orientation=portrait MyAppTests.zip — архів з .xctestrun файлом та тест-продуктами. Збирається через xcodebuild build-for-testing.
Robo Test з кастомним скриптом
Чистий Robo-краулер іноді застряє на екрані логіну — не знає облікові дані. Robo Script дозволяє задати початкові дії:
[ { "eventType": "VIEW_TEXT_CHANGED", "replacementText": "[email protected]", "elementDescriptors": [{"resourceName": "com.example.app:id/email_input"}] }, { "eventType": "VIEW_CLICKED", "elementDescriptors": [{"resourceName": "com.example.app:id/login_button"}] } ] Після авторизації Robo продовжує обхід вже авторизованої частини застосунку. Це швидкий спосіб перевірити регресії без написання тестів.
Інтеграція в CI
GitHub Actions:
- name: Set up gcloud uses: google-github-actions/setup-gcloud@v2 with: service_account_key: ${{ secrets.GCLOUD_SERVICE_ACCOUNT_KEY }} project_id: my-firebase-project - name: Run tests on Firebase Test Lab run: | gcloud firebase test android run \ --app app-debug.apk \ --test app-debug-androidTest.apk \ --device model=Pixel8,version=34 \ --timeout 10m Service account потрібен з роллю Firebase Test Lab Admin. Результати автоматично зберігаються у Cloud Storage — скріншоти, відео, логкати, XML-звіт.
Аналіз результатів
У консолі Firebase Test Lab для кожного запуску доступні:
- Відеозапис проходження тесту
- Logcat з фільтром за тегами
- Скріншоти в ключових точках
- Звіт про покриття (якщо включений jacoco)
- XML-результати у форматі JUnit (для Allure / Jenkins)
Що входить в налаштування під ключ
Ми пропонуємо повний цикл:
- Аналіз вашого парку пристроїв за даними аналітики
- Конфігурація матриці з 3–5 пристроїв
- Написання Robo Script для авторизації (якщо потрібно)
- Інтеграція в CI (GitHub Actions, GitLab CI, Bitrise)
- Навчання команди роботі з результатами
- Гарантія коректної роботи протягом 5 днів після здачі
Досвід наших інженерів — 40+ проєктів з Firebase Test Lab. Зв'яжіться з нами для оцінки вашого проєкту — ми підберемо оптимальну конфігурацію.
Строки
2–3 дні — налаштування Firebase Test Lab, конфігурація матриці пристроїв, інтеграція в CI, налаштування Robo Script для авторизації. Плюс час на перший аналіз результатів та усунення пристроє-специфічних проблем. Вартість розраховується індивідуально.
Як Firebase Test Lab економить час на регресіях?
Robo-тести без жодного рядка коду знаходять креші та ANR на реальних пристроях швидше, ніж ручне тестування. За нашими даними, це економить до 40% часу QA-циклу. У поєднанні з Instrumentation-тестами ви отримуєте повне покриття за лічені години.







