Google is committed to advancing racial equity for Black communities. See how.
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Inizia il test con la CLI di gcloud

Firebase Test Lab fornisce un'infrastruttura basata su cloud per testare le app Android, inclusa la piena integrazione con l' interfaccia a riga di comando (CLI) di gcloud. Questo documento copre l'installazione e la configurazione necessarie per iniziare a utilizzare Test Lab dalla CLI di gcloud.

Per un elenco completo dei comandi di gcloud che puoi utilizzare con la tua app Android in Test Lab, visita la documentazione di riferimento per gcloud firebase test android .

Se non hai un progetto Firebase per la tua app, vai alla console Firebase e fai clic su Crea nuovo progetto per crearne uno ora. Avrai bisogno della proprietà o delle autorizzazioni di modifica nel tuo progetto.

Configura la CLI di gcloud

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

  3. Assicurati che l'installazione sia aggiornata:
    gcloud components update
    
  4. Accedi alla CLI di 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
    

Configura il tuo test

In questo esempio, eseguirai alcuni test su una semplice app Android per prendere appunti chiamata Blocco note.

  1. Scarica il file APK binario per l'app Blocco note ( app-debug-unaligned.apk ) e i relativi test di strumentazione ( app-debug-test-unaligned.apk ) forniti nella cartella NotePad / app / build / output / apk / del blocco note .zip .

  2. Ottieni l'elenco corrente dei dispositivi Android disponibili per il test, come segue:

    
    $ gcloud firebase test android models list
    
    gcloud firebase test android models list output La prima colonna dell'output del comando, MODEL_ID , contiene l'identificatore che è possibile utilizzare in seguito per eseguire i test su un modello specifico. La colonna OS_VERSION_ID elenca le versioni del sistema operativo supportate da quel dispositivo. Se non specifichi su quale MODEL_ID eseguire il test, viene utilizzato il valore predefinito indicato nella colonna TAGS .

  3. Scopri di più su uno specifico MODEL_ID Android con il firebase test android models describe , come segue:

    
    $ gcloud firebase test android models describe Nexus5
    
    Il comando di esempio mostrato sopra fornisce informazioni dettagliate sul modello Nexus5 , inclusi marca, produttore e livelli API supportati e se il modello è fisico o virtuale.

  4. Ottieni l'elenco corrente delle versioni del sistema operativo Android disponibili per il test:

    
    $ gcloud firebase test android versions list
    
    gcloud android versions list È possibile utilizzare un identificatore da una delle prime due colonne dell'output del comando ( OS_VERSION_ID e VERSION ), 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 utilizzato il valore predefinito indicato nella colonna TAGS .

  5. Ottieni l'elenco corrente delle impostazioni locali disponibili per il test:

    
    $ gcloud firebase test android locales list
    
    La prima colonna dell'output del comando, LOCALE , contiene l'identificatore che puoi utilizzare in seguito per eseguire i test su una locale. Se non specifichi le impostazioni internazionali su cui eseguire il test, l'inglese viene utilizzato come lingua predefinita. L'output del comando non viene mostrato qui perché sono disponibili centinaia di impostazioni locali.

Esecuzione di test

Ora che conosci la gamma di modelli di dispositivo, versioni del sistema operativo e impostazioni locali disponibili per il test della tua app, puoi utilizzare tali informazioni per specificare i dispositivi di prova utilizzando il gcloud firebase test android run e il flag --device . Questo comando e flag vengono utilizzati se stai utilizzando il test Robo per testare automaticamente la tua app o se stai eseguendo test di strumentazione scritti specificamente per testare la tua app.

Esecuzione del test Robo

Anche se non hai test di strumentazione, puoi comunque cercare bug nella tua app. Utilizza il test Robo per eseguire la revisione automatica dell'interfaccia utente della tua app. Il test Robo esercita l'app eseguendo un'analisi statica dei vari percorsi attraverso l'interfaccia utente dell'app, quindi scansionando l'app per trovare arresti anomali e altri potenziali problemi.

