Firebase Test Lab: автотести без коду на реальних пристроях
У світі Android застосунок часто по-різному поводиться на різних пристроях. Емулятор не вирішує проблему повністю: це все ще не справжній пристрій, а оболонки сторонніх виробників (MIUI, One UI, ColorOS та інші) впливають на поведінку застосунку. Тестових пристроїв на всі випадки життя в офісі не напасешся, а їхати з віддаленої роботи заради перевірки однієї фічі на конкретній моделі телефону не завжди можливо.
В ідеалі хочеться один раз записати тест-кейс – просто пройшовши його на своєму телефоні – і потім запускати його віддалено одразу на кількох пристроях, не торкаючись коду. Саме для цього існує Firebase Test Lab.
Що таке Firebase Test Lab?
Firebase Test Lab – хмарна інфраструктура для тестування мобільних застосунків на реальних і віртуальних пристроях, розміщених у дата-центрі Google. Сервіс дозволяє перевірити, як застосунок поводитиметься в руках реального користувача, не купуючи й не обслуговуючи парк пристроїв самостійно.
Основні можливості
Test Lab закриває різні сценарії тестування – від швидкої автоматичної перевірки без жодного рядка коду до повноцінних regression-тестів і live-налагодження на реальному пристрої. Розберемо кожен режим окремо.
Robo Test
Ви завантажуєте APK/AAB-файл і обираєте пристрій. «Робот» сам досліджує застосунок: натискає на всі доступні елементи інтерфейсу, вводить значення в поля, переходить між екранами – і надсилає детальний звіт про те, що сталося.
Robo Script
Якщо потрібно провести робота через конкретний сценарій – наприклад, авторизацію чи оформлення замовлення – сценарій записується через Android Studio і підключається до Robo Test. Робот спочатку проходить за записаними кроками, а потім продовжує досліджувати застосунок самостійно.
Instrumentation-тести
Якщо в проєкті вже є тести на Espresso чи UI Automator, їх можна запускати в Test Lab на реальному парку пристроїв – це повноцінне автоматизоване тестування з конкретними assert-перевірками, а не випадкове дослідження інтерфейсу.
Game Loop-тести
Окремий тип тестів для ігор: замість стандартного UI сервіс використовує спеціальний «ігровий цикл» застосунку, який емулює проходження рівня без участі людини – корисно для Unity-проєктів.
Підтримка iOS
Test Lab підтримує й iOS-застосунки: Robo Test, Robo Script і XCTest доступні не лише для Android. Robo для iOS поки в статусі beta – поведінка може змінюватися.
Android Device Streaming
Потоковий доступ до реальних пристроїв Google в реальному часі прямо з Android Studio. На відміну від Robo Test і Robo Script, де тест виконується автоматично й асинхронно, тут можна вручну, наживо взаємодіяти з фізичним пристроєм для налагодження – корисно, коли потрібно швидко перевірити баг на конкретній моделі, не чекаючи звіту.
Лайфхак: якщо не знаєте, з чого почати, – запустіть Robo Test без скрипту на найпопулярнішій у вашої аудиторії моделі пристрою. Це займе п'ять хвилин і часто одразу розкриває баги, яких розробник не бачив на своєму девайсі.
Ліміти й тарифи
Важливо: у безкоштовному тарифі ліміт рахується не кількістю тестів на день, а часом виконання тестів. Раніше в мережі часто вказували фіксовані «5 тестів на фізичних і 10 на віртуальних пристроях на день» – зараз актуальна модель інша.
Актуальні умови станом на середину 2026 року:
| Тариф | Фізичні пристрої | Віртуальні пристрої |
| Spark (безкоштовний) | Обмежена добова кількість тестових прогонів | Обмежена добова кількість тестових прогонів |
| Blaze (за фактом використання), безкоштовний ліміт на добу | 30 хвилин тестового часу на день без оплати | 60 хвилин тестового часу на день без оплати |
Ліміти спільні для всіх типів тестів (Robo, instrumentation, Game Loop) і рахуються на рівні проєкту. Максимальна тривалість одного прогону на фізичному пристрої також обмежена (у середньому до 45 хвилин). Google періодично переглядає ці цифри, тому перед плануванням тестування їх варто звіряти в документації.
Офіційне джерело: firebase.google.com/docs/test-lab/usage-quotas-pricing
Що отримаємо на виході?
Тестування може зайняти від кількох хвилин до півгодини – залежно від кількості UI-елементів і довжини флоу (тривалість можна обмежити перед запуском). Після завершення у звіті будуть:
- скриншоти та відео проходження – куди «робот» натискав, де «ходив»;
- список помилок з місцем появи, stack trace, файлом і рядком коду – можна одразу заводити баг на розробника;
- логи (logcat), які можна завантажити окремо.
Наприклад, якщо робот наштовхнувся на краш під час відкриття картки товару, у звіті буде видно точний екран, скриншот у момент краша і стек викликів – зазвичай цього достатньо, щоб розробник відтворив баг без зайвих запитань.
Як записати Robo Script в Android Studio?
Щоб «показати» роботу, як пройти авторизацію, або записати конкретний тест-кейс, використовуємо Android Studio. Якщо раніше не працювали з нею – ось інструкція з встановлення:
developer.android.com/studio/install
У проєкті вже має бути підключений Firebase. Якщо ні – процес детально описаний тут:
firebase.google.com/docs/android/setup
Порядок дій:
- Tools → Firebase → Test Lab → «Record Robo Script and Use it to Guide Robo Test» → «Record Robo script».
- Обираємо пристрій для запису – застосунок запускається на ньому.
- Проходимо потрібний сценарій (наприклад, введення логіна й пароля), натискаємо ОК і зберігаємо файл сценарію у форматі JSON.
- Збираємо білд застосунку: Build → Build Bundle(s)/APK(s) → Build APK(s).
- У консолі Firebase: Test Lab → Run Test → Robo → завантажуємо APK і файл сценарію, обираємо пристрої та ліміт часу, тиснемо Start.
Зверніть увагу: Robo Script не записує дії за межами застосунку, що тестується – наприклад, вхід через Facebook, Google чи інші зовнішні сервіси авторизації в сценарій не потрапить. Такі переходи потрібно обходити окремо (наприклад, тестовим акаунтом з прямим введенням логіна й пароля в самому застосунку).
Якщо сценарій не потрібен і достатньо, щоб Robo пройшовся застосунком самостійно, – з усього списку вище потрібні лише збірка APK і завантаження в консоль. У цьому разі робот піде туди, куди зможе дістатися сам: може не знайти кастомні елементи інтерфейсу, а анімація іноді «збиває» його зі шляху. Такий прогін зручно використовувати як швидкий smoke-тест, а не як заміну повноцінному сценарію.
Presets: значення для полів і дії з кнопками
У консолі перед запуском тесту можна задати значення для конкретних полів вводу або вказати, які кнопки натискати, а які – ігнорувати, за їхнім id. Без базових знань Android-розробки знайти потрібний id у великому проєкті може бути непросто – простіше скористатися записом Robo Script або попросити розробника підказати id елемента. Нюанс: для кастомних UI-елементів потрібен id не layout-контейнера екрана, а стандартного елемента (EditText тощо), схованого всередині кастомного layout.
Якщо id відомий, на екрані вибору пристрою заходимо в Additional options і вказуємо:
- Test account credentials – для даних авторизації;
- Robo directives – для будь-яких інших дій з UI-елементами.
У полі resource name вводимо id елемента, а поруч – значення, тип дії «натиснути» чи «ігнорувати».
Автоматизація: gcloud CLI та CI/CD
Ручний запуск через консоль зручний для разової перевірки, але для регулярного тестування його варто вбудувати в процеси команди. Розберемо два способи це зробити.
Запуск через gcloud CLI
Test Lab підтримує запуск з командного рядка через gcloud CLI. Приклад команди для Robo-тесту зі сценарієм:
gcloud firebase test android run --app=app.apk --robo-script=login-script.json --device model=redfin,version=30
Інтеграція в CI/CD
Ту саму команду можна викликати з пайплайну (GitHub Actions, GitLab CI, Bitrise, Jenkins), щоб Robo Test чи instrumentation-тести запускалися автоматично під час кожного пушу в гілку релізу або перед публікацією збірки. Це допомагає ловити регресії до того, як білд потрапить до QA чи замовника – але варто пам'ятати про денні ліміти безкоштовного тарифу.
Лайфхак: не ганяйте в CI повноцінний Robo Test без обмеження часу – задайте --timeout на 3-5 хвилин. Так ви вкладетеся в безкоштовний ліміт навіть за частих пушів і не чекатимете довгого прогону на кожен коміт.
Підсумки
Описані сценарії – Robo Test, Robo Script, presets, а також gcloud CLI та інтеграція в CI/CD – покривають більшість практичних задач: від швидкої перевірки «нічого не зламалося» до регрес-тестування на різних пристроях без потреби тримати їх у себе в офісі. За актуальними лімітами й деталями завжди варто звірятися з офіційною документацією Google – умови періодично змінюються.
Test Lab закриває автотести, але не замінює ручне QA повністю – повний перелік перевірок для релізу дивіться в нашому чек-листі тестування мобільного застосунку.
А якщо потрібна допомога не лише з тестуванням, а й з самою розробкою Android-застосунку – Brander робить це під ключ.




