In dieser Anleitung wird beschrieben, wie Sie mit der gcloud CLI einen Instrumentierungs-, Robo- oder Spielschleifentest ausführen.
Eine vollständige Liste der gcloud-Befehle, die Sie mit Ihrer Android-App in Test Lab 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
- Laden Sie das Google Cloud SDK herunter.
- Prüfen Sie, ob Ihre Installation auf dem neuesten Stand ist:
gcloud components update
- Melden Sie sich mit Ihrem Google-Konto in der gcloud CLI an:
gcloud auth login
- Legen Sie Ihr Firebase-Projekt in gcloud fest. Dabei ist PROJECT_ID die ID Ihres Firebase-Projekts:
gcloud config set project PROJECT_ID
Dazu gehört auch das gcloud CLI-Tool.
Schritt 2: Verfügbare Testgeräte prüfen
Mit den folgenden gcloud-Befehlen können Sie Testgeräte und Gebietsschemas aufrufen, die für Ihren Test verfügbar sind.
Optional können Sie auch die Beispiel-
App „Notepad“ herunterladen, um die Befehle sofort auszuführen. Verwenden Sie die Binärdatei app-debug-unaligned.apk und die Datei mit den 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 für Tests zur Verfügung stehen.gcloud firebase test android models listIn der Befehlsausgabe:
- Die Spalte
MODEL_IDenthält die Kennung, mit der Sie später Tests auf dem Gerätemodell ausführen können. - Die Spalte
OS_VERSION_IDenthält die vom Gerät unterstützten Betriebssystemversionen.
Beispielausgabe

- Die Spalte
models describe: Rufen Sie weitere Informationen zu einer bestimmten Android-MODEL_IDab.gcloud firebase test android models describe MODEL_IDDie Ausgabe enthält die Marke, den Hersteller, die Betriebssystemversionen, die unterstützten API-Ebenen, die unterstützten Application Binary Interfaces (ABI), die Veröffentlichungsdaten und Informationen dazu, ob das Gerät physisch oder virtuell ist.
versions list: Rufen Sie eine Liste der derzeit verfügbaren Betriebssystemversionen ab, die für Tests zur Verfügung stehen.gcloud firebase test android versions listSie können eine Kennung aus einer der ersten beiden Spalten der Befehlsausgabe (
OS_VERSION_IDundVERSION) verwenden, um später Tests für eine Android-Betriebssystemversion auszuführen. Wenn Sie die Android-Betriebssystemversionen, die für Tests zur Verfügung stehen, nicht angeben, wird die Standardversion verwendet, die in der SpalteTAGSangegeben ist.Beispielausgabe

