Questa guida descrive come eseguire un test di strumentazione, Robo o del ciclo di gioco utilizzando la gcloud CLI.
Per un elenco completo dei comandi gcloud che puoi utilizzare
con la tua app per Android in Test Lab, consulta la
documentazione di riferimento per gcloud firebase test android.
Prima di iniziare
Se non l'hai già fatto, aggiungi Firebase al tuo progetto Android.
Passaggio 1: configura gcloud CLI
- Scarica il Google Cloud SDK
- Assicurati che l'installazione sia aggiornata:
gcloud components update
- Accedi a gcloud CLI utilizzando il tuo Account Google:
gcloud auth login
- Imposta il progetto Firebase in gcloud, dove PROJECT_ID è
l'ID del tuo progetto Firebase:
gcloud config set project PROJECT_ID
Include lo strumento gcloud CLI.
Passaggio 2: controlla i dispositivi di test disponibili
Utilizza i seguenti comandi gcloud per visualizzare i dispositivi di test e le impostazioni internazionali disponibili per il test.
In alternativa, puoi anche scaricare l'app
Notepad di esempio per iniziare
a eseguire i comandi subito. Utilizza il file binario app-debug-unaligned.apk e il file dei test di strumentazione app-debug-test-unaligned.apk, che si trovano in NotePad/app/build/outputs/apk/.
models list: ottieni un elenco aggiornato dei dispositivi Android disponibili per i test.gcloud firebase test android models listNell'output comando:
- La colonna
MODEL_IDcontiene l'identificatore che puoi utilizzare in un secondo momento per eseguire i test sul modello del dispositivo. - La colonna
OS_VERSION_IDcontiene le versioni del sistema operativo supportate dal dispositivo.
Esempio di output

- La colonna
models describe: ottieni ulteriori informazioni su unMODEL_IDAndroid specifico.gcloud firebase test android models describe MODEL_IDL'output contiene il brand, il produttore, le versioni del sistema operativo, i livelli API supportati, le interfacce binarie dell'applicazione (ABI) supportate, le date di rilascio e se il dispositivo è fisico o virtuale.
versions list: ottieni un elenco delle versioni del sistema operativo attualmente disponibili per i test.gcloud firebase test android versions listPuoi utilizzare un identificatore di una delle prime due colonne dell'output del comando (
OS_VERSION_IDeVERSION) per eseguire in un secondo momento i test su una versione del sistema operativo Android. Se non specifichi le versioni del sistema operativo Android da testare, viene utilizzata quella predefinita indicata nella colonnaTAGS.Esempio di output

