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 года. Мы проконсультируем вас и предложим наилучшее решение.
Читайте также