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 делает это под ключ.




