Firebase Test Lab je cloudová služba Google pro automatizované testování mobilních aplikací na skutečných zařízeních umístěných v datových centrech Google. Test Lab umožňuje spouštět instrumentální testy, testy snímků obrazovky a robot testy na stovkách konfigurací zařízení s různými verzemi Android a iOS, aniž byste museli vlastnit vlastní farmu zařízení. Podle Firebase Documentation, 2026 robot testování Firebase automaticky prochází všechny obrazovky aplikace a odhaluje crash, ANR a problémy s UI bez psaní jediného řádku testovacího kódu. Služba podporuje integraci se systémy CI/CD a poskytuje podrobné zprávy s videi a protokoly.
Hlavní body
Firebase Test Lab je cloudová infrastruktura Google pro automatizované testování mobilních aplikací na fyzických zařízeních umístěných v globálních datových centrech Google. Na rozdíl od emulátorů na lokálním počítači spouští Test Lab testy na skutečných zařízeních Android a iOS s různými verzemi operačních systémů, rozlišeními obrazovky, množstvím RAM a úrovněmi API. Služba automaticky zpracovává výsledky testů a poskytuje videa z průběhu, snímky obrazovky kroků a podrobné protokoly.
Vlastnictví vlastní farmy zařízení vyžaduje značné kapitálové investice na nákup a údržbu fyzických zařízení. Firebase Test Lab poskytuje přístup k tisícům zařízení na principu platby za použití (pay-per-use) s bezplatným limitem v plánu Spark. Test Lab automaticky aktualizuje park zařízení na nejnovější modely, včetně nejnovějších vlajkových lodí Google Pixel, Samsung Galaxy, Xiaomi a iPhone. Testy se provádějí paralelně na několika zařízeních, což zkracuje celkovou dobu ověření aplikace.
Pro Android Test Lab podporuje testování na zařízeních s úrovní API od 21 do nejnovější stabilní verze Androidu. Podpora pro iOS zahrnuje skutečná zařízení iPhone a iPad s verzemi iOS od 15 do nejnovější stabilní. Pro iOS je k dispozici robot testování a XCTest. Každý test lze provést na fyzických zařízeních nebo emulátorech — pro dosažení maximálně přesných výsledků Google doporučuje používat fyzická zařízení, protože odhalují problémy se senzory, kamerou a síťovými rozhraními.
Firebase Test Lab podporuje několik typů testů, z nichž každý řeší svůj vlastní úkol ve vývojovém cyklu: robot testy pro rychlou kontrolu stability, instrumentální testy pro funkční ověření a testy snímků obrazovky pro detekci vizuálních regresí. Výběr typu testu závisí na fázi vývoje a cílech konkrétního spuštění.
Robot testy jsou jedinečnou schopností Firebase Test Lab, která nevyžaduje psaní testovacího kódu. Firebase Crawler automaticky prozkoumává aplikaci: najde všechny interaktivní prvky UI, kliká na ně, vyplňuje formuláře testovacími daty, přechází mezi obrazovkami a zaznamenává jakékoli selhání (crash, ANR, výjimky). Robot testy odhalují až 80% kritických chyb bez jediného řádku testovacího kódu, což z nich dělá ideální nástroj pro posouzení základní stability aplikace v raných fázích vývoje.
Instrumentální testy jsou testy napsané vývojářem pomocí frameworků Espresso (Android) nebo XCTest (iOS). Test Lab spouští APK s testy na cílovém zařízení a shromažďuje výsledky provádění. Testy mohou být jednoduché (kontrola zobrazení prvků) nebo složité (scénáře end-to-end: autorizace, přidání do košíku, dokončení objednávky). Firebase Test Lab podporuje Android Test Orchestrator pro izolaci testů od sebe navzájem, což zabraňuje vlivu jednoho neúspěšného testu na ostatní.
Testy snímků obrazovky se používají k detekci vizuálních regresí v aplikaci. Game loop je speciální typ testu, který aplikaci předá seznam scénářů prostřednictvím intent a aplikace musí tyto scénáře provést a pořídit snímky klíčových obrazovek. Test Lab shromažďuje snímky ze všech zařízení v matici a umožňuje jejich porovnání s referenčními snímky pro detekci rozdílů. Tento typ testu je obzvláště populární v herních aplikacích pro kontrolu vykreslování na různých GPU.
| Typ testu | Kód | Co kontroluje | Kdy použít |
|---|---|---|---|
| Robot test | Není vyžadován | Crash, ANR, výjimky | Rychlá kontrola stability |
| Instrumentální | Espresso / XCTest | Funkčnost scénářů | Regresní testování |
| Snímek obrazovky | Game loop | Vizuální regrese | Kontrola UI na různých zařízeních |
Testovací matice ve Firebase Test Lab je sada konfigurací zařízení, na kterých se provádí vybraný test. Každá konfigurace zahrnuje model zařízení, verzi OS, orientaci obrazovky (na výšku/na šířku) a regionální nastavení (místní nastavení, jazyk). Test se spouští paralelně na všech vybraných konfiguracích, což výrazně zkracuje celkovou dobu provádění ve srovnání s postupným spouštěním na každém zařízení.
Google doporučuje zahrnout do matice zařízení s různými charakteristikami: vlajkový model (Google Pixel, Samsung Galaxy S), levné zařízení (Moto G, Xiaomi Redmi), zařízení s minimální verzí API podporovanou aplikací. Optimální matice zahrnuje 5–10 konfigurací pokrývajících všechny verze OS, které aplikace podporuje. Pro iOS se vybírají iPhone a iPad různých generací (např. iPhone SE, iPhone 14, iPad Air) s různými verzemi iOS.
Test Lab automaticky distribuuje testy na vybraná zařízení a provádí každý test na každé konfiguraci. Doba provádění celé matice se rovná době provádění nejpomalejšího testu na nejpomalejším zařízení — všechny ostatní se provádějí paralelně. Pokud jeden test selže na všech zařízeních, Test Lab zastaví jeho provádění na zbývajících konfiguracích pro úsporu zdrojů. Výsledky jsou seskupeny podle testu a zařízení, což umožňuje rychlé určení, zda je chyba specifická pro určitou konfiguraci.
Robot testování je vlajkovou schopností Firebase Test Lab, která umožňuje automaticky prozkoumávat aplikaci bez psaní jediného testu. Firebase Crawler (robot) analyzuje hierarchii UI aplikace, najde všechny interaktivní prvky (tlačítka, textová pole, seznamy, menu) a interaguje s nimi a simuluje chování skutečného uživatele. Robot testování je zvláště účinné v raných fázích vývoje, kdy testy ještě nejsou napsány, nebo pro kontrolu staršího kódu.
Pro spuštění robot testu stačí nahrát APK nebo IPA do Firebase Console a vybrat možnost Robo test. Robot může automaticky přihlásit do aplikace pomocí předem nakonfigurovaných přihlašovacích údajů (jméno/heslo) pro přístup k obrazovkám skrytým za autorizací. Lze také nastavit hloubku průzkumu (max depth) pro omezení počtu kroků robota nebo určit konkrétní prvky, na které má robot klikat prioritně.
<!-- res/xml/robo_directives.xml -->
<!-- Robot vyplní pole pro přihlášení a heslo -->
<?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>
Robot testy nenahrazují ruční testování a napsané instrumentální testy pro složité scénáře. Robot neumí kontrolovat obchodní logiku: kliká postupně na všechny prvky, ale neví, zda je výsledek správný. Robot také nemůže interagovat s vlastními zobrazeními, která nedědí ze standardní ViewGroup, a nezpracovává WebView. V těchto případech je nutné použít instrumentální testy nebo Game loop.
Integrace Firebase Test Lab se systémy CI/CD umožňuje automatické spouštění testů při každém pushi do repozitáře. Test Lab podporuje úlohy Gradle pro Android a Fastlane pro obě platformy. Nastavení CI/CD pipeline zahrnuje sestavení aplikace, nahrání APK/IPA do Google Cloud Storage, spuštění testů přes Firebase CLI a příjem zpráv zpět do CI systému pro zobrazení stavu sestavení.
Google poskytuje plugin gcloud-test-lab pro Gradle, který automatizuje nahrávání a spouštění testů. Úloha assembleAndroidTest sestaví APK s testy a úlohy gcloud jej nahrají do Test Lab a spustí matici. Výsledky testů se vracejí do Gradle jako pass/fail, což umožňuje integraci Test Lab do jakékoli CI pipeline podporující Gradle. Pro autorizaci se používá servisní účet Firebase s oprávněním k 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 poskytuje plugin firebase_test_lab pro integraci s iOS a Android testy. Fastlane lane provádí sestavení, spouští testy a zpracovává výsledky. Pro iOS XCTest vyžaduje Test Lab soubor xctestrun, který se automaticky vytvoří při sestavení testovacího cíle. Fastlane také umí nahrát výsledky testů do Slacku nebo jiných messengerů pro informování týmu o stavu testování po každém spuštění.
Po dokončení testů Firebase Test Lab poskytuje komplexní zprávu dostupnou ve Firebase Console a prostřednictvím gcloud CLI. Zpráva obsahuje rychlý souhrn (počet úspěšných, neúspěšných a přeskočených testů), podrobné informace o každém testu na každém zařízení, video z průběhu, snímky klíčových kroků a protokoly zařízení (logcat pro Android, system log pro iOS). Pro neúspěšné testy je k dispozici stack trace s uvedením přesného místa chyby.
Pro robot test se zpráva liší od instrumentálního: namísto pass/fail podle testovacích případů zpráva ukazuje statistiky průzkumu. Klíčové metriky — počet nalezených a navštívených obrazovek, počet interakcí robota (kliknutí, přejetí, zadání textu), zjištěné crash a ANR a projitá cesta aplikací. Video z průběhu robota umožňuje vizuálně posoudit, které obrazovky byly testovány a které zůstaly nepokryté.
Výsledky testů jsou uloženy v Google Cloud Storage v bucketu připojeném k projektu. Data jsou k dispozici pro export a integraci s externími analytickými systémy. Pro dlouhodobé ukládání a porovnávání výsledků mezi spuštěními se doporučuje nastavit export BigQuery nebo použít Firebase Test Lab API pro programové získávání výsledků. Google poskytuje možnost stáhnout ZIP archiv s kompletní sadou výsledků pro každé spuštění testů.
Často kladené otázky
Plán Spark zahrnuje 10 Robo testů denně a 5 hodin instrumentálních testů měsíčně zdarma. Plán Blaze je zpoplatněn podle času: ~1 USD za zařízení-hodinu pro Robo testy a ~5 USD pro instrumentální testy. Přesná cena závisí na regionu a typu zařízení.
Fyzická zařízení poskytují přesnější výsledky, včetně problémů se senzory, kamerou, GPS, Bluetooth a skutečným výkonem. Emulátory se spouštějí rychleji a jsou levnější, ale neodhalují problémy související s hardwarovými vlastnostmi. Google doporučuje fyzická zařízení pro testování před vydáním.
Vytvořte XML soubor robo_directives.xml s vstupními poli (jméno, heslo) a tlačítky pro kliknutí. Nahrajte soubor spolu s APK při spouštění testu přes Firebase Console nebo CLI. Robot provede zadané akce před zahájením průzkumu.
Ano, Firebase Test Lab podporuje iOS od roku 2024. K dispozici jsou Robo testy (automatický průzkum) a XCTest (instrumentální testy) na skutečných zařízeních iPhone a iPad. Pro nahrání je vyžadován IPA soubor s testovacím cílem.
Použijte Firebase CLI v GitHub Actions: nastavte autentizaci přes Service Account JSON, nainstalujte gcloud SDK, spusťte příkaz firebase test android run s uvedením APK a konfigurací. Výsledky testů jsou k dispozici přes Firebase Console nebo gcloud CLI.
Shrnutí
Vyvineme mobilní aplikaci na klíč
IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.
Přečtěte si také