In diesem Leitfaden wird beschrieben, wie Sie einen Instrumentierungs-, Robo- oder Spielschleifentest mit der gcloud CLI 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
- Google Cloud SDK herunterladen
- 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, wobei PROJECT_ID die ID Ihres Firebase-Projekts ist:
gcloud config set project PROJECT_ID
Dazu gehört auch das gcloud CLI-Tool.
Schritt 2: Verfügbare Testgeräte prüfen
Verwenden Sie die folgenden gcloud-Befehle, um die Testgeräte und Sprachen aufzurufen, die für Ihren Test verfügbar sind.
Optional können Sie auch die Notepad-Beispiel-App herunterladen, um 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: Ruft eine aktuelle Liste der Android-Geräte ab, die für Tests verfügbar sind.gcloud firebase test android models listIn der Befehlsausgabe:
- Die Spalte
MODEL_IDenthält die Kennung, mit der Sie später Tests für das Gerätemodell ausführen können. - Die Spalte
OS_VERSION_IDenthält die vom Gerät unterstützten Betriebssystemversionen.
Beispielausgabe

- Die Spalte
models describe: Weitere Informationen zu einem bestimmten Android-MODEL_IDabrufen.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 Binärschnittstellen (Application Binary Interfaces, ABI), die Veröffentlichungsdaten und die Information, ob es sich um ein physisches oder virtuelles Gerät handelt.
versions list: Ruft eine Liste der derzeit verfügbaren Betriebssystemversionen ab, mit denen Sie testen können.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, mit denen getestet werden soll, nicht angeben, wird die Standardversion verwendet, die in der SpalteTAGSangegeben ist.Beispielausgabe

locales list: Ruft die aktuelle Liste der verfügbaren Sprachen ab, die für Tests verwendet werden können.gcloud firebase test android locales listDie erste Spalte der Befehlsausgabe,
LOCALE, enthält die Kennung, mit der Sie später Tests für eine Sprache ausführen können. Wenn Sie die zu testenden Sprachen nicht angeben, wird Englisch als Standardsprache verwendet.
Schritt 3: Test ausführen
Nachdem Sie nun die Palette der Gerätemodelle, Sprachen und Betriebssystemversionen kennen, die zum Testen Ihrer App verfügbar sind, 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. Der Robo-Test führt eine statische Analyse der verschiedenen Pfade durch die Benutzeroberfläche der App durch und crawlt dann die App, 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 roboist implizit, wenn kein--type-Wert angegeben ist. - Mit dem optionalen Flag
--client-details matrixLabel="Example matrix label"können Sie Ihre Testmatrix mit einem Label versehen, um sie in der Firebase Console leichter zu finden. - Sie können sich alle Befehlszeilenoptionen zum Ausführen von Tests anzeigen lassen, indem Sie
gcloud help firebase test android runeingeben.
Alternativ zur Angabe dieser Argumente in der Befehlszeile können Sie Ihre Argumente 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 Untersuchen 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 auf den angegebenen Android-Gerätekonfigurationen auszuführen. Verwenden Sie den Testtyp instrumentation, um die Tests in app-debug-test-unaligned.apk so 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 Instrumentierungsparameter
--typeist implizit, wenn ein Test-APK mit--testangegeben wird. - Mithilfe des optionalen Flags
--client-details matrixLabel="Example matrix label"können Sie Ihre Testmatrix mit einem Label versehen, um sie in der Firebase Console leichter zu identifizieren und zu finden. - Sie können sich alle Befehlszeilenoptionen zum Ausführen von Tests ansehen, indem Sie
gcloud help firebase test android runeingeben.
Alternativ zur Angabe dieser Argumente in der Befehlszeile können Sie Ihre Argumente 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 den Android Test Orchestrator.
Orchestrator erfordert AndroidJUnitRunner v1.1 oder höher. Verwenden Sie zum Aktivieren gcloud firebase test android run mit dem Flag --use-orchestrator. 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 Ihrer Test-APK verwendet wird. Mit dem Flag --num-flaky-test-attempts können Sie auch herausfinden, ob der fehlgeschlagene Test tatsächlich instabil war oder nicht. Mit diesem Flag wird angegeben, wie oft eine Testausführung wiederholt werden soll, wenn einer oder mehrere der Testfälle aus irgendeinem Grund fehlschlagen. Weitere Informationen finden Sie unter gcloud firebase test android run.
Berichte zur Codeabdeckung für Instrumentierungstests
Test Lab unterstützt die Tools EMMA und JaCoCo für die Berichterstellung zur Codeabdeckung. Wenn Sie eines der beiden Tools in den Build für Ihre App eingebunden haben, können Sie einen Bericht zur Codeabdeckung 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 Berichte zur Codeabdeckung generieren und gleichzeitig Android Test Orchestrator verwenden, ä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 Test Lab die Tests abgeschlossen hat, finden Sie die Berichte zur Codeabdeckung in Google Cloud Storage:
- Öffnen Sie den Firebase-Konsolenlink, den das
gcloud-Tool über der Testergebnistabelle in Ihrem Terminal ausgegeben hat. - Klicken Sie in der Liste unter diesem Link auf eine Testausführung, um die Detailseite dieser Ausführung zu öffnen.
- Klicken Sie auf Testergebnisse, um den Bucket Cloud Storage mit den Testergebnissen dieser Ausführung aufzurufen.
- Öffnen Sie
artifacts/coverage.ec, um den Bericht zur Codeabdeckung aufzurufen.
Testergebnisse analysieren
Nach einigen Minuten wird vom gcloud-Tool eine einfache Zusammenfassung Ihrer Testergebnisse ausgegeben:

