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
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.
- 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, wobei PROJECT_ID ist
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
Verwenden Sie die folgenden gcloud-Befehle, um Testgeräte und -sprachen aufzurufen, die die für Ihren Test verfügbar sind.
Optional können Sie auch das Beispiel herunterladen
Notepad
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
: Rufen Sie eine aktuelle Liste der Android-Geräte ab, die zum Testen zur Verfügung stehen zu vergleichen.gcloud firebase test android models list
In der Befehlsausgabe:
- Die Spalte
MODEL_ID
enthält die Kennung, die Sie später zum Ausführen von Tests verwenden können auf der Grundlage des Gerätemodells. - Spalte
OS_VERSION_ID
enthält die unterstützten Betriebssystemversionen vom Gerät berechnet wird.
Beispielausgabe
- Die Spalte
models describe
: Weitere Informationen zu einem bestimmten Android-MODEL_ID
abrufen.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 zum Testen abrufen zu vergleichen.gcloud 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
: Ruft die aktuelle Liste der Sprachen ab, die getestet werden können.gcloud firebase test android versions list
Die erste Spalte der Befehlsausgabe,
LOCALE
, enthält die Kennzeichnung. mit der Sie später Tests für ein Gebietsschema durchführen können. Wenn Sie keine die Sprachen, die getestet werden sollen, wird Englisch als Standardsprache verwendet.
Schritt 3: Test ausführen
Du kennst jetzt die verfügbaren Gerätemodelle, Sprachen und Betriebssystemversionen.
zum Testen deiner App kannst du Geräte über die
gcloud firebase test android run
-Befehl und die
--device
-Flag, um Robo- oder Instrumentierungstests auszuführen.
Robo-Test ausführen
Auch wenn Sie keine Instrumentierungstests haben, nach Fehlern in Ihrer App suchen. Führen Sie mit dem Robo-Test eine automatisierte Überprüfung Ihrer der Benutzeroberfläche der App. Beim Robo-Test wird die App durch eine statische Analyse der verschiedenen Pfade durch die Benutzeroberfläche der App die App durchsucht, 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 robo
wird implizit verwendet, wenn kein Wert für--type
angegeben ist. - Damit Sie Ihre Testmatrizen in der Firebase Console ermitteln und finden können,
können Sie die optionale
--client-details matrixLabel="Example matrix label"
um Ihre Testmatrix zu beschriften. - Sie können sich den vollständigen Satz
der Befehlszeilenoptionen für
Geben Sie
gcloud help firebase test android run
ein, um Tests auszuführen.
Alternativ zur Angabe dieser Argumente in der Befehlszeile können Sie sie auch in einer Argumentdatei im YAML-Format angeben. Ausführen
gcloud topic arg-files
, um mehr über die Verwendung dieser Funktion zu erfahren.
Informationen zum Untersuchen der Testergebnisse des Robo-Tests finden Sie unter Analysiere deine Testergebnisse.
Instrumentierungstest ausführen
Führen Sie nun mit dem gcloud
-Befehlszeilentool die
Espresso
Tests mit den angegebenen Android-Gerätekonfigurationen durchführen. Verwenden Sie die Methode
Testtyp instrumentation
zum Ausführen der Tests in app-debug-test-unaligned.apk
wie folgt:
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 ein Test-APK angegeben ist mit--test
. - So können Sie Ihre Testmatrizen in der Firebase-Konsole ermitteln und finden:
können Sie den optionalen
--client-details matrixLabel="Example matrix label"
um Ihre Testmatrix zu beschriften. - Sie können sich den vollständigen Satz
der Befehlszeilenoptionen für
zum Ausführen von Tests durch Eingabe von
gcloud help firebase test android run
.
Als Alternative zur Angabe dieser Argumente in der Befehlszeile können Sie
Optional können Sie Ihre Argumente in einer Argumentdatei im YAML-Format angeben. Ausführen
gcloud topic arg-files
, um mehr über die Verwendung dieser Funktion zu erfahren.
Die gcloud CLI unterstützt Android Test Orchestrator.
Orchestrator erfordert AndroidJUnitRunner v1.1 oder höher. Verwenden Sie zum Aktivieren
gcloud firebase test android run
mit --use-orchestrator
melden. Verwenden Sie das Flag --no-use-orchestrator
, um die Funktion zu deaktivieren.
Sie können auch festlegen, wie Test Lab Ihre Instrumentierungstests ausführt
zusätzliche Flags verwenden, die oben nicht aufgeführt sind. Sie können beispielsweise die Methode
Das Flag --test-targets
zum Testen einer einzelnen Klasse oder einer Klassenmethode, die vom Test verwendet wird
APK Sie können auch herausfinden, ob Ihr fehlgeschlagener Test in Wirklichkeit instabil war oder
nicht mithilfe des Flags --num-flaky-test-attempts
, das die Anzahl der
dass eine Testausführung wiederholt werden sollte, wenn mindestens einer der
aus irgendeinem Grund scheitern. Weitere Informationen finden Sie unter gcloud firebase test android run.
Berichte zur Codeabdeckung für Instrumentierungstests
Test Lab unterstützt Berichtstools zur Codeabdeckung
EMMA und
JaCoCo. Wenn Sie eines der beiden Tools
die in den Build Ihrer App integriert sind, können Sie einen Bericht zur Codeabdeckung
Test Lab-Tests durch Ausführen von gcloud firebase test android run
mit einigen
zusätzliche Argumente. 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 gleichzeitig mit Android Test generieren Orchestrator an, ä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 die Tests von Test Lab ausgeführt wurden, rufen Sie die Berichte zur Codeabdeckung ab. in Google Cloud Storage:
- Öffnen Sie den Firebase-Konsolenlink, den das
gcloud
-Tool über der Tabelle mit den Testergebnissen in Ihrem Terminal. - Klicken Sie in der Liste unter diesem Link auf eine Testausführung, um die Detailseite.
- Klicken Sie auf Testergebnisse, um den zugehörigen Cloud Storage-Bucket aufzurufen. die Testergebnisse der Ausführung.
- Öffnen Sie
artifacts/coverage.ec
, um den Bericht zur Codeabdeckung aufzurufen.
Testergebnisse analysieren
Nach einigen Minuten wird eine grundlegende Zusammenfassung der Testergebnisse vom gcloud-Tool:
Die Ausgabe des Befehlszeilen-Testlaufs enthält auch einen Link zum Ansehen des Tests Ergebnisse. Weitere Informationen zur Auswertung dieser Ergebnisse finden Sie unter Firebase Test Lab für Android-Ergebnisse analysieren.
Benutzerdefinierte Anmeldung und Texteingabe mit Robo-Test
Durch den Robo-Test werden Anmeldebildschirme, für die ein Google-Konto verwendet wird, automatisch ausgefüllt
zur Authentifizierung verwenden, es sei denn, Sie verwenden das
--no-auto-google-login
. Über ein Testkonto können auch benutzerdefinierte Anmeldebildschirme aufgerufen werden
Anmeldedaten verwenden. Mit diesem Parameter können Sie auch benutzerdefinierte
Eingabetext für andere von Ihrer App verwendete Textfelder.
Verwenden Sie zum Ausfüllen von Textfeldern in Ihrer App die
--robo-directives
-Parameter und stellen Sie eine durch Kommas getrennte Liste von key-value
-Paaren bereit, wobei der
key
ist der Android-Ressourcenname des Ziel-UI-Elements und value
ist
die Textzeichenfolge. Mit diesem Flag können Sie Robo auch anweisen, bestimmte UI-Elemente zu ignorieren (z. B. „logout“ Schaltfläche).
EditText
Felder in WebView
-UI-Elementen werden unterstützt, jedoch keine Textfelder.
Beispielsweise könnten Sie den folgenden Parameter für benutzerdefinierte Log-in:
--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 durchführen:
Android Test Orchestrator-Flag: Ein Flag zum Aktivieren von Orchestrator ein Tool, mit dem Sie Ihre die Tests der App in einem eigenen Aufruf von
Instrumentation
ausführen. Test Lab immer führt die neueste Version von Orchestrator aus.Flags für Spielschleifentests: Eine Reihe von Konfigurations-Flags, die eine „Demo“ aktivieren und steuern Modus um Spieleraktionen in Spiele-Apps zu simulieren. Weitere Informationen zum Ausführen Spielschleifentests mit Test Lab.
Uniform Sharding-Flag (in der Betaversion): Ein Flag, das die Anzahl der Shards angibt, auf die gleichmäßig verteilt werden soll. Testläufe zu verteilen. Die Shards werden parallel auf separaten Geräten ausgeführt.
Flag für manuelle Fragmentierung (in der Betaversion): Flag, das eine Gruppe von Paketen, Klassen und/oder Testfällen angibt, die ausgeführt werden sollen in einem Shard (einer Gruppe von Testläufen). Die Shards werden parallel auf auf separaten Geräten.
Flag „Netzwerk-Traffic-Profile“ (in der Betaversion): Ein Flag, das angibt, welches Netzwerkprofil Ihre Tests mit physischen Geräte. Netzwerkprofile emulieren eine Vielzahl von Netzwerkbedingungen, die Leistung Ihrer App in unzuverlässigen oder unvorhersehbaren Netzwerken zu testen.
gcloud-Befehle mit Test Lab in Skripts verwenden
Du kannst Shell-Scripts oder Batch-Dateien verwenden, um die Befehle zum Testen mobiler Apps zu automatisieren die Sie sonst über die gcloud-Befehlszeile ausführen würden. Die folgenden Das Beispiel-Bash-Skript führt einen Instrumentierungstest mit einem Zeitlimit von zwei Minuten aus und gibt an, 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, die Sie für ein besseres Verständnis des Ergebnisse von Tests, die Sie mit Skripts oder Batch-Dateien ausführen.
Scripting-Exit-Codes für Test Lab
Exit-Code | Hinweise |
---|---|
0 | Alle Testausführungen wurden bestanden. |
1 | Ein allgemeiner Fehler ist aufgetreten. Mögliche Ursachen: ein Dateiname, der nicht vorhanden ist oder ein HTTP-/Netzwerkfehler aufgetreten ist. |
2 | Der Test wurde beendet, da unbekannte Befehle oder Argumente angegeben wurden. |
10 | Ein oder mehrere Testfälle (getestete Klassen oder Klassenmethoden) innerhalb eines Tests die Ausführung war nicht erfolgreich. |
15 | Firebase Test Lab konnte nicht feststellen, ob die Testmatrix bestanden oder ist aufgrund eines unerwarteten Fehlers fehlgeschlagen. |
18 | Die Testumgebung für diese Testausführung wird aus folgendem Grund nicht unterstützt: nicht kompatible Testdimensionen. Dieser Fehler kann auftreten, wenn die ausgewählte Android API Stufe wird vom ausgewählten Gerätetyp nicht unterstützt. |
19 | Die Testmatrix wurde vom Benutzer abgebrochen. |
20 | Beim Testen der Infrastruktur ist ein Fehler aufgetreten. |