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
Fügen Sie Ihrem Android-Projekt Firebase hinzu, falls noch nicht geschehen.
Schritt 1: Die gcloud CLI einrichten
- Laden Sie das Google Cloud SDK herunter.
- Achten Sie darauf, dass 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.
Sie können auch die Notepad-Beispiel-App herunterladen, um die Befehle sofort auszuführen. Verwenden Sie die Binärdatei app-debug-unaligned.apk
und die Instrumentierungstestdatei 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 soll.gcloud firebase test android versions list
Sie können eine Kennung 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, die Sie später zum Ausführen von Tests für eine Sprache verwenden 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 in Ihrer App nach Fehlern suchen. Führen Sie mit dem Robo-Test eine automatisierte Überprüfung der Benutzeroberfläche Ihrer App durch. 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
wird implizit verwendet, wenn kein Wert für--type
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 Instrumentierungsparameter
--type
ist implizit, wenn mit--test
ein Test-APK 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 Android Test Orchestrator.
Für Orchestrator ist AndroidJUnitRunner Version 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 sie zu deaktivieren.
Mithilfe zusätzlicher Flags, die oben nicht aufgeführt sind, können Sie auch steuern, wie Test Lab Ihre Instrumentierungstests ausführt. Du kannst beispielsweise das Flag --test-targets
verwenden, um eine einzelne Klasse oder eine Klassenmethode zu testen, die von deinem 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, 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 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
Nachdem Test Lab die Tests ausgeführt 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 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. Sie können diesen Parameter auch verwenden, um benutzerdefinierten Eingabetext für andere von Ihrer App verwendete Textfelder bereitzustellen.
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. Schaltfläche „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
Für die gcloud-Befehlszeile Test Lab sind mehrere Befehle und Flags verfügbar, 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 manuelle Fragmentierung (in der Betaversion): 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 Netzwerkverkehrsprofile (Beta): Mit diesem Flag wird angegeben, welches Netzwerkprofil für Ihre Tests auf physischen Geräten verwendet wird. Netzwerkprofile emulieren eine Vielzahl von Netzwerkbedingungen, sodass Sie die Leistung Ihrer App in nicht zuverlässigen oder unvorhersehbaren 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 Exit-Codes, mit denen Sie die Ergebnisse von Tests besser nachvollziehen können, die Sie mit Skripts 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 | Der Test wurde beendet, da 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 Benutzer abgebrochen. |
20 | Beim Testen der Infrastruktur ist ein Fehler aufgetreten. |