Cominciamo eseguendo un 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

Il parametro --type robo è implicito se non viene specificato alcun valore --type . 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 tutti questi argomenti sulla riga di comando, puoi facoltativamente specificare i tuoi argomenti in un file di argomenti in formato YAML. Esegui i gcloud topic arg-files per imparare a utilizzare questa funzione.

Consulta la sezione Analizza i risultati del tuo test per scoprire come analizzare i risultati del test dal Robo test.

Esecuzione dei test di strumentazione

Ora utilizza lo strumento della riga di comando gcloud per eseguire i test Espresso dell'app Blocco note sulle configurazioni del dispositivo Android specificate, utilizzando il tipo di test di 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

Il parametro di --type instrumentation è implicito se un APK di prova è stato specificato con --test . In alternativa alla specifica di tutti questi argomenti sulla riga di comando, puoi facoltativamente specificare i tuoi argomenti in un file di argomenti in formato YAML. Esegui i gcloud topic arg-files per imparare a utilizzare questa funzione.

La CLI di gcloud supporta Android Test Orchestrator . Orchestrator richiede AndroidJUnitRunner v1.0 o versioni successive. Per abilitarlo, usa gcloud firebase test android run con il
--use-orchestrator flag --use-orchestrator . Per disabilitarlo usa il flag --no-use-orchestrator .

Nota: 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 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 -tempt', 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 falliscono per qualsiasi motivo. Per saperne di più, vedi gcloud firebase test Android run .

Report sulla copertura del codice per i test di strumentazione

Test Lab supporta gli strumenti di report sulla copertura del codice EMMA e JaCoCo . Se uno degli strumenti è integrato nella build per la tua app, puoi ottenere un rapporto sulla copertura del codice per i test di Test Lab eseguendo il gcloud firebase test android run con i seguenti argomenti:

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/coverage.ec" \
  --directories-to-pull /sdcard

Quando Test Lab termina di eseguire i test, trova i rapporti sulla copertura del codice in Google Cloud Storage:

  1. Apri il link della console Firebase che lo strumento gcloud 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 passare al bucket di Google Cloud Storage con i risultati del test di tale esecuzione.
  4. Apri artifacts/coverage.ec per vedere il tuo report sulla copertura del codice.

Analizza i risultati del test

Dopo alcuni minuti, un riepilogo di base dei risultati del test viene stampato dallo strumento gcloud:

Command test results

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 input 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"). EditText 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 di gcloud Test Lab ha diversi comandi e flag disponibili che consentono di eseguire test con specifiche diverse:

  • Flag di Android Test Orchestrator : un flag per abilitare Orchestrator, uno strumento che ti consente di eseguire ciascuno dei test della tua app nella propria chiamata di Instrumentation . Test Lab esegue sempre l'ultima versione di Orchestrator.

  • Flag di test di Game Loop : una serie di flag di configurazione che abilitano e controllano una "modalità demo" per simulare le azioni dei giocatori nelle app di gioco. Ulteriori informazioni sull'esecuzione dei test Game Loop con Test Lab .

  • Flag Uniform Sharding (in beta) : un flag che specifica il numero di frammenti in cui si desidera distribuire uniformemente i casi di test. I frammenti vengono eseguiti in parallelo su dispositivi separati.

  • Flag di partizionamento manuale (in 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). I frammenti vengono eseguiti in parallelo su dispositivi separati.

  • Flag dei profili di traffico di rete (in 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 dei comandi di gcloud con Test Lab

Puoi utilizzare script della shell o file batch per automatizzare i comandi di test delle app mobili che altrimenti eseguiresti utilizzando la riga di comando di 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 è 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 di 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 è 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 di test non è supportato a causa di dimensioni di test incompatibili. Questo errore potrebbe verificarsi se il livello di 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.