locales list: ottieni l'elenco attuale delle impostazioni internazionali disponibili per i test.gcloud firebase test android locales listLa prima colonna dell'output comando,
LOCALE, contiene l'identificatore che puoi utilizzare in un secondo momento per eseguire i test su un'impostazione internazionale. Se non specifichi le impostazioni internazionali da testare, viene utilizzata l'inglese come impostazione internazionale predefinita.
Passaggio 3: esegui il test
Ora che conosci la gamma di modelli di dispositivi, impostazioni internazionali e versioni del sistema operativo disponibili per testare la tua app, puoi specificare i dispositivi utilizzando il comando gcloud firebase test android run e il flag --device per eseguire i test Robo o di strumentazione.
Esegui un test Robo
Anche se non hai test di strumentazione, puoi comunque cercare bug nella tua app. Utilizza il test Robo per eseguire una revisione automatizzata dell'interfaccia utente dell'app. Il test Robo esercita l'app eseguendo un'analisi statica dei vari percorsi dell'interfaccia utente dell'app e poi la sottopone a scansione per trovare arresti anomali e altri potenziali problemi.
Per eseguire un test Robo, esegui il seguente comando di esempio:
gcloud firebase test android run \ --type robo \ --app app-debug-unaligned.apk \ --device model=Nexus6,version=21,locale=en,orientation=portrait \ --device model=Nexus7,version=19,locale=fr,orientation=landscape \ --timeout 90s \ --client-details matrixLabel="Example matrix label"
- Il parametro
--type roboè implicito se non viene specificato alcun valore--type. - Per aiutarti a identificare e individuare le matrici di test nella Console Firebase,
puoi utilizzare il flag facoltativo
--client-details matrixLabel="Example matrix label"per etichettare la matrice di test. - Puoi visualizzare l'insieme completo delle opzioni della riga di comando per l'esecuzione dei test digitando:
gcloud help firebase test android run.
In alternativa alla specifica di questi argomenti nella riga di comando, puoi specificarli facoltativamente in un file di argomenti in formato YAML. Esegui gcloud topic arg-files per scoprire come utilizzare questa funzionalità.
Per scoprire come analizzare i risultati dei test Robo, consulta Analizzare i risultati dei test.
Esegui un test di strumentazione
Ora utilizza lo strumento a riga di comando gcloud per eseguire i test
Espresso
dell'app Notepad sulle configurazioni dei dispositivi Android specificate. Utilizza il tipo di test instrumentation per eseguire i test in app-debug-test-unaligned.apk come segue:
gcloud firebase test android run \ --type instrumentation \ --app app-debug-unaligned.apk \ --test app-debug-test-unaligned.apk \ --device model=Nexus6,version=21,locale=en,orientation=portrait \ --device model=Nexus7,version=19,locale=fr,orientation=landscape --client-details matrixLabel="Example matrix label"
- Il parametro di strumentazione
--typeè implicito se viene specificato un APK di test con--test. - Per aiutarti a identificare e individuare le matrici di test nella console Firebase,
puoi utilizzare il flag facoltativo
--client-details matrixLabel="Example matrix label"per etichettare la matrice di test. - Puoi visualizzare l'insieme completo delle opzioni della riga di comando per l'esecuzione dei test digitando
gcloud help firebase test android run.
In alternativa alla specifica di questi argomenti nella riga di comando, puoi specificarli facoltativamente in un file di argomenti in formato YAML. Esegui gcloud topic arg-files per scoprire come utilizzare questa funzionalità.
gcloud CLI supporta Android Test Orchestrator.
Orchestrator richiede AndroidJUnitRunner v1.1 o versioni successive. Per attivarlo, utilizza
gcloud firebase test android run con il --use-orchestrator
flag. Per disattivarlo, utilizza il flag --no-use-orchestrator.
Puoi anche controllare il modo in cui Test Lab esegue i test di strumentazione
utilizzando altri flag non mostrati sopra. Ad esempio, puoi utilizzare il flag --test-targets per testare una singola classe o un metodo di classe utilizzato dall'APK di test. Puoi anche scoprire se il test non riuscito è effettivamente instabile o meno utilizzando il flag --num-flaky-test-attempts, che specifica il numero di volte in cui deve essere ritentata l'esecuzione del test se uno o più scenari di test non vanno a buon fine per qualsiasi motivo. Per saperne di più, consulta gcloud firebase test android run.
Report sulla copertura del codice per i test di strumentazione
Test Lab supporta gli strumenti di generazione di report sulla copertura del codice
EMMA e
JaCoCo. Se hai integrato uno di questi strumenti
nella build della tua app, puoi ottenere un report sulla copertura del codice per
Test Lab test eseguendo gcloud firebase test android run con alcuni
argomenti aggiuntivi. Se Android Test Orchestrator non è attivato, utilizza quanto segue:
gcloud firebase test android run \ --type instrumentation \ --app your-app.apk \ --test your-app-test.apk \ --device model=TestDevice,version=AndroidVersion \ --environment-variables coverage=true,coverageFile="/sdcard/Download/coverage.ec" \ --directories-to-pull /sdcard/Download
Se generi report sulla copertura del codice utilizzando anche Android Test Orchestrator, modifica le variabili di ambiente come segue:
gcloud firebase test android run \ --type instrumentation \ --app your-app.apk \ --test your-app-test.apk \ --device model=TestDevice,version=AndroidVersion \ --environment-variables clearPackageData=true,coverage=true,coverageFilePath="/sdcard/Download/" \ --directories-to-pull /sdcard/Download
Al termine dell'esecuzione dei test da parte di Test Lab, trova i report sulla copertura del codice in Google Cloud Storage:
- Apri il link della console Firebase che lo strumento
gcloudha stampato sopra la tabella dei risultati dei test nel terminale. - Fai clic su un'esecuzione del test dall'elenco a quel link per aprire la pagina dei dettagli di quell'esecuzione.
- Fai clic su Risultati dei test per accedere al Cloud Storage bucket con i risultati dei test dell'esecuzione.
- Apri
artifacts/coverage.ecper visualizzare il report sulla copertura del codice.
Analizza i risultati dei test
Dopo alcuni minuti, lo strumento gcloud stampa un riepilogo di base dei risultati dei test:

