Firebase Test Lab — це хмарний сервіс Google для автоматизованого тестування мобільних застосунків на реальних пристроях, розміщених у дата-центрах Google. Test Lab дозволяє запускати інструментальні тести, скріншот-тести та робот-тести на сотнях конфігурацій пристроїв з різними версіями Android та iOS без необхідності утримувати власну ферму пристроїв. За даними Firebase Documentation, 2026, робот-тестування Firebase автоматично проходить по всіх екранах застосунку, виявляючи краші, ANR та проблеми з UI без написання жодного рядка тестового коду. Сервіс підтримує інтеграцію з CI/CD системами та надає детальні звіти з відео та логами.
Головне
Firebase Test Lab — це хмарна інфраструктура Google для автоматизованого тестування мобільних застосунків на фізичних пристроях, розташованих у глобальних дата-центрах Google. На відміну від емуляторів на локальній машині, Test Lab запускає тести на реальних Android-пристроях та iOS-девайсах з різними версіями операційних систем, роздільними здатностями екрану, об'ємом RAM та рівнями API. Сервіс автоматично обробляє результати тестів, надаючи відео проходження, скріншоти кроків та докладні логи.
Утримання власної ферми пристроїв потребує значних капітальних витрат на придбання та обслуговування фізичних девайсів. Firebase Test Lab надає доступ до тисяч пристроїв на умовах оплати за фактом використання (pay-per-use) з безкоштовним лімітом на Spark-плані. Test Lab автоматично оновлює парк пристроїв до актуальних моделей, включаючи новітні флагмани Google Pixel, Samsung Galaxy, Xiaomi та iPhone. Тести виконуються паралельно на кількох пристроях, що скорочує загальний час верифікації застосунку.
Для Android Test Lab підтримує тестування на пристроях з API рівня від 21 до останньої стабільної версії Android. Підтримка iOS включає реальні пристрої iPhone та iPad з версіями iOS від 15 до останньої стабільної. Для iOS доступне робот-тестування та XCTest. Кожен тест може бути виконаний на фізичних пристроях або емуляторах — для отримання максимально точних результатів Google рекомендує використовувати фізичні девайси, оскільки вони виявляють проблеми з сенсорами, камерою та мережевими інтерфейсами.
Firebase Test Lab підтримує кілька типів тестів, кожен з яких вирішує своє завдання в циклі розробки: робот-тести для швидкої перевірки стабільності, інструментальні тести для функціональної верифікації та скріншот-тести для виявлення візуальних регресій. Вибір типу тесту залежить від стадії розробки та цілей конкретного запуску.
Робот-тести — це унікальна можливість Firebase Test Lab, яка не потребує написання тестового коду. Firebase Crawler автоматично досліджує застосунок: знаходить всі інтерактивні елементи UI, натискає на них, заповнює форми тестовими даними, переходить між екранами та фіксує будь-які збої (crash, ANR, винятки). Робот-тести виявляють до 80% критичних багів без жодного рядка тестового коду, що робить їх ідеальним інструментом для оцінки базової стабільності застосунку на ранніх етапах розробки.
Інструментальні тести — це тести, написані розробником з використанням фреймворків Espresso (Android) або XCTest (iOS). Test Lab запускає APK з тестами на цільовому пристрої та збирає результати виконання. Тести можуть бути простими (перевірка відображення елементів) або складними (end-to-end сценарії: авторизація, додавання в кошик, оформлення замовлення). Firebase Test Lab підтримує Android Test Orchestrator для ізоляції тестів один від одного, що запобігає впливу одного тесту, що впав, на інші.
Скріншот-тести використовуються для виявлення візуальних регресій у застосунку. Game loop — спеціальний тип тесту, який передає застосунку список сценаріїв через intent, а застосунок має виконати ці сценарії та зробити скріншоти ключових екранів. Test Lab збирає скріншоти з усіх пристроїв матриці та дозволяє порівняти їх з еталонними для виявлення відмінностей. Цей тип тестів особливо популярний в ігрових застосунках для перевірки рендерингу на різних GPU.
| Тип тесту | Код | Що перевіряє | Коли використовувати |
|---|---|---|---|
| Робот-тест | Не потрібен | Crash, ANR, винятки | Швидка перевірка стабільності |
| Інструментальний | Espresso / XCTest | Функціональність сценаріїв | Регресійне тестування |
| Скріншот-тест | Game loop | Візуальні регресії | Перевірка UI на різних пристроях |
Матриця тестування в Firebase Test Lab являє собою набір конфігурацій пристроїв, на яких виконується вибраний тест. Кожна конфігурація включає модель пристрою, версію ОС, орієнтацію екрану (портретна/ландшафтна) та регіональні налаштування (локаль, мова). Тест запускається паралельно на всіх вибраних конфігураціях, що значно скорочує загальний час виконання порівняно з послідовним запуском на кожному пристрої.
Google рекомендує включати в матрицю пристрої з різними характеристиками: флагманська модель (Google Pixel, Samsung Galaxy S), бюджетний пристрій (Moto G, Xiaomi Redmi), пристрій з мінімальною версією API, що підтримується застосунком. Оптимальна матриця включає 5–10 конфігурацій, що покривають всі версії ОС, які підтримує застосунок. Для iOS вибираються iPhone та iPad різних поколінь (наприклад, iPhone SE, iPhone 14, iPad Air) з різними версіями iOS.
Test Lab автоматично розподіляє тести по вибраних пристроях, виконуючи кожен тест на кожній конфігурації. Час виконання всієї матриці дорівнює часу виконання найповільнішого тесту на найповільнішому пристрої — всі інші виконуються паралельно. Якщо один тест падає на всіх пристроях, Test Lab зупиняє його виконання на інших конфігураціях для економії ресурсів. Результати групуються за тестом та за пристроєм, що дозволяє швидко визначити, чи специфічна помилка для конкретної конфігурації.
Робот-тестування — це флагманська можливість Firebase Test Lab, яка дозволяє автоматично досліджувати застосунок без написання жодного тесту. Firebase Crawler (робот) аналізує UI-ієрархію застосунку, знаходить всі інтерактивні елементи (кнопки, текстові поля, списки, меню) та взаємодіє з ними, імітуючи поведінку реального користувача. Робот-тестування особливо ефективне на ранніх етапах розробки, коли тести ще не написані, або для перевірки легасі-коду.
Для запуску робот-тесту достатньо завантажити APK або IPA у Firebase Console та вибрати опцію Robo test. Робот може автоматично входити в застосунок через попередньо налаштовані облікові дані (логін/пароль) для доступу до екранів, прихованих за авторизацією. Можна також задати глибину дослідження (max depth), щоб обмежити кількість кроків робота, або вказати конкретні елементи, на які робот має натискати пріоритетно.
<!-- res/xml/robo_directives.xml -->
<!-- Робот заповнить поля логіну та пароля -->
<?xml version="1.0" encoding="utf-8"?>
<robo-directives
xmlns:android="http://schemas.android.com/apk/res/android">
<directive
android:resourceName="@id/et_email"
android:inputValue="test@example.com" />
<directive
android:resourceName="@id/et_password"
android:inputValue="password123" />
<directive
android:resourceName="@id/btn_login"
android:clickAction="CLICK" />
</robo-directives>
Робот-тести не замінюють ручного тестування та написаних інструментальних тестів для складних сценаріїв. Робот не вміє перевіряти бізнес-логіку: він натискає на всі елементи підряд, але не знає, чи правильний результат вийшов. Також робот не може взаємодіяти з кастомними view, які не успадковуються від стандартних ViewGroup, і не обробляє WebView. Для цих випадків необхідно використовувати інструментальні тести або Game loop.
Інтеграція Firebase Test Lab з CI/CD системами дозволяє автоматично запускати тести при кожному пушеві в репозиторій. Test Lab підтримує Gradle-задачі для Android та Fastlane для обох платформ. Налаштування CI/CD пайплайну включає збірку застосунку, завантаження APK/IPA у Google Cloud Storage, запуск тестів через Firebase CLI та отримання звітів назад у CI-систему для відображення статусу збірки.
Google надає плагін gcloud-test-lab для Gradle, який автоматизує завантаження та запуск тестів. Задача assembleAndroidTest збирає APK з тестами, а gcloud-задачі завантажують його в Test Lab та запускають матрицю. Результати тестів повертаються в Gradle як pass/fail, що дозволяє інтегрувати Test Lab в будь-який CI-пайплайн, що підтримує Gradle. Для авторизації використовується сервісний акаунт Firebase з правами на Test Lab.
// build.gradle (module: app)
task runTestLab() {
exec {
commandLine "gcloud", "firebase", "test", "android", "run",
"--type", "robo",
"--app", "build/outputs/apk/debug/app-debug.apk",
"--device", "model=Pixel7,version=33",
"--device", "model=GalaxyS23,version=34",
"--device", "model=RedmiNote12,version=31",
"--timeout", "15m",
"--results-dir", "firebase/test-lab/robo"
}
}
Fastlane надає плагін firebase_test_lab для інтеграції з iOS та Android тестами. Fastlane lane виконує збірку, запускає тести та обробляє результати. Для iOS XCTest Test Lab потребує xctestrun-файл, який створюється автоматично при збірці тестового таргету. Fastlane також вміє завантажувати результати тестів у Slack або інші месенджери для сповіщення команди про статус тестування після кожного запуску.
Після завершення тестів Firebase Test Lab надає комплексний звіт, доступний у Firebase Console та через gcloud CLI. Звіт включає коротку зведенку (кількість пройдених, тих що впали та пропущених тестів), детальну інформацію по кожному тесту на кожному пристрої, відео проходження, скріншоти ключових кроків та логи пристрою (logcat для Android, system log для iOS). Для тестів що впали доступний stack trace із зазначенням точного місця помилки.
Для робот-тесту звіт відрізняється від інструментального: замість pass/fail за тест-кейсами звіт показує статистику дослідження. Ключові метрики — кількість знайдених та відвіданих екранів, кількість взаємодій робота (кліки, свайпи, введення тексту), виявлені краші та ANR, і пройдений шлях по застосунку. Відео проходження робота дозволяє візуально оцінити, які екрани були протестовані, а які залишилися неохопленими.
Результати тестів зберігаються в Google Cloud Storage у прив'язаному до проекту bucket. Дані доступні для експорту та інтеграції із зовнішніми системами аналітики. Для довгострокового зберігання та порівняння результатів між запусками рекомендується налаштувати BigQuery експорт або використовувати Firebase Test Lab API для програмного отримання результатів. Google надає можливість завантажити ZIP-архів з повним набором результатів для кожного запуску тестів.
Часті запитання
Spark-план включає 10 Robo-тестів на день та 5 годин інструментальних тестів на місяць безкоштовно. Blaze-план тарифікується за часом: ~1 USD за пристрій-годину для Robo-тестів та ~5 USD для інструментальних. Точна вартість залежить від регіону та типу пристрою.
Фізичні пристрої дають більш точні результати, включаючи проблеми з сенсорами, камерою, GPS, Bluetooth та реальною продуктивністю. Емулятори швидше запускаються та дешевші, але не виявляють проблем, пов'язаних з апаратними особливостями. Google рекомендує фізичні пристрої для передрелізного тестування.
Створіть XML-файл robo_directives.xml з полями для введення (логін, пароль) та кнопками для натискання. Завантажте файл разом з APK при запуску тесту через Firebase Console або CLI. Робот виконає вказані дії перед початком дослідження.
Так, Firebase Test Lab підтримує iOS з 2024 року. Доступні Robo-тести (автоматичне дослідження) та XCTest (інструментальні тести) на реальних пристроях iPhone та iPad. Для завантаження потрібен IPA-файл з тестовим таргетом.
Використовуйте Firebase CLI в GitHub Actions: налаштуйте аутентифікацію через Service Account JSON, встановіть gcloud SDK, виконайте команду firebase test android run із зазначенням APK та конфігурацій. Результати тестів доступні через Firebase Console або gcloud CLI.
Підсумки
Ми розробимо мобільний застосунок під ключ
IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.
Читайте також