Firebase Test Lab — какво е, видове тестове на устройства и автоматизация

Автор: IT Sectr Публикувано: 2026-04-29 Време за четене: 9 мин

Firebase Test Lab е облачна услуга на Google за автоматизирано тестване на мобилни приложения на реални устройства, разположени в центровете за данни на Google. Test Lab позволява стартиране на инструментални тестове, тестове на екранни снимки и робот тестове на стотици конфигурации на устройства с различни версии на Android и iOS, без необходимост от собствена ферма от устройства. Според Firebase Documentation, 2026, робот тестването на Firebase автоматично преминава през всички екрани на приложението, откривайки сривове, ANR и проблеми с UI, без да се напише нито един ред тестов код. Услугата поддържа интеграция с CI/CD системи и предоставя подробни отчети с видео и логове.

Основни неща

  • Firebase Test Lab — облачна услуга за тестване на мобилни приложения на реални устройства в центровете за данни на Google с плащане само за използваното време.
  • Робот тестове — автоматично изследване на приложението: Firebase Crawler преминава през всички екрани, кликва бутони и попълва формуляри, записвайки грешки без писане на код.
  • Инструментални тестове — стартиране на Espresso, XCTest и UI Automator тестове на реални устройства с паралелно изпълнение на различни конфигурации.
  • Матрица от устройства — тестовете се изпълняват едновременно на избран набор от устройства с различни версии на ОС, ориентации на екрана и езици.
  • Отчети — след тестване са налични логове, екранни снимки, видеа на тестовете и обобщение с откритите грешки и производителност.

Какво е Firebase Test Lab

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 поддържа няколко вида тестове, всеки от които решава своя задача в цикъла на разработка: робот тестове за бърза проверка на стабилността, инструментални тестове за функционална верификация и тестове на екранни снимки за откриване на визуални регресии. Изборът на вид тест зависи от етапа на разработка и целите на конкретното стартиране.

Робот тестове (Robo tests)

Робот тестовете са уникална възможност на Firebase Test Lab, която не изисква писане на тестов код. Firebase Crawler автоматично изследва приложението: намира всички интерактивни UI елементи, кликва върху тях, попълва формуляри с тестови данни, навигира между екраните и записва всякакви повреди (срив, ANR, изключения). Робот тестовете откриват до 80% от критичните грешки без нито един ред тестов код, което ги прави идеален инструмент за оценка на основната стабилност на приложението в ранните етапи на разработка.

Инструментални тестове (Instrumentation tests)

Инструменталните тестове са тестове, написани от разработчика с помощта на рамките Espresso (Android) или XCTest (iOS). Test Lab стартира APK с тестове на целевото устройство и събира резултатите от изпълнението. Тестовете могат да бъдат прости (проверка на показване на елементи) или сложни (end-to-end сценарии: авторизация, добавяне в кошница, оформяне на поръчка). Firebase Test Lab поддържа Android Test Orchestrator за изолиране на тестовете един от друг, което предотвратява влиянието на един неуспешен тест върху останалите.

Тестове на екранни снимки (Game loop и екранни снимки)

Тестовете на екранни снимки се използват за откриване на визуални регресии в приложението. 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), за да ограничите броя на стъпките на робота, или да посочите конкретни елементи, които роботът да натиска приоритетно.

xml
<!-- 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.

Интеграция с CI/CD и Gradle

Интеграцията на Firebase Test Lab с CI/CD системи позволява автоматично стартиране на тестове при всеки push в хранилището. Test Lab поддържа Gradle задачи за Android и Fastlane за двете платформи. Настройването на CI/CD тръба включва изграждане на приложението, качване на APK/IPA в Google Cloud Storage, стартиране на тестове чрез Firebase CLI и получаване на отчети обратно в CI системата за показване на статуса на изграждане.

Настройка чрез Gradle (Android)

Google предоставя плъгина gcloud-test-lab за Gradle, който автоматизира качването и стартирането на тестове. Задачата assembleAndroidTest изгражда APK с тестове, а gcloud задачите го качват в Test Lab и стартират матрицата. Резултатите от тестовете се връщат в Gradle като pass/fail, което позволява интегриране на Test Lab във всяка CI тръба, поддържаща Gradle. За оторизация се използва сервизен акаунт на Firebase с права за Test Lab.

groovy
// 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

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 архив с пълен набор от резултати за всяко стартиране на тестове.

Често задавани въпроси

Колко струва Firebase Test Lab?

Планът Spark включва 10 Robo теста на ден и 5 часа инструментални тестове на месец безплатно. Планът Blaze се таксува на време: ~1 USD на устройство-час за Robo тестове и ~5 USD за инструментални. Точната цена зависи от региона и типа устройство.

Каква е разликата между физическите устройства и емулаторите в Test Lab?

Физическите устройства дават по-точни резултати, включително проблеми със сензори, камера, GPS, Bluetooth и реална производителност. Емулаторите стартират по-бързо и са по-евтини, но не откриват проблеми, свързани с хардуерни характеристики. Google препоръчва физически устройства за тестване преди пускане.

Как да настроим оторизация за робот тест?

Създайте XML файл robo_directives.xml с полета за въвеждане (потребителско име, парола) и бутони за натискане. Качете файла заедно с APK при стартиране на теста чрез Firebase Console или CLI. Роботът ще изпълни посочените действия преди началото на изследването.

Може ли да се стартират тестове на iOS във Firebase Test Lab?

Да, Firebase Test Lab поддържа iOS от 2024 г. Налични са Robo тестове (автоматично изследване) и XCTest (инструментални тестове) на реални iPhone и iPad устройства. За качване се изисква IPA файл с тестова цел.

Как да интегрираме Test Lab с GitHub Actions?

Използвайте Firebase CLI в GitHub Actions: настройте удостоверяване чрез Service Account JSON, инсталирайте gcloud SDK, изпълнете командата firebase test android run с посочване на APK и конфигурации. Резултатите от тестовете са достъпни чрез Firebase Console или gcloud CLI.

Обобщение

  • Firebase Test Lab — облачна услуга на Google за тестване на мобилни приложения на реални устройства с плащане според използването.
  • Три вида тестове — робот тестове (без код, автоматично изследване), инструментални (Espresso, XCTest) и тестове на екранни снимки (Game loop) за различни задачи за проверка.
  • Матрица от устройства позволява паралелно стартиране на тестове на набор от конфигурации (модел + версия на ОС + ориентация), намалявайки общото време за проверка.
  • Робот тестовете (Firebase Crawler) автоматично изследват приложението, откривайки до 80% от критичните грешки без писане на нито един ред тестов код.
  • Интеграция с CI/CD — Test Lab поддържа Gradle, Fastlane и Firebase CLI за автоматично стартиране на тестове при всеки push в хранилището.
  • Подробни отчети включват видео на изпълнението, екранни снимки, логове на устройството и stack trace за всеки неуспешен тест на всяка конфигурация.
  • Безплатен лимит — 10 Robo теста на ден в плана Spark, достатъчно за основна проверка на стабилността на приложението в ежедневния цикъл на разработка.

Ще разработим мобилно приложение под ключ

IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.

Обсъдете проекта

Прочетете също