locales list: Rufen Sie die aktuelle Liste der Gebietsschemas ab, die für Tests zur Verfügung stehen.gcloud firebase test android locales listDie erste Spalte der Befehlsausgabe,
LOCALE, enthält die Kennung, mit der Sie später Tests für ein Gebietsschema ausführen können. Wenn Sie die Gebietsschemas, die für Tests zur Verfügung stehen, nicht angeben, wird Englisch als Standardgebietsschema verwendet.
Schritt 3: Test ausführen
Nachdem Sie nun die verfügbaren Gerätemodelle, Gebietsschemas und Betriebssystemversionen für das Testen Ihrer App kennen, können Sie Geräte mit dem Befehl gcloud firebase test android run und dem Flag --device angeben, um Robo- oder Instrumentierungstests auszuführen.
Robo-Test ausführen
Auch wenn Sie keine Instrumentierungstests haben, können Sie nach Fehlern in Ihrer App suchen. Verwenden Sie den Robo-Test, um eine automatisierte Überprüfung der Benutzeroberfläche Ihrer App durchzuführen. Beim Robo-Test wird die App ausgeführt, indem eine statische Analyse der verschiedenen Pfade durch die Benutzeroberfläche der App durchgeführt und dann die App durchsucht wird, 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
--type roboParameter ist implizit, wenn kein--type-Wert angegeben ist. - Damit Sie Ihre Testmatrizen in der Firebase Console leichter identifizieren und finden können,
können Sie Ihre Testmatrix mit dem optionalen
--client-details matrixLabel="Example matrix label"Flag kennzeichnen. - Die vollständige Liste der Befehlszeilenoptionen zum Ausführen von Tests finden Sie unter
gcloud help firebase test android run.
Alternativ zur Angabe dieser Argumente in der Befehlszeile können Sie sie optional in einer YAML-formatierten Argumentdatei angeben. Führen Sie gcloud topic arg-files aus, um zu erfahren, wie Sie diese Funktion verwenden.
Informationen zum Analysieren der Testergebnisse des Robo-Tests finden Sie unter Testergebnisse analysieren.
Instrumentierungstest ausführen
Verwenden Sie jetzt das gcloud-Befehlszeilentool, um die Espresso-Tests der Notepad-App in den von Ihnen angegebenen Android-Gerätekonfigurationen auszuführen. Verwenden Sie den Testtyp instrumentation, um die Tests in app-debug-test-unaligned.apk wie folgt auszuführen:
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 Parameter
--typeinstrumentation ist implizit, wenn mit--testein Test-APK angegeben wird. - Damit Sie Ihre Testmatrizen in der Firebase Console,
leichter identifizieren und finden können,
--client-details matrixLabel="Example matrix label"können Sie Ihre Testmatrix mit dem optionalen Flag kennzeichnen. - Die vollständige Liste der Befehlszeilenoptionen zum Ausführen von Tests finden Sie unter
gcloud help firebase test android run.
Alternativ zur Angabe dieser Argumente in der Befehlszeile können Sie sie optional in einer YAML-formatierten Argumentdatei angeben. Führen Sie gcloud topic arg-files aus, um zu erfahren, wie Sie diese Funktion verwenden.
Die gcloud CLI unterstützt Android Test Orchestrator.
Orchestrator erfordert AndroidJUnitRunner v1.1 oder höher. Verwenden Sie
gcloud firebase test android run mit dem --use-orchestrator
Flag, um es zu aktivieren. Verwenden Sie das Flag --no-use-orchestrator, um es zu deaktivieren.
Sie können auch steuern, wie Test Lab Ihre Instrumentierungstests ausführt
indem Sie zusätzliche Flags verwenden, die oben nicht aufgeführt sind. Mit dem Flag --test-targets können Sie beispielsweise eine einzelne Klasse oder eine Klassenmethode testen, die von Ihrem Test-APK verwendet wird. Mit dem Flag --num-flaky-test-attempts können Sie auch herausfinden, ob Ihr fehlgeschlagener Test tatsächlich fehlerhaft war. Dieses Flag gibt an, wie oft die Testausführung wiederholt werden soll, wenn mindestens einer der Testfälle aus irgendeinem Grund fehlschlägt. Weitere Informationen finden Sie unter gcloud firebase test android run.
Codeabdeckungsberichte für Instrumentierungstests
Test Lab unterstützt die Codeabdeckungstools
EMMA und
JaCoCo. Wenn eines der Tools
in den Build Ihrer App integriert ist, können Sie einen Codeabdeckungsbericht für
Test Lab Tests abrufen, indem Sie gcloud firebase test android run mit einigen
zusätzlichen Argumenten ausführen. Wenn Android Test Orchestrator nicht aktiviert ist, verwenden Sie Folgendes:
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 erstellen und gleichzeitig Android Test Orchestrator verwenden, ändern Sie die Umgebungsvariablen wie folgt:
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 Test Lab die Ausführung Ihrer Tests abgeschlossen hat, finden Sie die Codeabdeckungsberichte in Google Cloud Storage:
- Öffnen Sie den Firebase Konsolenlink, den das
gcloudTool in Ihrem Terminal über der Tabelle mit den Testergebnissen ausgegeben hat. - Klicken Sie in der Liste auf eine Testausführung, um die Detailseite dieser Ausführung zu öffnen.
- Klicken Sie auf Testergebnisse , um zum Cloud Storage Bucket mit den Testergebnissen dieser Ausführung zu gelangen.
- Öffnen Sie
artifacts/coverage.ec, um den Codeabdeckungsbericht aufzurufen.
Testergebnisse analysieren
Nach einigen Minuten wird vom gcloud-Tool eine grundlegende Zusammenfassung der Testergebnisse ausgegeben:

