Inizia i test con la CLI gcloud

Questa guida descrive come eseguire un test di strumentazione, Robo o Game Loop utilizzando la CLI gcloud .

Per un elenco completo dei comandi gcloud che puoi utilizzare 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 la CLI gcloud

  1. Scarica l' SDK di Google Cloud
  2. Ciò include lo strumento CLI gcloud.

  3. Assicurati che la tua installazione sia aggiornata:
    gcloud components update
    
  4. Accedi alla CLI gcloud utilizzando il tuo Account Google:
    gcloud auth login
    
  5. Imposta il tuo progetto Firebase in gcloud, dove PROJECT_ID è l'ID del tuo progetto Firebase:
    gcloud config set project PROJECT_ID
    

Passaggio 2. Controllare i dispositivi di test disponibili

Utilizza i seguenti comandi gcloud per visualizzare i dispositivi di test e le impostazioni locali disponibili per il tuo test.

Come opzione, puoi anche scaricare l' app di esempio Blocco note 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 di dispositivi Android disponibili per i test.

    gcloud firebase test android models list
    

    Nell'output del comando:

    • La colonna MODEL_ID contiene l'identificatore che potrai utilizzare successivamente per eseguire test sul modello del dispositivo.
    • La colonna OS_VERSION_ID contiene le versioni del sistema operativo supportate dal dispositivo.

    Uscita di esempio

    gcloud firebase test android models list output

  • models describe : ottieni ulteriori informazioni su uno specifico MODEL_ID Android.

    gcloud firebase test android models describe MODEL_ID
    

    L'output contiene la marca 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 : ottieni un elenco delle versioni del sistema operativo attualmente disponibili da confrontare.

    gcloud firebase test android versions list
    

    Puoi utilizzare un identificatore da una delle prime due colonne dell'output del comando ( OS_VERSION_ID e VERSION ), per eseguire successivamente i test su una versione del sistema operativo Android. Se non specifichi le versioni del sistema operativo Android da confrontare con le quali eseguire il test, viene utilizzata l'impostazione predefinita annotata nella colonna TAGS .

    Uscita di esempio

    gcloud android versions list

  • locales list : ottieni l'elenco corrente delle lingue disponibili per il test.

    gcloud firebase test android versions list
    

    La prima colonna dell'output del comando, LOCALE , contiene l'identificatore che puoi utilizzare in seguito per eseguire test su una locale. Se non specifichi le impostazioni internazionali da verificare, l'inglese verrà 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 Robo o test di strumentazione.

Esegui un test Robo

Anche se non disponi di test di strumentazione, puoi comunque cercare bug nella tua app. Utilizza il test Robo per eseguire una revisione automatizzata dell'interfaccia utente della tua app. 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 individuare 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 il set completo di opzioni della riga di comando per l'esecuzione dei 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 funzionalità.

Per informazioni su come analizzare i risultati del test Robo, vedere Analizzare i risultati del test .

Esegui 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 prova 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 l'esecuzione dei 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 funzionalità.

La CLI gcloud supporta Android Test Orchestrator . L'orchestrator richiede AndroidJUnitRunner v1.1 o versione successiva. Per abilitarlo, utilizza gcloud firebase test android run con il file
--use-orchestrator flag. Per disabilitarlo utilizzare il flag --no-use-orchestrator .

Puoi anche controllare il modo in cui Test Lab esegue i test della 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 dal tuo APK di test. Puoi anche scoprire se il tuo test fallito era effettivamente instabile o meno utilizzando il flag --num-flaky-test-attempts , che specifica il numero di volte in cui l'esecuzione di un test dovrebbe 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 di copertura del codice per i test di strumentazione

Test Lab supporta gli strumenti di reporting sulla copertura del codice EMMA e JaCoCo . Se uno degli strumenti è integrato nella build della tua app, puoi ottenere un report sulla copertura del codice per i test di Test Lab eseguendo gcloud firebase test android run con alcuni argomenti aggiuntivi. Se Android Test Orchestrator non è abilitato, utilizzare 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 report 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

Una volta che Test Lab termina l'esecuzione dei test, trova i report sulla copertura del codice in Google Cloud Storage:

  1. Apri il collegamento alla console Firebase che lo strumento gcloud ha stampato sopra la tabella dei risultati del test nel tuo terminale.
  2. Fare clic su un'esecuzione di test dall'elenco in quel collegamento per aprire la pagina dei dettagli di tale esecuzione.
  3. Fai clic su Risultati del test per accedere al bucket Cloud Storage con i risultati del test dell'esecuzione.
  4. Apri artifacts/coverage.ec per visualizzare il report sulla copertura del codice.

Analizza i risultati del test

Dopo alcuni minuti, lo strumento gcloud stampa un riepilogo di base dei risultati del test:

Command test results

L'output dell'esecuzione del test dalla 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 .

Login personalizzato e immissione di testo con Robo test

Il test Robo 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 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 usare questo flag per dire a Robo di ignorare specifici elementi 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, potresti utilizzare il seguente parametro per l'accesso personalizzato:

--robo-directives username_resource=username,password_resource=password

Comandi e flag disponibili

La CLI gcloud di Test Lab dispone di diversi comandi e flag che consentono di eseguire test con specifiche diverse:

  • Flag Android Test Orchestrator : un flag per abilitare Orchestrator, uno strumento che ti consente di eseguire ciascuno dei test dell'app nella propria invocazione di Instrumentation . Test Lab esegue sempre la versione più recente di Orchestrator.

  • Flag di test del Game Loop : una serie 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 di partizionamento uniforme (in versione beta) : un flag che specifica il numero di partizioni in cui desideri distribuire uniformemente i casi di test. Gli shard vengono eseguiti in parallelo su dispositivi separati.

  • Flag di sharding manuale (in versione beta) : un flag che specifica un gruppo di pacchetti, classi e/o casi di test da eseguire in uno shard (un gruppo di casi 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 quale profilo di rete utilizza i test con i dispositivi fisici. I profili di rete emulano una serie di condizioni di rete, consentendoti di testare le prestazioni della tua app su reti inaffidabili o imprevedibili.

Creazione di script di comandi gcloud con Test Lab

Puoi utilizzare script di shell o file batch per automatizzare i comandi di test delle app mobili che altrimenti eseguiresti utilizzando la riga di comando gcloud. Il seguente script bash di esempio esegue un test della 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 è possibile utilizzare per comprendere meglio i risultati dei test eseguiti utilizzando script o file batch.

Codici di uscita script per Test Lab

Codice di uscita Appunti
0 Tutte le esecuzioni dei test sono state superate.
1 Si è verificato un guasto generale. Le possibili cause includono: un nome file che non esiste o un errore HTTP/rete.
2 Il test è stato interrotto perché sono stati forniti comandi o argomenti sconosciuti.
10 Uno o più casi di test (classi o metodi di classe testati) all'interno dell'esecuzione del test non sono stati superati.
15 Firebase Test Lab non è riuscito a determinare se la matrice del 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 del test è stata annullata dall'utente.
20 Si è verificato un errore nell'infrastruttura di test.