Questa guida descrive come eseguire un test di strumentazione, Robo o ciclo di gioco utilizzando gcloud CLI.
Per un elenco completo dei comandi gcloud
che puoi usare
con la tua app per Android in Test Lab, visita la
documentazione di riferimento per gcloud firebase test android
.
Prima di iniziare
Se non lo hai già fatto, aggiungi Firebase al tuo progetto Android.
Passaggio 1: Configurare l'interfaccia a riga di comando gcloud
- Scarica 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 tuo progetto Firebase in gcloud, dove PROJECT_ID è
l'ID del tuo progetto Firebase:
gcloud config set project PROJECT_ID
È incluso lo strumento gcloud CLI.
Passaggio 2: Controllare i dispositivi di test disponibili
Utilizza i seguenti comandi gcloud per visualizzare i dispositivi e le lingue di test disponibili per il test.
In alternativa, puoi anche scaricare il file
App Blocco note per avviare
i comandi immediatamente. Utilizza il file binario app-debug-unaligned.apk
e il file dei test di misurazione app-debug-test-unaligned.apk
, che si trovano
in NotePad/app/build/outputs/apk/
.
models list
: ricevi un elenco aggiornato dei dispositivi Android che puoi testare contro i guasti.gcloud firebase test android models list
Nell'output comando:
- La colonna
MODEL_ID
contiene l'identificatore che potrai utilizzare in un secondo momento per eseguire i test modello del dispositivo. - La colonna
OS_VERSION_ID
contiene le versioni del sistema operativo supportate dal dispositivo.
Output di esempio
- La colonna
models describe
: scopri di più su uno specifico dispositivoMODEL_ID
Android.gcloud firebase test android models describe MODEL_ID
L'output contiene il brand, il produttore, le versioni del sistema operativo e livelli API supportati, Application Binary Interfaces (ABI), date di uscita e se il dispositivo è fisico o virtuale.
versions list
: ottieni un elenco delle versioni del sistema operativo attualmente disponibili da testare contro i guasti.gcloud firebase test android versions list
Puoi utilizzare un identificatore da una delle prime due colonne di comando (
OS_VERSION_ID
eVERSION
) per eseguire successivamente test su un Versione del sistema operativo. Se non specifichi le versioni del sistema operativo Android su cui eseguire il test, viene usato il valore predefinito indicato nella colonnaTAGS
.Output di esempio
locales list
: ottieni l'elenco aggiornato delle lingue disponibili per il test.gcloud firebase test android versions list
La prima colonna dell'output comando,
LOCALE
, contiene l'identificatore che puoi utilizzare in un secondo momento per eseguire test su un'impostazione internazionale. Se non specifichi le impostazioni internazionali di riferimento per il test, viene utilizzato l'inglese come lingua 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
gcloud firebase test android run
e il comando
--device
per eseguire test robot o di strumentazione.
Esegui un test Robo
Anche se non hai test di strumentazione, puoi comunque cercare alla ricerca di bug nella tua app. Utilizza il test Robo per eseguire una revisione automatica del tuo l'interfaccia utente dell'app. Il robot test esercita l'app mediante l'esecuzione di un dei vari percorsi nell'interfaccia utente dell'app, quindi esegue la scansione dell'app per individuare arresti anomali e altri potenziali problemi.
Per eseguire un test Robo, esegui questo 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 l'attributo facoltativo
--client-details matrixLabel="Example matrix label"
per etichettare la matrice di test. - Puoi visualizzare l'insieme completo di opzioni della riga di comando per eseguire i test digitando:
gcloud help firebase test android run
.
In alternativa a specificare questi argomenti nella riga di comando, puoi
facoltativamente specificare gli argomenti in un file di argomento in formato YAML. Corsa
gcloud topic arg-files
per scoprire come usare questa funzionalità.
Per scoprire come esaminare i risultati del test Robo, vedi Analizza i risultati del test.
Esegui un test di strumentazione
Ora utilizza lo strumento a riga di comando gcloud
per eseguire l'app Blocco note
Espresso
sulle configurazioni dei dispositivi Android specificate. Utilizza la
instrumentation
tipo di test 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 il set completo di opzioni della riga di comando per eseguire i test digitando
gcloud help firebase test android run
.
In alternativa a specificare questi argomenti nella riga di comando, puoi optionally specificarli in un file di argomenti in formato YAML. Corsa
gcloud topic arg-files
per scoprire come usare questa funzionalità.
L'interfaccia a riga di comando gcloud supporta Android Test Orchestrator.
Orchestrator richiede AndroidJUnitRunner v1.1 o versioni successive. Per attivarlo, utilizza
gcloud firebase test android run
con il flag --use-orchestrator
. Per disattivarlo, utilizza il flag --no-use-orchestrator
.
Puoi anche controllare il modo in cui Test Lab esegue i test di strumentazione
utilizzando flag aggiuntivi 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 è stato effettivamente instabile o
non usando il flag --num-flaky-test-attempts
, che specifica il numero
volte in cui l'esecuzione di un test deve essere ritentata se uno o più scenari di test
non riuscire per nessun 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 dei report per la copertura del codice
EMMA e
JaCoCo. Se hai uno degli strumenti
integrate nella build per la tua app, puoi ottenere un report sulla copertura del codice
Test Lab test eseguendo gcloud firebase test android run
con alcune
argomenti aggiuntivi. Se Android Test Orchestrator non è abilitato, utilizza il metodo
seguenti:
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 Agente di orchestrazione, 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 di eseguire i test, trova i report sulla copertura del codice tra Google Cloud Storage:
- Apri il link della console Firebase stampato dallo strumento
gcloud
sopra il dei risultati del test nel tuo terminale. - Fai clic su un'esecuzione di test nell'elenco in corrispondenza di tale link per aprire la relativa esecuzione pagina dei dettagli.
- Fai clic su Risultati dei test per accedere al bucket Cloud Storage che include risultati del test di esecuzione.
- Apri
artifacts/coverage.ec
per visualizzare il report sulla copertura del codice.
Analizzare i risultati del test
Dopo alcuni minuti, un riepilogo di base dei risultati del test viene stampato dal Strumento gcloud:
L'output dell'esecuzione del test a riga di comando include anche un link per visualizzare i risultati del test. Per scoprire di più su come interpretare questi risultati, consulta Analisi dei risultati di Firebase Test Lab per Android.
Accesso personalizzato e input 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 non utilizzi
--no-auto-google-login
. Può anche completare schermate di accesso personalizzate utilizzando l'account di prova
le credenziali che fornisci. Puoi usare questo parametro anche per fornire dati
inserire il testo per altri campi di testo utilizzati dalla tua app.
Per completare i campi di testo nella tua app, utilizza la
--robo-directives
e fornisci un elenco separato da virgole di key-value
coppie, in cui il parametro
key
è il nome della risorsa Android dell'elemento UI di destinazione, mentre value
è
la stringa di testo. Puoi anche utilizzare questo flag per indicare a Robo di ignorare elementi specifici dell'interfaccia utente (ad es. "esci" ).
I campi EditText
sono supportati, ma non i campi di testo negli elementi dell'interfaccia utente di WebView
.
Ad esempio, puoi utilizzare il seguente parametro per accesso:
--robo-directives username_resource=username,password_resource=password
Comandi e flag disponibili
L'interfaccia a riga di comando gcloud Test Lab offre diversi comandi e flag che ti consentono eseguire test con specifiche diverse:
Flag Android Test Orchestrator: Un flag per abilitare Orchestrator, uno strumento che ti consente di eseguire dei test dell'app nella sua chiamata a
Instrumentation
. Test Lab sempre esegue l'ultima versione di Orchestrator.Flag per il test del ciclo di gioco: Un insieme di flag di configurazione che abilitano e controllano una "demo modalità" per simulare le azioni dei giocatori nelle app di gioco. Scopri di più sulla corsa Test Ciclo di gioco con Test Lab.
Flag di suddivisione 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 per sharding 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 per separare i dispositivi.
Flag per i profili di traffico di rete (in versione beta): Un flag che specifica il profilo di rete utilizzato dai test con dispositivi mobili. I profili di rete emulano una varietà di condizioni di rete, consentendo per 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 eseguiresti 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 il risultati dei test eseguiti utilizzando script o file batch.
Eseguire script dei codici di uscita per Test Lab
Codice di uscita | Note |
---|---|
0 | Tutte le esecuzioni del test sono state superate. |
1 | Si è verificato un errore generale. Le cause possibili includono: un nome file che non esiste o si è verificato un errore di rete/HTTP. |
2 | Test terminato perché sono stati forniti comandi o argomenti sconosciuti. |
10 | Uno o più scenari di test (classi o metodi delle classi testati) all'interno di un test l'esecuzione non è stata superata. |
15 | Firebase Test Lab non può determinare se la matrice del test ha superato o non riuscita 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 l'API Android selezionata livello 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. |