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 елементи, кликва върху тях, попълва формуляри с тестови данни, навигира между екраните и записва всякакви повреди (срив, ANR, изключения). Робот тестовете откриват до 80% от критичните грешки без нито един ред тестов код, което ги прави идеален инструмент за оценка на основната стабилност на приложението в ранните етапи на разработка.
Инструменталните тестове са тестове, написани от разработчика с помощта на рамките Espresso (Android) или XCTest (iOS). Test Lab стартира APK с тестове на целевото устройство и събира резултатите от изпълнението. Тестовете могат да бъдат прости (проверка на показване на елементи) или сложни (end-to-end сценарии: авторизация, добавяне в кошница, оформяне на поръчка). Firebase Test Lab поддържа Android Test Orchestrator за изолиране на тестовете един от друг, което предотвратява влиянието на един неуспешен тест върху останалите.
Тестовете на екранни снимки се използват за откриване на визуални регресии в приложението. Game loop е специален вид тест, който изпраща на приложението списък от сценарии чрез intent, а приложението трябва да изпълни тези сценарии и да направи екранни снимки на ключовите екрани. Test Lab събира екранни снимки от всички устройства в матрицата и позволява сравняването им с референтни снимки за откриване на разлики. Този вид тест е особено популярен в игровите приложения за проверка на рендирането на различни GPU.
| Вид тест | Код | Какво проверява | Кога да се използва |
|---|---|---|---|
| Робот тест | Не е необходим | Срив, 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>
Робот тестовете не заместват ръчното тестване и написаните инструментални тестове за сложни сценарии. Роботът не може да проверява бизнес логиката: той кликва върху всички елементи последователно, но не знае дали резултатът е правилен. Също така, роботът не може да взаимодейства с персонализирани изгледи, които не наследяват стандартния ViewGroup, и не обработва WebView. За тези случаи е необходимо да се използват инструментални тестове или Game loop.
Интеграцията на Firebase Test Lab с CI/CD системи позволява автоматично стартиране на тестове при всеки push в хранилището. 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 г. Ще ви консултираме и ще предложим най-доброто решение.
Прочетете също