Firebase Test Lab è un servizio cloud di Google per il test automatizzato di applicazioni mobili su dispositivi reali situati nei data center di Google. Test Lab consente di eseguire test di strumentazione, test di screenshot e test robot su centinaia di configurazioni di dispositivi con diverse versioni di Android e iOS senza la necessità di mantenere una propria farm di dispositivi. Secondo Firebase Documentation, 2026, il test robot di Firebase attraversa automaticamente tutte le schermate dell'applicazione, rilevando crash, ANR e problemi di interfaccia senza scrivere una singola riga di codice di test. Il servizio supporta l'integrazione con sistemi CI/CD e fornisce report dettagliati con video e log.
Punti chiave
Firebase Test Lab è l'infrastruttura cloud di Google per il test automatizzato di applicazioni mobili su dispositivi fisici situati nei data center globali di Google. A differenza degli emulatori su una macchina locale, Test Lab esegue test su veri dispositivi Android e dispositivi iOS con varie versioni di sistemi operativi, risoluzioni dello schermo, dimensioni di RAM e livelli API. Il servizio elabora automaticamente i risultati dei test, fornendo video di esecuzione, screenshot dei passaggi e log dettagliati.
Mantenere una propria farm di dispositivi richiede un significativo investimento di capitale nell'acquisto e nella manutenzione di dispositivi fisici. Firebase Test Lab fornisce accesso a migliaia di dispositivi con pagamento a consumo con un limite gratuito nel piano Spark. Test Lab aggiorna automaticamente il parco dispositivi ai modelli correnti, inclusi gli ultimi flagship Google Pixel, Samsung Galaxy, Xiaomi e iPhone. I test vengono eseguiti in parallelo su più dispositivi, riducendo il tempo complessivo di verifica dell'applicazione.
Per Android, Test Lab supporta test su dispositivi con livelli API da 21 all'ultima versione stabile di Android. Il supporto iOS include veri dispositivi iPhone e iPad con versioni iOS da 15 all'ultima versione stabile. I test robot e XCTest sono disponibili per iOS. Ogni test può essere eseguito su dispositivi fisici o emulatori — per ottenere i risultati più accurati, Google consiglia di utilizzare dispositivi fisici poiché rivelano problemi con sensori, fotocamera e interfacce di rete.
Firebase Test Lab supporta diversi tipi di test, ciascuno che risolve il proprio compito nel ciclo di sviluppo: test robot per una rapida verifica della stabilità, test di strumentazione per la verifica funzionale e test di screenshot per rilevare regressioni visive. La scelta del tipo di test dipende dalla fase di sviluppo e dagli obiettivi di una particolare esecuzione.
I test robot sono una caratteristica unica di Firebase Test Lab che non richiede la scrittura di codice di test. Firebase Crawler esplora automaticamente l'applicazione: trova tutti gli elementi interattivi dell'interfaccia, ci clicca sopra, compila moduli con dati di test, naviga tra le schermate e registra eventuali guasti (crash, ANR, eccezioni). I test robot rilevano fino all'80% dei bug critici senza una singola riga di codice di test, rendendoli uno strumento ideale per valutare la stabilità di base di un'applicazione nelle prime fasi di sviluppo.
I test di strumentazione sono test scritti dallo sviluppatore utilizzando i framework Espresso (Android) o XCTest (iOS). Test Lab esegue l'APK con i test sul dispositivo di destinazione e raccoglie i risultati di esecuzione. I test possono essere semplici (verifica della visualizzazione degli elementi) o complessi (scenari end-to-end: login, aggiunta al carrello, completamento ordine). Firebase Test Lab supporta Android Test Orchestrator per isolare i test l'uno dall'altro, impedendo che un test fallito influenzi gli altri.
I test di screenshot vengono utilizzati per rilevare regressioni visive nell'applicazione. Game loop è un tipo speciale di test che passa un elenco di scenari all'applicazione tramite intent, e l'applicazione deve eseguire questi scenari e catturare screenshot delle schermate chiave. Test Lab raccoglie screenshot da tutti i dispositivi nella matrice e consente di confrontarli con immagini di riferimento per rilevare differenze. Questo tipo di test è particolarmente popolare nelle applicazioni di gioco per verificare il rendering su diverse GPU.
| Tipo di test | Codice | Cosa verifica | Quando usare |
|---|---|---|---|
| Test robot | Non richiesto | Crash, ANR, eccezioni | Verifica rapida di stabilità |
| Strumentazione | Espresso / XCTest | Funzionalità scenari | Test di regressione |
| Screenshot | Game loop | Regressioni visive | Verifica interfaccia su diversi dispositivi |
La matrice di test in Firebase Test Lab è un insieme di configurazioni di dispositivi su cui viene eseguito il test selezionato. Ogni configurazione include il modello del dispositivo, la versione del sistema operativo, l'orientamento dello schermo (ritratto/paesaggio) e le impostazioni regionali (locale, lingua). Il test viene eseguito in parallelo su tutte le configurazioni selezionate, riducendo significativamente il tempo di esecuzione totale rispetto all'esecuzione sequenziale su ciascun dispositivo.
Google consiglia di includere nella matrice dispositivi con caratteristiche diverse: un modello di punta (Google Pixel, Samsung Galaxy S), un dispositivo economico (Moto G, Xiaomi Redmi), un dispositivo con la versione API minima supportata dall'applicazione. Una matrice ottimale include 5–10 configurazioni che coprono tutte le versioni del sistema operativo supportate dall'applicazione. Per iOS, vengono selezionati modelli di iPhone e iPad di diverse generazioni (ad esempio, iPhone SE, iPhone 14, iPad Air) con diverse versioni di iOS.
Test Lab distribuisce automaticamente i test sui dispositivi selezionati, eseguendo ciascun test su ciascuna configurazione. Il tempo di esecuzione dell'intera matrice è uguale al tempo di esecuzione del test più lento sul dispositivo più lento — tutti gli altri vengono eseguiti in parallelo. Se un test fallisce su tutti i dispositivi, Test Lab ne interrompe l'esecuzione sulle configurazioni rimanenti per risparmiare risorse. I risultati sono raggruppati per test e per dispositivo, consentendo di identificare rapidamente se un errore è specifico di una particolare configurazione.
Il test robot è una caratteristica di punta di Firebase Test Lab che consente di esplorare automaticamente un'applicazione senza scrivere un singolo test. Firebase Crawler (robot) analizza la gerarchia dell'interfaccia dell'applicazione, trova tutti gli elementi interattivi (pulsanti, campi di testo, elenchi, menu) e interagisce con essi, simulando il comportamento di un utente reale. Il test robot è particolarmente efficace nelle prime fasi di sviluppo, quando i test non sono ancora stati scritti, o per verificare codice legacy.
Per eseguire un test robot, è sufficiente caricare un APK o IPA in Firebase Console e selezionare l'opzione Robo test. Il robot può accedere automaticamente all'applicazione tramite credenziali preconfigurate (login/password) per accedere a schermate nascoste dietro l'autenticazione. È anche possibile impostare la profondità di esplorazione (max depth) per limitare il numero di passaggi del robot, o specificare elementi particolari su cui il robot deve cliccare prioritariamente.
<!-- res/xml/robo_directives.xml -->
<!-- Il robot compilerà i campi di login e password -->
<?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>
I test robot non sostituiscono i test manuali e i test di strumentazione scritti per scenari complessi. Il robot non può verificare la logica di business: clicca su tutti gli elementi in sequenza, ma non sa se il risultato è corretto. Inoltre, il robot non può interagire con viste personalizzate che non ereditano da ViewGroup standard e non gestisce WebView. Per questi casi, è necessario utilizzare test di strumentazione o Game loop.
L'integrazione di Firebase Test Lab con sistemi CI/CD consente di eseguire automaticamente i test a ogni push nel repository. Test Lab supporta attività Gradle per Android e Fastlane per entrambe le piattaforme. La configurazione di una pipeline CI/CD include la compilazione dell'applicazione, il caricamento dell'APK/IPA in Google Cloud Storage, l'esecuzione dei test tramite Firebase CLI e la ricezione dei report nel sistema CI per visualizzare lo stato della build.
Google fornisce il plugin gcloud-test-lab per Gradle, che automatizza il caricamento e l'esecuzione dei test. L'attività assembleAndroidTest compila l'APK con i test, e le attività gcloud lo caricano in Test Lab ed eseguono la matrice. I risultati dei test vengono restituiti a Gradle come pass/fail, consentendo l'integrazione di Test Lab in qualsiasi pipeline CI che supporti Gradle. Per l'autorizzazione viene utilizzato un account di servizio Firebase con permessi 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 fornisce il plugin firebase_test_lab per l'integrazione con test iOS e Android. Una lane Fastlane esegue la build, esegue i test e processa i risultati. Per XCTest su iOS, Test Lab richiede un file xctestrun, che viene creato automaticamente durante la compilazione del target di test. Fastlane può anche caricare i risultati dei test in Slack o altri messenger per notificare il team sullo stato dei test dopo ogni esecuzione.
Dopo il completamento dei test, Firebase Test Lab fornisce un report completo disponibile in Firebase Console e tramite gcloud CLI. Il report include un breve riepilogo (numero di test superati, falliti e saltati), informazioni dettagliate per ogni test su ogni dispositivo, video di esecuzione, screenshot dei passaggi chiave e log del dispositivo (logcat per Android, log di sistema per iOS). Per i test falliti, è disponibile uno stack trace con la posizione esatta dell'errore.
Per un test robot, il report differisce da uno di strumentazione: invece di pass/fail per caso di test, il report mostra statistiche di esplorazione. Metriche chiave — il numero di schermate trovate e visitate, il numero di interazioni del robot (clic, swipe, inserimento testo), crash e ANR rilevati, e il percorso attraversato nell'applicazione. Il video di esecuzione del robot consente di valutare visivamente quali schermate sono state testate e quali sono rimaste scoperte.
I risultati dei test vengono memorizzati in Google Cloud Storage nel bucket associato al progetto. I dati sono disponibili per l'esportazione e l'integrazione con sistemi di analisi esterni. Per la conservazione a lungo termine e il confronto dei risultati tra esecuzioni, si consiglia di configurare l'esportazione BigQuery o utilizzare l'API Firebase Test Lab per il recupero programmatico dei risultati. Google fornisce la possibilità di scaricare un archivio ZIP con il set completo di risultati per ogni esecuzione di test.
Domande frequenti
Il piano Spark include 10 test Robo al giorno e 5 ore di test di strumentazione al mese gratuitamente. Il piano Blaze viene fatturato a tempo: ~1 USD per ora-dispositivo per test Robo e ~5 USD per test di strumentazione. Il costo esatto dipende dalla regione e dal tipo di dispositivo.
I dispositivi fisici forniscono risultati più accurati, inclusi problemi con sensori, fotocamera, GPS, Bluetooth e prestazioni reali. Gli emulatori si avviano più velocemente e sono più economici, ma non rivelano problemi legati alle caratteristiche hardware. Google consiglia dispositivi fisici per i test pre-rilascio.
Creare un file XML robo_directives.xml con campi di input (login, password) e pulsanti da cliccare. Caricare il file insieme all'APK all'avvio del test tramite Firebase Console o CLI. Il robot eseguirà le azioni specificate prima di iniziare l'esplorazione.
Sì, Firebase Test Lab supporta iOS dal 2024. I test Robo (esplorazione automatica) e XCTest (test di strumentazione) sono disponibili su veri dispositivi iPhone e iPad. Per il caricamento è necessario un file IPA con un target di test.
Utilizzare Firebase CLI in GitHub Actions: configurare l'autenticazione tramite Service Account JSON, installare gcloud SDK, eseguire il comando firebase test android run con APK e configurazioni. I risultati dei test sono disponibili tramite Firebase Console o gcloud CLI.
Riepilogo
Svilupperemo un'applicazione mobile chiavi in mano
IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.
Leggi anche