L'output dell'esecuzione dei test della riga di comando include anche un link per visualizzare i risultati dei test. Per scoprire di più su come interpretare questi risultati, consulta Analizzare i risultati di Firebase Test Lab per Android.
Accesso personalizzato e inserimento di testo con il test Robo
Il test Robo completa automaticamente le schermate di accesso che utilizzano un Account Google
per l'autenticazione, a meno che tu non utilizzi il
--no-auto-google-login
parametro. Può anche completare le schermate di accesso personalizzate utilizzando le credenziali dell'account di test che fornisci. Puoi anche utilizzare questo parametro per fornire testo di input personalizzato per altri campi di testo utilizzati dalla tua app.
Per completare i campi di testo nella tua app, utilizza il
--robo-directives
parametro e fornisci un elenco separato da virgole di coppie key-value, dove la
key è il nome della risorsa Android dell'elemento UI di destinazione e il value è
la stringa di testo. Puoi anche utilizzare questo flag per indicare a Robo di ignorare elementi UI specifici (ad es. il pulsante "Esci").
EditText
campi sono supportati, ma non i campi di testo negli elementi UI WebView.
Ad esempio, puoi utilizzare il seguente parametro per l'accesso personalizzato:
--robo-directives username_resource=username,password_resource=password
Comandi e flag disponibili
La Test Lab gcloud CLI ha diversi comandi e flag disponibili che ti consentono di eseguire test con specifiche diverse:
Flag di Android Test Orchestrator: un flag per attivare Orchestrator, uno strumento che ti consente di eseguire ogni test della tua app nella propria chiamata di
Instrumentation. Test Lab esegue sempre l'ultima versione di Orchestrator.Flag di test del ciclo di gioco: un insieme di flag di configurazione che attivano e controllano una "modalità demo" per simulare le azioni dei giocatori nelle app di gioco. Scopri di più sull'esecuzione dei test del ciclo di gioco con Test Lab.
Flag di sharding uniforme (in versione beta): un flag che specifica il numero di shard in cui vuoi distribuire uniformemente gli scenari di test. Gli shard vengono eseguiti in parallelo su dispositivi separati.
Flag di partizionamento orizzontale manuale (in versione beta): un flag che specifica un gruppo di pacchetti, classi e/o scenari di test da eseguire in uno shard (un gruppo di scenari di test). Gli shard vengono eseguiti in parallelo su dispositivi separati.
Flag dei profili di traffico di rete (in versione beta): Un flag che specifica il profilo di rete utilizzato dai test con i dispositivi fisici. I profili di rete emulano una varietà di condizioni di rete, consentendoti di testare le prestazioni della tua app su reti inaffidabili o imprevedibili.
Creazione di script dei comandi gcloud con Test Lab
Puoi utilizzare script shell o file batch per automatizzare i comandi di test delle app mobile che altrimenti eseguirai utilizzando la riga di comando gcloud. Il seguente script bash di esempio esegue un test di strumentazione con un timeout di due minuti e segnala se l'esecuzione del test è stata completata correttamente:
if gcloud firebase test android run --app my-app.apk --test my-test.apk --timeout 2m
then
echo "Test matrix successfully finished"
else
echo "Test matrix exited abnormally with non-zero exit code: " $?
fi
Codici di uscita dello script
Test Lab fornisce diversi codici di uscita che puoi utilizzare per comprendere meglio i risultati dei test eseguiti utilizzando script o file batch.
Codici di uscita degli script per Test Lab
| Codice di uscita | Note |
|---|---|
| 0 | Tutte le esecuzioni dei test sono state superate. |
| 1 | Si è verificato un errore generale. Le possibili cause includono: un nome file inesistente o un errore HTTP/di rete. |
| 2 | Il test è stato interrotto perché sono stati forniti comandi o argomenti sconosciuti. |
| 10 | Uno o più scenari di test (classi o metodi di classe testati) all'interno di un'esecuzione di test non sono stati superati. |
| 15 | Firebase Test Lab non è riuscito a determinare se la matrice di test è stata superata o meno a causa di un errore imprevisto. |
| 18 | L'ambiente di test per questa esecuzione del test non è supportato a causa di dimensioni di test incompatibili. Questo errore potrebbe verificarsi se il livello API Android selezionato non è supportato dal tipo di dispositivo selezionato. |
| 19 | La matrice di test è stata annullata dall'utente. |
| 20 | Si è verificato un errore dell'infrastruttura di test. |