Mit der gcloud CLI testen

In dieser Anleitung wird beschrieben, wie Sie einen Instrumentierungs-, Robo- oder Game Loop-Test mit der gcloud CLI ausführen.

Eine vollständige Liste der gcloud-Befehle, die Sie in Test Lab mit Ihrer Android-App verwenden können, finden Sie in der Referenzdokumentation für gcloud firebase test android.

Hinweis

Falls noch nicht geschehen, fügen Sie Ihrem Android-Projekt Firebase hinzu.

Schritt 1: Die gcloud CLI einrichten

  1. Laden Sie das Google Cloud SDK herunter.
  2. Dazu gehört auch das gcloud-CLI-Tool.

  3. Achten Sie darauf, dass Ihre Installation auf dem neuesten Stand ist:
    gcloud components update
    
  4. Melden Sie sich mit Ihrem Google-Konto in der gcloud CLI an:
    gcloud auth login
    
  5. Legen Sie Ihr Firebase-Projekt in gcloud fest, wobei PROJECT_ID ist ID Ihres Firebase-Projekts:
    gcloud config set project PROJECT_ID
    

Schritt 2: Verfügbare Testgeräte prüfen

Verwenden Sie die folgenden gcloud-Befehle, um Testgeräte und -sprachen aufzurufen, die die für Ihren Test verfügbar sind.

Optional können Sie auch das Beispiel herunterladen Notepad die Befehle sofort auszuführen. Verwenden Sie die Binärdatei app-debug-unaligned.apk und die Datei für Instrumentierungstests app-debug-test-unaligned.apk, die sich in NotePad/app/build/outputs/apk/ befinden.

  • models list: Rufen Sie eine aktuelle Liste der Android-Geräte ab, die zum Testen zur Verfügung stehen zu vergleichen.

    gcloud firebase test android models list

    In der Befehlsausgabe:

    • Die Spalte MODEL_ID enthält die Kennung, die Sie später zum Ausführen von Tests verwenden können auf der Grundlage des Gerätemodells.
    • Spalte OS_VERSION_ID enthält die unterstützten Betriebssystemversionen vom Gerät berechnet wird.

    Beispielausgabe

    gcloud firebase test android model list ausgabe

  • models describe: Weitere Informationen zu einem bestimmten Android-MODEL_ID abrufen.

    gcloud firebase test android models describe MODEL_ID

    Die Ausgabe enthält die Marke, den Hersteller, die Betriebssystemversionen, die unterstützten API-Ebenen, die unterstützten Application Binary Interfaces (ABIs), die Veröffentlichungsdaten und ob es sich um ein physisches oder virtuelles Gerät handelt.

  • versions list: Liste der derzeit verfügbaren Betriebssystemversionen zum Testen abrufen zu vergleichen.

    gcloud firebase test android versions list

    Sie können eine ID aus einer der ersten beiden Spalten der Befehlsausgabe (OS_VERSION_ID und VERSION) verwenden, um später Tests für eine Android-Betriebssystemversion auszuführen. Wenn Sie die zu testenden Android-Betriebssystemversionen nicht angeben, wird die Standardeinstellung in der Spalte TAGS verwendet.

    Beispielausgabe

    gcloud android versions list

  • locales list: Ruft die aktuelle Liste der Sprachen ab, die getestet werden können.

    gcloud firebase test android versions list

    Die erste Spalte der Befehlsausgabe, LOCALE, enthält die Kennzeichnung. mit der Sie später Tests für ein Gebietsschema durchführen können. Wenn Sie keine die Sprachen, die getestet werden sollen, wird Englisch als Standardsprache verwendet.

Schritt 3: Test ausführen

Du kennst jetzt die verfügbaren Gerätemodelle, Sprachen und Betriebssystemversionen. zum Testen deiner App kannst du Geräte über die gcloud firebase test android run-Befehl und die --device-Flag, um Robo- oder Instrumentierungstests auszuführen.

Robo-Test ausführen

Auch wenn Sie keine Instrumentierungstests haben, nach Fehlern in Ihrer App suchen. Führen Sie mit dem Robo-Test eine automatisierte Überprüfung Ihrer der Benutzeroberfläche der App. Beim Robo-Test wird die App durch eine statische Analyse der verschiedenen Pfade durch die Benutzeroberfläche der App die App durchsucht, um Abstürze und andere potenzielle Probleme zu finden.

Führen Sie den folgenden Beispielbefehl aus, um einen Robo-Test auszuführen:

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"
  • Der Parameter --type robo wird implizit verwendet, wenn kein Wert für --type angegeben ist.
  • Damit Sie Ihre Testmatrizen in der Firebase Console ermitteln und finden können, können Sie die optionale --client-details matrixLabel="Example matrix label" um Ihre Testmatrix zu beschriften.
  • Sie können sich den vollständigen Satz der Befehlszeilenoptionen für Geben Sie gcloud help firebase test android run ein, um Tests auszuführen.

