Inizia a testare con gcloud CLI

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 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 lo hai già fatto, aggiungi Firebase al tuo progetto Android.

Passaggio 1: Configura gcloud CLI

  1. Scarica il Google Cloud SDK
  2. È incluso lo strumento gcloud CLI.

  3. Assicurati che l'installazione sia aggiornata:
    gcloud components update
    
  4. Accedi a gcloud CLI utilizzando il tuo Account Google:
    gcloud auth login
    
  5. Imposta il progetto Firebase in gcloud, dove PROJECT_ID è l'ID del 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 lingue disponibili per il test.

In alternativa, puoi anche scaricare l'app Notepad di esempio per iniziare subito a eseguire i comandi. 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 il test.

    gcloud firebase test android models list

    Nell'output del comando:

    • La colonna MODEL_ID contiene l'identificatore che puoi utilizzare in un secondo momento per eseguire test sul modello di dispositivo.
    • La colonna OS_VERSION_ID contiene le versioni del sistema operativo supportate dal dispositivo.

    Output di esempio

    gcloud firebase test android models list output

  • models describe: ottieni ulteriori informazioni su un'app Android specifica MODEL_ID.

    gcloud firebase test android models describe MODEL_ID

    L'output contiene il brand, il produttore, le versioni del sistema operativo, i livelli API supportati, le ABI (Application Binary Interface) supportate, le date di rilascio e se il dispositivo è fisico o virtuale del modello di dispositivo.

  • versions list: ottieni un elenco delle versioni del sistema operativo attualmente disponibili da testare.

    gcloud firebase test android versions list

    Puoi utilizzare un identificatore di una delle prime due colonne dell'output del comando (OS_VERSION_ID e VERSION) per eseguire in un secondo momento test su una versione del sistema operativo Android. Se non specifichi le versioni del sistema operativo Android su cui eseguire il test, viene utilizzata la versione predefinita indicata nella colonna TAGS.

    Output di esempio

    gcloud android versions list

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

    gcloud firebase test android versions list

    La prima colonna dell'output del comando, LOCALE, contiene l'identificatore che puoi utilizzare in un secondo momento per eseguire test su una locale. 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 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 disponi di test di strumentazione, puoi comunque cercare bug nell'app. Usa il test Robo per eseguire una revisione automatica dell'interfaccia utente della tua app. Il test Robo esegue l'app eseguendo un'analisi statica dei vari percorsi dell'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 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 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. Esegui gcloud topic arg-files per scoprire come utilizzare questa funzionalità.

Per scoprire come esaminare i risultati del test Robo, consulta Analisi dei risultati del test.

Esegui un test di strumentazione

Ora utilizza lo strumento a riga di comando gcloud per eseguire i test Espresso dell'app Blocco note sulle configurazioni del dispositivo Android specificate. Utilizza il 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 misurazione --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. Esegui gcloud topic arg-files per scoprire come utilizzare questa funzionalità.

L'interfaccia a riga di comando gcloud supporta Android Test Orchestrator. Orchestrator richiede AndroidJUnitRunner v1.1 o versioni successive. Per abilitarlo, utilizza gcloud firebase test android run con il flag
--use-orchestrator. Per disattivarla, utilizza il flag --no-use-orchestrator.

Puoi anche controllare la modalità di esecuzione dei test di misurazione da parte di Test Lab utilizzando flag aggiuntivi non mostrati sopra. Ad esempio, puoi utilizzare il flag --test-targets per testare una singola classe o un metodo della classe utilizzato dall'APK di test. Puoi anche scoprire se il test non riuscito era effettivamente instabile o meno utilizzando il flag --num-flaky-test-attempts, che specifica il numero di volte in cui deve essere riprovato l'esecuzione di un test se uno o più casi 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 uno dei due strumenti è integrato nella build dell'app, puoi ricevere un report sulla copertura del codice per i test Test Lab 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 generi report sulla copertura del codice e utilizzi anche Android TestOrchestrator, 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, puoi trovare i report sulla copertura del codice in Google Cloud Storage:

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

Analizzare i risultati del test

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

Risultati del test dei comandi

L'output dell'esecuzione del test della 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 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 test che fornisci. Puoi usare questo parametro anche 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 key è il nome della risorsa Android dell'elemento dell'interfaccia utente di destinazione e value è la stringa di testo. Puoi anche utilizzare questo flag per indicare a Robo di ignorare elementi specifici dell'interfaccia utente (ad es. pulsante "esci"). I campi EditText sono supportati, ma non i campi di testo negli elementi UI di WebView.

Ad esempio, puoi utilizzare il seguente parametro per il login personalizzato:

--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 di eseguire test con specifiche diverse:

  • Flag Android Test Orchestrator: un flag per attivare Orchestrator, uno strumento che ti consente di eseguire ogni test della tua app nella relativa chiamata di Instrumentation. Test Lab esegue sempre la versione più recente 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 del giocatore nelle app di gioco. Scopri di più sull'esecuzione dei test del 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 di suddivisione 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 distinti.

  • 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 simulano una serie di condizioni di rete, consentendoti di testare il rendimento 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 i risultati dei test eseguiti utilizzando script o file batch.

Codici di uscita dello script per Test Lab

Codice di uscita Note
0 Tutte le esecuzioni del test sono state superate.
1 Si è verificato un errore generico. Le possibili cause includono: un nome file che non esiste o un errore HTTP/di rete.
2 Il test è stato chiuso 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 del test non sono stati superati.
15 Firebase Test Lab non è stato possibile determinare se la matrice di test è stata superata o meno a causa di un errore imprevisto.
18 L'ambiente di test per l'esecuzione di questo test non è supportato a causa di dimensioni di test incompatibili. Questo errore può verificarsi se il livello dell'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.