Firebase Test Lab är en molntjänst från Google för automatiserad testning av mobilapplikationer på riktiga enheter placerade i Googles datacenter. Test Lab gör det möjligt att köra instrumentella tester, skärmbildstester och robot-tester på hundratals enhetskonfigurationer med olika versioner av Android och iOS utan att behöva ha en egen enhetsfarm. Enligt Firebase Documentation, 2026 går Firebase-robot-testning automatiskt igenom alla skärmar i applikationen och identifierar krascher, ANR och UI-problem utan att skriva en enda rad testkod. Tjänsten stöder integrering med CI/CD-system och tillhandahåller detaljerade rapporter med video och loggar.
Huvudpunkter
Firebase Test Lab är Googles molninfrastruktur för automatiserad testning av mobilapplikationer på fysiska enheter belägna i Googles globala datacenter. Till skillnad från emulatorer på en lokal maskin kör Test Lab tester på riktiga Android-enheter och iOS-enheter med olika versioner av operativsystem, skärmupplösningar, RAM-mängder och API-nivåer. Tjänsten bearbetar automatiskt testresultat och tillhandahåller video av exekvering, skärmbilder av steg och detaljerade loggar.
Att äga en egen enhetsfarm kräver betydande kapitalinvesteringar för inköp och underhåll av fysiska enheter. Firebase Test Lab ger tillgång till tusentals enheter på basis av betalning per användning (pay-per-use) med en gratis gräns på Spark-planen. Test Lab uppdaterar automatiskt enhetsparken till de senaste modellerna, inklusive de senaste flaggskeppen Google Pixel, Samsung Galaxy, Xiaomi och iPhone. Tester körs parallellt på flera enheter, vilket minskar den totala verifieringstiden för applikationen.
För Android stöder Test Lab testning på enheter med API-nivå från 21 till den senaste stabila Android-versionen. Stöd för iOS omfattar riktiga iPhone- och iPad-enheter med iOS-versioner från 15 till den senaste stabila. För iOS finns robot-testning och XCTest tillgängliga. Varje test kan köras på fysiska enheter eller emulatorer — för maximalt noggranna resultat rekommenderar Google att använda fysiska enheter eftersom de avslöjar problem med sensorer, kamera och nätverksgränssnitt.
Firebase Test Lab stöder flera testtyper, som var och en löser sin egen uppgift i utvecklingscykeln: robot-tester för snabb stabilitetskontroll, instrumentella tester för funktionell verifiering och skärmbildstester för att upptäcka visuella regressioner. Valet av testtyp beror på utvecklingsstadiet och målen för den specifika körningen.
Robot-tester är en unik funktion i Firebase Test Lab som inte kräver att testkod skrivs. Firebase Crawler utforskar automatiskt applikationen: hittar alla interaktiva UI-element, klickar på dem, fyller i formulär med testdata, navigerar mellan skärmar och registrerar eventuella fel (krasch, ANR, undantag). Robot-tester upptäcker upp till 80% av kritiska buggar utan en enda rad testkod, vilket gör dem till ett idealiskt verktyg för att bedöma grundläggande stabilitet hos en applikation i tidiga utvecklingsstadier.
Instrumentella tester är tester skrivna av utvecklaren med hjälp av ramverken Espresso (Android) eller XCTest (iOS). Test Lab kör APK-filen med tester på målenheten och samlar in exekveringsresultaten. Tester kan vara enkla (kontroll av elementvisning) eller komplexa (end-to-end-scenarier: autentisering, lägga i varukorg, slutföra beställning). Firebase Test Lab stöder Android Test Orchestrator för att isolera tester från varandra, vilket förhindrar att ett misslyckat test påverkar de andra.
Skärmbildstester används för att upptäcka visuella regressioner i applikationen. Game loop är en speciell testtyp som skickar en lista med scenarier till applikationen via intent, och applikationen måste utföra dessa scenarier och ta skärmbilder av viktiga skärmar. Test Lab samlar in skärmbilder från alla enheter i matrisen och gör det möjligt att jämföra dem med referensbilder för att upptäcka skillnader. Denna testtyp är särskilt populär i spelapplikationer för att kontrollera rendering på olika GPU:er.
| Testtyp | Kod | Vad den kontrollerar | När du ska använda |
|---|---|---|---|
| Robot-test | Krävs inte | Krascher, ANR, undantag | Snabb stabilitetskontroll |
| Instrumentell | Espresso / XCTest | Funktionalitet i scenarier | Regressionstestning |
| Skärmbild | Game loop | Visuella regressioner | UI-kontroll på olika enheter |
Testmatrisen i Firebase Test Lab är en uppsättning enhetskonfigurationer som det valda testet körs på. Varje konfiguration omfattar enhetsmodell, OS-version, skärmorientering (porträtt/landskap) och regionala inställningar (locale, språk). Testet körs parallellt på alla valda konfigurationer, vilket avsevärt minskar den totala exekveringstiden jämfört med sekventiell körning på varje enhet.
Google rekommenderar att inkludera enheter med olika egenskaper i matrisen: en flaggskeppsmodell (Google Pixel, Samsung Galaxy S), en budgetenhet (Moto G, Xiaomi Redmi), en enhet med den lägsta API-versionen som applikationen stöder. Optimal matris omfattar 5–10 konfigurationer som täcker alla OS-versioner som applikationen stöder. För iOS väljs iPhone och iPad från olika generationer (t.ex. iPhone SE, iPhone 14, iPad Air) med olika iOS-versioner.
Test Lab distribuerar automatiskt tester till de valda enheterna och utför varje test på varje konfiguration. Exekveringstiden för hela matrisen är lika med exekveringstiden för det långsammaste testet på den långsammaste enheten — alla andra körs parallellt. Om ett test misslyckas på alla enheter stoppar Test Lab dess exekvering på de återstående konfigurationerna för att spara resurser. Resultaten grupperas efter test och efter enhet, vilket gör det möjligt att snabbt avgöra om felet är specifikt för en viss konfiguration.
Robot-testning är en flaggskeppsfunktion i Firebase Test Lab som gör det möjligt att automatiskt utforska applikationen utan att skriva ett enda test. Firebase Crawler (roboten) analyserar applikationens UI-hierarki, hittar alla interaktiva element (knappar, textfält, listor, menyer) och interagerar med dem, och simulerar en verklig användares beteende. Robot-testning är särskilt effektiv i tidiga utvecklingsstadier, när tester ännu inte har skrivits, eller för kontroll av äldre kod.
För att köra ett robot-test räcker det att ladda upp APK eller IPA i Firebase Console och välja alternativet Robo test. Roboten kan automatiskt logga in i applikationen via förkonfigurerade inloggningsuppgifter (användarnamn/lösenord) för att få åtkomst till skärmar som är dolda bakom auktorisering. Man kan också ställa in utforskningsdjup (max depth) för att begränsa antalet steg roboten tar, eller ange specifika element som roboten ska klicka på prioriterat.
<!-- res/xml/robo_directives.xml -->
<!-- Roboten fyller i inloggnings- och lösenordsfälten -->
<?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-tester ersätter inte manuell testning och skrivna instrumentella tester för komplexa scenarier. Roboten kan inte kontrollera affärslogik: den klickar på alla element i följd men vet inte om resultatet är korrekt. Roboten kan inte heller interagera med anpassade vyer som inte ärver från standard ViewGroup och bearbetar inte WebView. För dessa fall måste instrumentella tester eller Game loop användas.
Integrering av Firebase Test Lab med CI/CD-system möjliggör automatisk körning av tester vid varje push till databasen. Test Lab stöder Gradle-uppgifter för Android och Fastlane för båda plattformarna. Konfigurering av CI/CD-ledning inkluderar att bygga applikationen, ladda upp APK/IPA till Google Cloud Storage, köra tester via Firebase CLI och ta emot rapporter tillbaka till CI-systemet för visning av byggstatus.
Google tillhandahåller pluginen gcloud-test-lab för Gradle som automatiserar uppladdning och körning av tester. Uppgiften assembleAndroidTest bygger APK med tester och gcloud-uppgifter laddar upp den till Test Lab och kör matrisen. Testresultat returneras till Gradle som pass/fail, vilket möjliggör integrering av Test Lab i alla CI-ledningar som stöder Gradle. För auktorisering används ett Firebase-tjänstkonto med behörigheter till 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 tillhandahåller pluginen firebase_test_lab för integrering med iOS- och Android-tester. Fastlane lane utför bygget, startar testerna och bearbetar resultaten. För iOS XCTest kräver Test Lab en xctestrun-fil som skapas automatiskt vid bygge av testmålet. Fastlane kan också ladda upp testresultat till Slack eller andra meddelandetjänster för att meddela teamet om teststatus efter varje körning.
Efter att testerna slutförts tillhandahåller Firebase Test Lab en omfattande rapport som är tillgänglig i Firebase Console och via gcloud CLI. Rapporten innehåller en snabb sammanfattning (antal godkända, misslyckade och hoppade tester), detaljerad information om varje test på varje enhet, video av exekveringen, skärmbilder av viktiga steg och enhetens loggar (logcat för Android, system log för iOS). För misslyckade tester finns en stacktrace som visar den exakta platsen för felet.
För robot-test skiljer sig rapporten från instrumentell: i stället för pass/fail per testfall visar rapporten utforskningsstatistik. Viktiga mätvärden — antal hittade och besökta skärmar, antal robotinteraktioner (klick, svep, textinmatning), upptäckta krascher och ANR, och den väg som tagits genom applikationen. Videon av robotens exekvering gör det möjligt att visuellt bedöma vilka skärmar som har testats och vilka som förblivit otäckta.
Testresultat lagras i Google Cloud Storage i den bucket som är kopplad till projektet. Data är tillgängliga för export och integrering med externa analyssystem. För långtidslagring och jämförelse av resultat mellan körningar rekommenderas att konfigurera BigQuery-export eller använda Firebase Test Lab API för programmatisk inhämtning av resultat. Google erbjuder möjlighet att ladda ner ett ZIP-arkiv med fullständig resultatuppsättning för varje testkörning.
Vanliga frågor
Spark-planen inkluderar 10 Robo-tester per dag och 5 timmar instrumentella tester per månad gratis. Blaze-planen faktureras per tid: ~1 USD per enhetstimme för Robo-tester och ~5 USD för instrumentella tester. Exakt pris beror på region och enhetstyp.
Fysiska enheter ger mer exakta resultat, inklusive problem med sensorer, kamera, GPS, Bluetooth och verklig prestanda. Emulatorer startar snabbare och är billigare men upptäcker inte problem relaterade till hårdvaruegenskaper. Google rekommenderar fysiska enheter för testning före lansering.
Skapa en XML-fil robo_directives.xml med inmatningsfält (användarnamn, lösenord) och knappar att klicka på. Ladda upp filen tillsammans med APK när du startar testet via Firebase Console eller CLI. Roboten utför de angivna åtgärderna innan utforskningen påbörjas.
Ja, Firebase Test Lab stöder iOS sedan 2024. Robo-tester (automatisk utforskning) och XCTest (instrumentella tester) finns tillgängliga på riktiga iPhone- och iPad-enheter. För uppladdning krävs en IPA-fil med testmål.
Använd Firebase CLI i GitHub Actions: konfigurera autentisering via Service Account JSON, installera gcloud SDK, kör kommandot firebase test android run med angivande av APK och konfigurationer. Testresultat finns tillgängliga via Firebase Console eller gcloud CLI.
Sammanfattning
Vi utvecklar en mobil applikation nyckelfärdigt
IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.
Läs också