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 mit Ihrer Android-App in Test Lab verwenden können, finden Sie in der Referenzdokumentation für gcloud firebase test android
.
Hinweis
Fügen Sie Ihrem Android-Projekt Firebase hinzu, falls noch nicht geschehen.
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. Dabei steht PROJECT_ID für 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 sich Testgeräte und -sprachen ansehen, die für Ihren Test verfügbar sind.
Alternativ können Sie auch die Beispiel-Notiz-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
: Aktuelle Liste der Android-Geräte abrufen, auf denen Sie testen könnengcloud firebase test android models list
In der Befehlsausgabe:
- Spalte
MODEL_ID
enthält die Kennung, mit der Sie später Tests auf dem Gerätemodell ausführen können. - Spalte
OS_VERSION_ID
enthält die vom Gerät unterstützten Betriebssystemversionen.
Beispielausgabe
- Spalte
models describe
: Hier finden Sie weitere Informationen zu einer bestimmten Android-MODEL_ID
.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 abrufen, mit denen getestet werden sollgcloud firebase test android versions list
Sie können eine ID aus einer der ersten beiden Spalten der Befehlsausgabe (
OS_VERSION_ID
undVERSION
) 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 SpalteTAGS
verwendet.Beispielausgabe
locales list
: Aktuelle Liste der verfügbaren Sprachen für Tests abrufengcloud firebase test android versions list
Die 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 keine zu testenden Sprachen angeben, wird Englisch als Standardsprache verwendet.
Schritt 3: Test ausführen
Nachdem Sie nun wissen, welche Gerätemodelle, Sprachen und Betriebssystemversionen für das Testen Ihrer App verfügbar sind, können Sie mit dem Befehl gcloud firebase test android run
und dem Flag --device
Geräte 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 die Benutzeroberfläche Ihrer App automatisch zu überprüfen. Beim Robo-Test wird die App durch eine statische Analyse der verschiedenen Pfade durch die Benutzeroberfläche der App getestet. Anschließend wird die App gecrawlt, um Abstürze und andere potenzielle Probleme zu finden.
Führen Sie zum Ausführen eines Robo-Tests den folgenden Beispielbefehl aus:
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
ist implizit, wenn kein--type
-Wert angegeben ist. - Damit Sie Ihre Testmatrizen in der Firebase Console leichter finden, können Sie sie mit dem optionalen Flag
--client-details matrixLabel="Example matrix label"
kennzeichnen. - Die vollständigen Befehlszeilenoptionen zum Ausführen von Tests sehen Sie, wenn Sie
gcloud help firebase test android run
eingeben.
Alternativ zur Angabe dieser Argumente in der Befehlszeile können Sie sie auch in einer Argumentdatei im YAML-Format angeben. Führen Sie gcloud topic arg-files
aus, um mehr über die Verwendung dieser Funktion zu erfahren.
Informationen zum Prüfen der Testergebnisse des Robo-Tests finden Sie unter Testergebnisse analysieren.
Instrumentierungstest ausführen
Führen Sie jetzt mit dem gcloud
-Befehlszeilentool die Espresso-Tests der Notiz-App auf den angegebenen Android-Gerätekonfigurationen aus. 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 Parameter
--type
ist implizit, wenn ein Test-APK mit--test
angegeben wird. - Damit Sie Ihre Testmatrizen in der Firebase-Konsole leichter finden, können Sie sie mit dem optionalen
--client-details matrixLabel="Example matrix label"
-Flag kennzeichnen. - Wenn Sie
gcloud help firebase test android run
eingeben, werden alle Befehlszeilenoptionen zum Ausführen von Tests angezeigt.
Alternativ zur Angabe dieser Argumente in der Befehlszeile können Sie sie auch in einer Argumentdatei im YAML-Format angeben. Führen Sie gcloud topic arg-files
aus, um mehr über die Verwendung dieser Funktion zu erfahren.
Die gcloud CLI unterstützt den Android Test Orchestrator.
Für Orchestrator ist AndroidJUnitRunner 1.1 oder höher erforderlich. Verwenden Sie gcloud firebase test android run
mit dem Flag --use-orchestrator
, um die Funktion zu aktivieren. Verwenden Sie das Flag --no-use-orchestrator
, um die Funktion zu deaktivieren.
Mithilfe zusätzlicher Flags, die oben nicht aufgeführt sind, können Sie auch 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 in Ihrer Test-APK verwendet wird. Mit dem Flag --num-flaky-test-attempts
können Sie auch herausfinden, ob Ihr fehlgeschlagener Test tatsächlich instabil war. Mit diesem Flag wird angegeben, wie oft eine Testausführung wiederholt werden soll, wenn einer oder mehrere 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 zur Berichterstellung zur Codeabdeckung EMMA und JaCoCo. Wenn Sie eines der beiden Tools in den Build Ihrer App eingebunden 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, 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 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 unter 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 grundlegende Zusammenfassung Ihrer Testergebnisse ausgegeben:
Die Ausgabe des Befehlszeilentests enthält auch einen Link zum Ansehen der Testergebnisse. Weitere Informationen zur Auswertung dieser Ergebnisse finden Sie unter Firebase Test Lab für Android-Ergebnisse analysieren.
Benutzerdefinierte Anmeldung und Texteingabe mit Robo-Test
Beim Robo-Test werden Anmeldebildschirme, bei denen für die Authentifizierung ein Google-Konto verwendet wird, automatisch abgeschlossen, es sei denn, Sie verwenden den Parameter --no-auto-google-login
. Er kann auch benutzerdefinierte Anmeldebildschirme mit von Ihnen bereitgestellten Anmeldedaten für Testkonten ausfüllen. Mit diesem Parameter können Sie auch benutzerdefinierten Eingabetext für andere Textfelder in Ihrer App angeben.
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. Dabei ist key
der Android-Ressourcenname des Ziel-UI-Elements und value
der Textstring. Mit diesem Flag können Sie Robo auch anweisen, bestimmte UI-Elemente zu ignorieren (z.B. „Abmelden“).
EditText
-Felder werden unterstützt, aber keine Textfelder in WebView
-UI-Elementen.
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-Befehlszeile bietet mehrere Befehle und Flags, mit denen Sie Tests mit unterschiedlichen Spezifikationen ausführen können:
Android Test Orchestrator-Flag: Mit dieser Flag wird Orchestrator aktiviert, ein Tool, mit dem Sie die Tests Ihrer App in einer eigenen Aufrufinstanz von
Instrumentation
ausführen können. Auf Test Lab wird immer die neueste Version von Orchestrator ausgeführt.Test-Flags für die Spielschleife: Mit diesen Konfigurations-Flags können Sie einen „Demomodus“ aktivieren und steuern, um Spieleraktionen in Spiele-Apps zu simulieren. Weitere Informationen zum Ausführen von Spielschleifentests mit Test Lab
Flag für einheitliches Sharding (in Beta): Mit diesem Flag wird die Anzahl der Shards angegeben, 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 (in Beta): Mit diesem Flag wird eine Gruppe von Paketen, Klassen und/oder Testfällen angegeben, 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): Mit diesem Flag wird angegeben, welches Netzwerkprofil für Ihre Tests auf physischen Geräten verwendet wird. Netzwerkprofile emulieren verschiedene Netzwerkbedingungen, sodass Sie die Leistung Ihrer App in unzuverlässigen oder unberechenbaren Netzwerken testen können.
gcloud-Befehle mit Test Lab in Skripts verwenden
Mit Shell-Scripts oder Batchdateien können Sie Befehle für mobile App-Tests automatisieren, die Sie sonst über die gcloud-Befehlszeile ausführen würden. Im folgenden Beispiel-Bash-Script wird ein Instrumentierungstest mit einer Zeitüberschreitung von zwei Minuten ausgeführt und es wird gemeldet, ob der Test 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 Beendigungscodes, mit denen Sie die Ergebnisse von Tests besser nachvollziehen können, die Sie mit Scripts oder Batchdateien ausführen.
Scripting-Endcodes für Test Lab
Exit-Code | Hinweise |
---|---|
0 | Alle Testausführungen wurden bestanden. |
1 | Ein allgemeiner Fehler ist aufgetreten. Mögliche Ursachen sind ein nicht vorhandener Dateiname oder ein HTTP-/Netzwerkfehler. |
2 | Die Tests wurden beendet, weil unbekannte Befehle oder Argumente angegeben wurden. |
10 | Mindestens einer der Testfälle (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 oder nicht bestanden hat. |
18 | Die Testumgebung für diese Testausführung wird aufgrund von inkompatiblen 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 bei der Testinfrastruktur ist aufgetreten. |