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. PROJECT_ID ist
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 ID, 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 ID 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 ID, 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 Standardsprache verwendet.
Schritt 3: Test ausführen
Nachdem Sie nun die Gerätemodelle, Gebietsschemas und Betriebssystemversionen kennen, die für Tests Ihrer App zur Verfügung stehen, 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 mit dem optionalen
--client-details matrixLabel="Example matrix label"Flag Ihre Testmatrix 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--testeine Test-APK angegeben wird. - Damit Sie Ihre Testmatrizen in der Firebase Console,
können Sie mit dem optionalen
--client-details matrixLabel="Example matrix label"Flag Ihre Testmatrix 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 mit zusätzlichen Flags steuern, wie Test Lab Ihre Instrumentierungstests ausführt. Mit dem Flag --test-targets können Sie beispielsweise eine einzelne Klasse oder eine Klassenmethode testen, die von Ihrer 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 Testläufe aus irgendeinem Grund fehlschlägt. Weitere Informationen finden Sie unter gcloud firebase test android run.
Codeabdeckungsberichte für Instrumentierungstests
Test Lab unterstützt die Tools zur Codeabdeckung
EMMA und
JaCoCo. Wenn Sie eines der Tools
in den Build Ihrer App integriert haben, 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 Ihre 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 Ihre 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 Ihren Codeabdeckungsbericht zu sehen.
Testergebnisse analysieren
Nach einigen Minuten wird vom gcloud-Tool eine grundlegende Zusammenfassung Ihrer 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 von 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 den von Ihnen angegebenen Anmeldedaten für Testkonten ausgefüllt werden. 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. Der
key ist der Android-Ressourcenname des Ziel-UI-Elements und der 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:
Android Test Orchestrator-Flag: Ein Flag zum Aktivieren von Orchestrator, einem Tool, mit dem Sie jeden Test Ihrer App in einer eigenen Aufrufung 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, das die Anzahl der Shards angibt, auf die Sie Testläufe gleichmäßig verteilen möchten. Die Shards werden parallel auf separaten Geräten ausgeführt.
Flag für manuelles Sharding (Beta): Ein Flag, das eine Gruppe von Paketen, Klassen und/oder Testläufen angibt, die in einem Shard (einer Gruppe von Testläufen) ausgeführt werden sollen. Die Shards werden parallel auf separaten Geräten ausgeführt.
Flag für Netzwerkverkehrsprofile (Beta): Ein Flag, das angibt, 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 erfolgreich. |
| 1 | Ein allgemeiner Fehler ist aufgetreten. Mögliche Ursachen: Eine nicht vorhandene Datei oder ein HTTP-/Netzwerkfehler. |
| 2 | Der Test wurde beendet, da unbekannte Befehle oder Argumente angegeben wurden. |
| 10 | Mindestens ein Testlauf (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 | Ein Fehler in der Testinfrastruktur ist aufgetreten. |