Die Ausgabe Ihres Befehlszeilentests enthält auch einen Link zum Aufrufen der Testergebnisse. Weitere Informationen zum Interpretieren dieser Ergebnisse finden Sie unter Analysieren Firebase Test Lab für Android-Ergebnisse.
Benutzerdefinierte Anmeldung und Texteingabe mit Robo-Test
Beim Robo-Test werden Anmeldebildschirme, die ein Google-Konto
zur Authentifizierung verwenden, automatisch ausgefüllt, es sei denn, Sie verwenden den
--no-auto-google-login
Parameter. Benutzerdefinierte Anmeldebildschirme können auch mit Anmeldedaten für Testkonten ausgefüllt werden, die Sie angeben. Mit diesem Parameter können Sie auch benutzerdefinierten Eingabetext für andere Textfelder angeben, die von Ihrer App verwendet werden.
Verwenden Sie den
--robo-directives
Parameter und geben Sie eine durch Kommas getrennte Liste von key-value Paaren an, um Textfelder in Ihrer App auszufüllen. Dabei ist das
key der Android-Ressourcenname des Ziel-UI-Elements und das value ist
der Textstring. Mit diesem Flag können Sie Robo auch anweisen, bestimmte UI-Elemente zu ignorieren (z.B. die Schaltfläche „Abmelden“).
EditText
-Felder werden unterstützt, Textfelder in WebView-UI-Elementen jedoch nicht.
Sie können beispielsweise den folgenden Parameter für die benutzerdefinierte Anmeldung verwenden:
--robo-directives username_resource=username,password_resource=password
Verfügbare Befehle und Flags
Die Test Lab gcloud CLI bietet mehrere Befehle und Flags, mit denen Sie Tests mit verschiedenen Spezifikationen ausführen können:
Flag für Android Test Orchestrator: Ein Flag zum Aktivieren von Orchestrator, einem Tool, mit dem Sie jeden Test Ihrer App in einer eigenen Instanz von
Instrumentationausführen können. Test Lab führt immer die neueste Version von Orchestrator aus.Flags für Spielschleifentests: Eine Reihe von Konfigurationsflags, mit denen ein "Demomodus" aktiviert und gesteuert wird, um Spieleraktionen in Spiele-Apps zu simulieren. Weitere Informationen zum Ausführen von Spielschleifentests mit Test Lab.
Flag für einheitliches Sharding (Beta): Ein Flag, mit dem die Anzahl der Shards angegeben wird, auf die Sie Testfälle gleichmäßig verteilen möchten. Die Shards werden parallel auf separaten Geräten ausgeführt.
Flag für manuelles Sharding (Beta): Ein Flag, mit dem eine Gruppe von Paketen, Klassen und/oder Testfällen angegeben wird, die in einem Shard (einer Gruppe von Testfällen) ausgeführt werden sollen. Die Shards werden parallel auf separaten Geräten ausgeführt.
Flag für Netzwerkverkehrsprofile (Beta): Ein Flag, mit dem angegeben wird, welches Netzwerkprofil von Ihren Tests mit physischen Geräten verwendet wird. Netzwerkprofile emulieren verschiedene Netzwerkbedingungen, sodass Sie die Leistung Ihrer App in unzuverlässigen oder unvorhersehbaren Netzwerken testen können.
gcloud-Befehle mit Test Lab in Skripts verwenden
Sie können Shell-Skripts oder Batchdateien verwenden, um Befehle zum Testen von mobilen Apps zu automatisieren, die Sie sonst über die gcloud-Befehlszeile ausführen würden. Das folgende Bash-Skript führt einen Instrumentierungstest mit einem Zeitlimit von zwei Minuten aus und meldet, 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
Exit-Codes für Skripts
Test Lab bietet mehrere Exit-Codes, mit denen Sie die Ergebnisse von Tests, die Sie mit Skripts oder Batchdateien ausführen, besser nachvollziehen können.
Exit-Codes für Skripts für Test Lab
| Exit-Code | Hinweise |
|---|---|
| 0 | Alle Testausführungen wurden erfolgreich abgeschlossen. |
| 1 | Ein allgemeiner Fehler ist aufgetreten. Mögliche Ursachen: Eine Datei ist nicht vorhanden oder ein HTTP-/Netzwerkfehler. |
| 2 | Der Test wurde beendet, da unbekannte Befehle oder Argumente angegeben wurden. |
| 10 | Mindestens ein Testfall (getestete Klassen oder Klassenmethoden) in einer Testausführung ist fehlgeschlagen. |
| 15 | Firebase Test Lab konnte aufgrund eines unerwarteten Fehlers nicht feststellen, ob die Testmatrix erfolgreich war oder fehlgeschlagen ist. |
| 18 | Die Testumgebung für diese Testausführung wird aufgrund inkompatibler Testdimensionen nicht unterstützt. Dieser Fehler kann auftreten, wenn die ausgewählte Android API-Ebene vom ausgewählten Gerätetyp nicht unterstützt wird. |
| 19 | Die Testmatrix wurde vom Nutzer abgebrochen. |
| 20 | Es ist ein Fehler in der Testinfrastruktur aufgetreten. |