Die Ausgabe des Befehlszeilentestlaufs enthält auch einen Link zum Aufrufen der Testergebnisse. Weitere Informationen zur Interpretation dieser Ergebnisse finden Sie unter Firebase Test Lab für Android-Ergebnisse analysieren.
Benutzerdefinierte Anmeldung und Texteingabe mit Robo-Test
Der Robo-Test füllt automatisch Anmeldebildschirme aus, die ein Google-Konto zur Authentifizierung verwenden, es sei denn, Sie verwenden den Parameter --no-auto-google-login. Er kann auch benutzerdefinierte Anmeldebildschirme mit den von Ihnen angegebenen Anmeldedaten für Testkonten ausfüllen. Sie können diesen Parameter auch verwenden, um benutzerdefinierten Eingabetext für andere Textfelder bereitzustellen, die von Ihrer Anwendung verwendet werden.
Wenn Sie Textfelder in Ihrer App ausfüllen möchten, verwenden Sie den Parameter --robo-directives und geben Sie eine durch Kommas getrennte Liste von key-value-Paaren an, wobei key der Android-Ressourcenname des Ziel-UI-Elements und value der Textstring ist. Sie können dieses Flag auch verwenden, um Robo anzuweisen, 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
In der Test Lab gcloud CLI sind mehrere Befehle und Flags verfügbar, mit denen Sie Tests mit unterschiedlichen 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 einem eigenen Aufruf von
Instrumentationausführen können. Test Lab führt immer die aktuelle Version von Orchestrator aus.Test-Flags für Spielschleifen: Eine Reihe von Konfigurations-Flags, die einen „Demomodus“ aktivieren und steuern, um Spieleraktionen in Gaming-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 Testfälle gleichmäßig verteilt werden sollen. 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 Testfällen angibt, 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 Netzwerk-Traffic-Profile (Beta): Ein Flag, das angibt, welches Netzwerkprofil Ihre Tests mit physischen Geräten verwenden. 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 für Tests mobiler Apps zu automatisieren, die Sie sonst über die gcloud-Befehlszeile ausführen würden. Im folgenden Bash-Beispielskript wird ein Instrumentierungstest mit einem Zeitlimit von zwei Minuten ausgeführt und es wird gemeldet, 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, mit denen Sie die Ergebnisse von Tests, die Sie mit Skripts oder Batchdateien ausführen, besser nachvollziehen können.
Skript-Exit-Codes für Test Lab
| Exit-Code | Hinweise |
|---|---|
| 0 | Alle Testausführungen erfolgreich. |
| 1 | Ein allgemeiner Fehler ist aufgetreten. Mögliche Ursachen sind ein nicht vorhandener Dateiname oder ein HTTP-/Netzwerkfehler. |
| 2 | Der Test wurde beendet, weil unbekannte Befehle oder Argumente angegeben wurden. |
| 10 | Mindestens ein Testlauf (getestete Klassen oder Klassenmethoden) innerhalb einer Testausführung ist fehlgeschlagen. |
| 15 | Firebase Test Lab konnte aufgrund eines unerwarteten Fehlers nicht feststellen, ob die Testmatrix bestanden wurde oder nicht. |
| 18 | Die Testumgebung für diese Testausführung wird aufgrund inkompatibler Testdimensionen nicht unterstützt. Dieser Fehler kann auftreten, wenn das ausgewählte Android API-Level 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. |