Alternativ zur Angabe dieser Argumente in der Befehlszeile können Sie sie auch in einer Argumentdatei im YAML-Format angeben. Ausführen gcloud topic arg-files, um mehr über die Verwendung dieser Funktion zu erfahren.

Informationen zum Untersuchen der Testergebnisse des Robo-Tests finden Sie unter Analysiere deine Testergebnisse.

Instrumentierungstest ausführen

Führen Sie nun mit dem gcloud-Befehlszeilentool die Espresso Tests mit den angegebenen Android-Gerätekonfigurationen durchführen. Verwenden Sie die Methode Testtyp instrumentation zum Ausführen der Tests in app-debug-test-unaligned.apk wie folgt:

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"
  • Der Instrumentierungsparameter --type ist implizit, wenn ein Test-APK angegeben ist mit --test.
  • So können Sie Ihre Testmatrizen in der Firebase-Konsole ermitteln und finden: können Sie den optionalen --client-details matrixLabel="Example matrix label" um Ihre Testmatrix zu beschriften.
  • Sie können sich den vollständigen Satz der Befehlszeilenoptionen für zum Ausführen von Tests durch Eingabe von gcloud help firebase test android run.

Als Alternative zur Angabe dieser Argumente in der Befehlszeile können Sie Optional können Sie Ihre Argumente in einer Argumentdatei im YAML-Format angeben. Ausführen gcloud topic arg-files, um mehr über die Verwendung dieser Funktion zu erfahren.

Die gcloud CLI unterstützt Android Test Orchestrator. Orchestrator erfordert AndroidJUnitRunner v1.1 oder höher. Verwenden Sie zum Aktivieren gcloud firebase test android run mit
--use-orchestrator melden. Verwenden Sie das Flag --no-use-orchestrator, um die Funktion zu deaktivieren.

Sie können auch festlegen, wie Test Lab Ihre Instrumentierungstests ausführt zusätzliche Flags verwenden, die oben nicht aufgeführt sind. Sie können beispielsweise die Methode Das Flag --test-targets zum Testen einer einzelnen Klasse oder einer Klassenmethode, die vom Test verwendet wird APK Sie können auch herausfinden, ob Ihr fehlgeschlagener Test in Wirklichkeit instabil war oder nicht mithilfe des Flags --num-flaky-test-attempts, das die Anzahl der dass eine Testausführung wiederholt werden sollte, wenn mindestens einer der aus irgendeinem Grund scheitern. Weitere Informationen finden Sie unter gcloud firebase test android run.

Berichte zur Codeabdeckung für Instrumentierungstests

Test Lab unterstützt Berichtstools zur Codeabdeckung EMMA und JaCoCo. Wenn Sie eines der beiden Tools die in den Build Ihrer App integriert sind, können Sie einen Bericht zur Codeabdeckung Test Lab-Tests durch Ausführen von gcloud firebase test android run mit einigen zusätzliche Argumente. Wenn Android Test Orchestrator nicht aktiviert ist, gehen Sie so vor:

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

Wenn Sie Codeabdeckungsberichte gleichzeitig mit Android Test generieren Orchestrator an, ändern Sie Ihre Umgebungsvariablen so:

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

Wenn die Tests von Test Lab ausgeführt wurden, rufen Sie die Berichte zur Codeabdeckung ab. in Google Cloud Storage:

  1. Öffnen Sie den Firebase-Konsolenlink, den das gcloud-Tool über der Tabelle mit den Testergebnissen in Ihrem Terminal.
  2. Klicken Sie in der Liste unter diesem Link auf eine Testausführung, um die Detailseite.
  3. Klicken Sie auf Testergebnisse, um den zugehörigen Cloud Storage-Bucket aufzurufen. die Testergebnisse der Ausführung.
  4. Öffnen Sie artifacts/coverage.ec, um den Bericht zur Codeabdeckung aufzurufen.

Testergebnisse analysieren

Nach einigen Minuten wird eine grundlegende Zusammenfassung der Testergebnisse vom gcloud-Tool:

Ergebnisse des Befehlstests

Die Ausgabe des Befehlszeilen-Testlaufs enthält auch einen Link zum Ansehen des Tests Ergebnisse. Weitere Informationen zur Auswertung dieser Ergebnisse finden Sie unter Firebase Test Lab für Android-Ergebnisse analysieren.

Benutzerdefinierte Anmeldung und Texteingabe mit Robo-Test

