Questa guida descrive come eseguire un test di strumentazione, Robo o Game Loop utilizzando l' interfaccia a riga di comando di gcloud .
Per un elenco completo dei comandi gcloud
che puoi usare con la tua app Android in Test Lab, visita 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 l'interfaccia a riga di comando di gcloud
- Scarica l' SDK di Google Cloud.
- Assicurati che l'installazione sia aggiornata:
gcloud components update
- Accedi alla CLI gcloud utilizzando il tuo account Google:
gcloud auth login
- Imposta il tuo progetto Firebase in gcloud, dove PROJECT_ID è l'ID del tuo progetto Firebase:
gcloud config set project PROJECT_ID
Ciò include lo strumento CLI gcloud.
Passaggio 2. Controlla i dispositivi di prova disponibili
Utilizza i seguenti comandi gcloud per visualizzare i dispositivi di test e le impostazioni locali disponibili per il test.
Come opzione, puoi anche scaricare l' app Blocco note di esempio per iniziare subito a eseguire i comandi. Utilizzare 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 il test.gcloud firebase test android models list
Nell'output del comando:
- La colonna
MODEL_ID
contiene l'identificatore che puoi utilizzare successivamente per eseguire i test sul modello del dispositivo. - La colonna
OS_VERSION_ID
contiene le versioni del sistema operativo supportate dal dispositivo.
Esempio di output
- La colonna
models describe
: ottieni maggiori informazioni su uno specificoMODEL_ID
Android .gcloud firebase test android models describe MODEL_ID
L'output contiene il marchio del modello del dispositivo, 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
: ottiene un elenco delle versioni del sistema operativo attualmente disponibili da testare.gcloud firebase test android versions list
È possibile utilizzare un identificatore da una delle prime due colonne dell'output del comando (
OS_VERSION_ID
eVERSION
), per eseguire successivamente test su una versione del sistema operativo Android. Se non specifichi le versioni del sistema operativo Android su cui eseguire il test, viene utilizzata l'impostazione predefinita indicata nella colonnaTAGS
.Esempio di output
locales list
: ottiene l'elenco corrente delle impostazioni locali disponibili per il test.gcloud firebase test android versions list
La prima colonna dell'output del comando,
LOCALE
, contiene l'identificatore che è possibile utilizzare in seguito per eseguire test su una locale. Se non si specificano le impostazioni locali su cui eseguire il test, l'inglese viene utilizzato come impostazione locale predefinita.
Passaggio 3. Esegui il test
Ora che conosci la gamma di modelli di dispositivi, impostazioni locali 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 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 automatica dell'interfaccia utente della tua app. Il robo test esercita l'app eseguendo un'analisi statica dei vari percorsi attraverso l'interfaccia utente dell'app, quindi esegue la scansione dell'app 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 tue matrici di test nella console Firebase, puoi utilizzare il flag facoltativo
--client-details matrixLabel="Example matrix label"
per etichettare la tua matrice di test. - Puoi vedere il set completo di opzioni della riga di comando per eseguire i test digitando:
gcloud help firebase test android run
.
In alternativa alla specifica di questi argomenti sulla riga di comando, puoi facoltativamente specificare i tuoi argomenti in un file di argomenti in formato YAML. Esegui gcloud topic arg-files
per scoprire come utilizzare questa funzione.
Per informazioni su come analizzare i risultati del test del test Robo, vedere Analizzare i risultati del test .
Eseguire un test della strumentazione
Ora utilizza lo strumento da riga di comando gcloud
per eseguire i test Espresso dell'app Blocco note sulle configurazioni del dispositivo 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 tue matrici di test nella console Firebase, puoi utilizzare il flag facoltativo
--client-details matrixLabel="Example matrix label"
per etichettare la tua matrice di test. - Puoi vedere il set completo di opzioni della riga di comando per eseguire i test digitando
gcloud help firebase test android run
.
In alternativa alla specifica di questi argomenti sulla riga di comando, puoi facoltativamente specificare i tuoi argomenti in un file di argomenti in formato YAML. Esegui gcloud topic arg-files
per scoprire come utilizzare questa funzione.
L'interfaccia a riga di comando di gcloud supporta Android Test Orchestrator . Orchestrator richiede AndroidJUnitRunner v1.1 o versioni successive. Per abilitarlo, usa gcloud firebase test android run
con il file
flag --use-orchestrator
. Per disabilitarlo usa il flag --no-use-orchestrator
.
Puoi anche controllare il modo in cui Test Lab esegue i tuoi test di strumentazione utilizzando flag aggiuntivi che non sono 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 tuo test che ha avuto esito negativo è stato effettivamente instabile o meno utilizzando il flag --num-flaky-test-attempts
, che specifica il numero di volte in cui l'esecuzione di un test deve essere ritentata se uno o più dei suoi casi di test fallire per qualsiasi motivo. Per ulteriori informazioni, consulta gcloud firebase test android run .
Rapporti sulla copertura del codice per i test di strumentazione
Test Lab supporta gli strumenti di reporting sulla copertura del codice EMMA e JaCoCo . Se hai uno strumento integrato nella build per la tua app, puoi ottenere un rapporto sulla copertura del codice per i test di laboratorio di test eseguendo gcloud firebase test android run
con alcuni argomenti aggiuntivi. Se Android Test Orchestrator non è abilitato, 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 stai generando rapporti sulla copertura del codice mentre utilizzi 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
Quando Test Lab termina l'esecuzione dei test, trova i rapporti sulla copertura del codice in Google Cloud Storage:
- Apri il link della console Firebase che lo strumento
gcloud
ha stampato sopra la tabella dei risultati del test nel tuo terminale. - Fare clic su un'esecuzione di test dall'elenco in quel collegamento per aprire la pagina dei dettagli dell'esecuzione.
- Fai clic su Risultati del test per andare al bucket Cloud Storage con i risultati del test dell'esecuzione.
- Apri
artifacts/coverage.ec
per visualizzare il rapporto sulla copertura del codice.
Analizza i risultati del test
Dopo alcuni minuti, lo strumento gcloud stampa un riepilogo di base dei risultati del test:
L'output dell'esecuzione del test della riga di comando include anche un collegamento per visualizzare i risultati del test. Per ulteriori informazioni su come interpretare questi risultati, consulta Analisi dei risultati di Firebase Test Lab per Android .
Accesso personalizzato e immissione di testo con Robo test
Il robo test completa automaticamente le schermate di accesso che utilizzano un account Google per l'autenticazione, a meno che non utilizzi il parametro --no-auto-google-login
. Può anche completare schermate di accesso personalizzate utilizzando le credenziali dell'account di prova fornite. Puoi anche utilizzare questo parametro per fornire un testo di input personalizzato per altri campi di testo utilizzati dalla tua app.
Per completare i campi di testo nella tua app, utilizza il parametro --robo-directives
e fornisci un elenco separato da virgole di coppie key-value
, dove la key
è il nome della risorsa Android dell'elemento dell'interfaccia utente di destinazione e il value
è la stringa di testo . Puoi anche utilizzare questo flag per dire a Robo di ignorare elementi specifici dell'interfaccia utente (ad esempio, il pulsante "logout"). I campi EditText
sono supportati ma non i campi di testo negli elementi dell'interfaccia utente WebView
.
Ad esempio, puoi utilizzare il seguente parametro per l'accesso personalizzato:
--robo-directives username_resource=username,password_resource=password
Comandi e flag disponibili
L'interfaccia a riga di comando gcloud di Test Lab ha diversi comandi e flag disponibili che ti consentono di eseguire test con specifiche diverse:
Flag di Android Test Orchestrator : un flag per abilitare Orchestrator, uno strumento che consente di eseguire ciascuno dei test dell'app nella propria chiamata di
Instrumentation
. Test Lab esegue sempre l'ultima versione di Orchestrator.Flag di test del ciclo di gioco : un set di flag di configurazione che abilitano e controllano una "modalità demo" per simulare le azioni del giocatore nelle app di gioco. Scopri di più sull'esecuzione dei test Game Loop con Test Lab .
Flag Uniform Sharding (in beta) : un flag che specifica il numero di shard in cui si desidera distribuire uniformemente i casi di test. Gli shard vengono eseguiti in parallelo su dispositivi separati.
Flag di sharding manuale (in beta) : un flag che specifica un gruppo di pacchetti, classi e/o test case da eseguire in uno shard (un gruppo di test case). 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.
Scripting di comandi gcloud con Test Lab
Puoi utilizzare script della shell o file batch per automatizzare i comandi di test delle app per dispositivi mobili che altrimenti eseguiresti utilizzando la riga di comando di gcloud. Il seguente esempio di script bash 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.
Scripting dei codici di uscita per Test Lab
Codice di uscita | Appunti |
---|---|
0 | Tutte le esecuzioni dei test sono state superate. |
1 | Si è verificato un errore generale. Le possibili cause includono: un nome file che non esiste o un errore HTTP/di rete. |
2 | Il test è terminato perché sono stati forniti comandi o argomenti sconosciuti. |
10 | Uno o più casi di test (classi testate o metodi di classe) all'interno di un'esecuzione di test non sono stati superati. |
15 | Firebase Test Lab non è stato in grado di determinare se la matrice di test ha superato o meno a causa di un errore imprevisto. |
18 | L'ambiente di test per questa esecuzione di 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. |