Durch den Robo-Test werden Anmeldebildschirme, für die ein Google-Konto verwendet wird, automatisch ausgefüllt zur Authentifizierung verwenden, es sei denn, Sie verwenden das --no-auto-google-login . Über ein Testkonto können auch benutzerdefinierte Anmeldebildschirme aufgerufen werden Anmeldedaten verwenden. Mit diesem Parameter können Sie auch benutzerdefinierte Eingabetext für andere von Ihrer App verwendete Textfelder.

Verwenden Sie zum Ausfüllen von Textfeldern in Ihrer App die --robo-directives -Parameter und stellen Sie eine durch Kommas getrennte Liste von key-value-Paaren bereit, wobei der key ist der Android-Ressourcenname des Ziel-UI-Elements und value ist die Textzeichenfolge. Mit diesem Flag können Sie Robo auch anweisen, bestimmte UI-Elemente zu ignorieren (z. B. „logout“ Schaltfläche). EditText Felder in WebView-UI-Elementen werden unterstützt, jedoch keine Textfelder.

Beispielsweise könnten Sie den folgenden Parameter für benutzerdefinierte Log-in:

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

Verfügbare Befehle und Flags

Für die gcloud-Befehlszeile Test Lab sind mehrere Befehle und Flags verfügbar, mit denen Sie Tests mit unterschiedlichen Spezifikationen durchführen:

  • Android Test Orchestrator-Flag: Ein Flag zum Aktivieren von Orchestrator ein Tool, mit dem Sie Ihre die Tests der App in einem eigenen Aufruf von Instrumentation ausführen. Test Lab immer führt die neueste Version von Orchestrator aus.

  • Flags für Spielschleifentests: Eine Reihe von Konfigurations-Flags, die eine „Demo“ aktivieren und steuern Modus um Spieleraktionen in Spiele-Apps zu simulieren. Weitere Informationen zum Ausführen Spielschleifentests mit Test Lab.

  • Uniform Sharding-Flag (in der Betaversion): Ein Flag, das die Anzahl der Shards angibt, auf die gleichmäßig verteilt werden soll. Testläufe zu verteilen. Die Shards werden parallel auf separaten Geräten ausgeführt.

  • Flag für manuelle Fragmentierung (in der Betaversion): Flag, das eine Gruppe von Paketen, Klassen und/oder Testfällen angibt, die ausgeführt werden sollen in einem Shard (einer Gruppe von Testläufen). Die Shards werden parallel auf auf separaten Geräten.

  • Flag „Netzwerk-Traffic-Profile“ (in der Betaversion): Ein Flag, das angibt, welches Netzwerkprofil Ihre Tests mit physischen Geräte. Netzwerkprofile emulieren eine Vielzahl von Netzwerkbedingungen, die Leistung Ihrer App in unzuverlässigen oder unvorhersehbaren Netzwerken zu testen.

gcloud-Befehle mit Test Lab in Skripts verwenden

Du kannst Shell-Scripts oder Batch-Dateien verwenden, um die Befehle zum Testen mobiler Apps zu automatisieren die Sie sonst über die gcloud-Befehlszeile ausführen würden. Die folgenden Das Beispiel-Bash-Skript führt einen Instrumentierungstest mit einem Zeitlimit von zwei Minuten aus und gibt an, ob der Testlauf erfolgreich abgeschlossen wurde:

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

Script-Exit-Codes

Test Lab bietet mehrere Exit-Codes, die Sie für ein besseres Verständnis des Ergebnisse von Tests, die Sie mit Skripts oder Batch-Dateien ausführen.

Scripting-Exit-Codes für Test Lab

Exit-Code Hinweise
0 Alle Testausführungen wurden bestanden.
1 Ein allgemeiner Fehler ist aufgetreten. Mögliche Ursachen: ein Dateiname, der nicht vorhanden ist oder ein HTTP-/Netzwerkfehler aufgetreten ist.
2 Der Test wurde beendet, da unbekannte Befehle oder Argumente angegeben wurden.
10 Ein oder mehrere Testfälle (getestete Klassen oder Klassenmethoden) innerhalb eines Tests die Ausführung war nicht erfolgreich.
15 Firebase Test Lab konnte nicht feststellen, ob die Testmatrix bestanden oder ist aufgrund eines unerwarteten Fehlers fehlgeschlagen.
18 Die Testumgebung für diese Testausführung wird aus folgendem Grund nicht unterstützt: nicht kompatible Testdimensionen. Dieser Fehler kann auftreten, wenn die ausgewählte Android API Stufe wird vom ausgewählten Gerätetyp nicht unterstützt.
19 Die Testmatrix wurde vom Benutzer abgebrochen.
20 Beim Testen der Infrastruktur ist ein Fehler aufgetreten.