Catch up on everthing we announced at this year's Firebase Summit. Learn more

Beginnen Sie mit dem Testen mit der gcloud-CLI

Dieses Handbuch beschreibt , wie eine Instrumentierung, Robo, oder Spiel Schleifentest mit dem laufen gcloud CLI .

Für eine vollständige Liste der gcloud Befehle , die Sie mit Ihrem Android - App im Test Lab, besuchen Sie die verwenden können Referenzdokumentation für gcloud firebase test android .

Bevor Sie beginnen

Wenn Sie nicht bereits haben, fügen Sie Firebase zu dem Android - Projekt .

Schritt 1. Einrichten der gcloud-CLI

  1. Laden Sie die Google Cloud SDK.
  2. Dazu gehört das gcloud-CLI-Tool.

  3. Stellen Sie sicher , dass Ihre Installation ist up-to-date:
    gcloud components update
    
  4. Melden Sie sich bei der gcloud CLI mit Ihrem Google - Konto:
    gcloud auth login
    
  5. Stellen Sie Ihr Projekt in Firebase gcloud, wo PROJECT_ID die ID Ihres Firebase - Projekt ist:
    gcloud config set project PROJECT_ID
    

Schritt 2. Verfügbare Testgeräte prüfen

Verwenden Sie die folgenden gcloud-Befehle, um Testgeräte und Gebietsschemas anzuzeigen, die für Ihren Test verfügbar sind.

Als Option können Sie auch die Probe herunterladen Notepad app die Befehle sofort anfangen zu laufen. Verwenden Sie die Binärdatei app-debug-unaligned.apk und Instrumentierungs Tests Datei app-debug-test-unaligned.apk , die angeordnet sind NotePad/app/build/outputs/apk/ .

  • models list : eine aktuelle Liste von Android - Geräten verfügbar für Sie zu Test Get gegen.

    gcloud firebase test android models list
    

    In der Befehlsausgabe:

    • Spalte MODEL_ID enthält die Kennung Sie später verwenden können Tests auf dem Gerätemodell auszuführen.
    • Spalte OS_VERSION_ID enthält die Betriebssystemversionen vom Gerät unterstützt.

    Beispielausgabe

    gcloud firebase test android models list output

  • models describe : mehr Informationen zu einem bestimmten Android Get MODEL_ID .

    gcloud firebase test android models describe MODEL_ID
    

    Die Ausgabe enthält die Marke des Gerätemodells, den Hersteller, die Betriebssystemversionen, die unterstützten API-Ebenen, das Veröffentlichungsdatum und ob das Gerät physisch oder virtuell ist.

  • versions list : eine Liste der aktuell verfügbaren OS - Versionen zu testen gegen Get.

    gcloud firebase test android versions list
    

    Sie können eine Kennung von einem der ersten beiden Spalten der Befehlsausgabe (verwenden OS_VERSION_ID und VERSION ), die später durchgeführten Tests gegen eine Android OS - Version. Wenn Sie nicht die Android OS - Versionen zu testen gegen angeben, die standardmäßig unter dem festgestellt TAGS Spalte verwendet wird.

    Beispielausgabe

    gcloud android versions list

  • locales list : die aktuelle Liste der Schauplätze zur Verfügung Test gegen Get.

    gcloud firebase test android versions list
    

    Die erste Spalte der Befehlsausgabe, LOCALE , enthält die Kennung , dass Sie später Tests gegen eine locale ausführen können. Wenn Sie die Gebietsschemata nicht angeben, gegen die getestet werden soll, wird Englisch als Standardgebietsschema verwendet.

Laufende Tests

Jetzt, wo Sie den Bereich der Gerätemodelle kennen, Umgebungen und OS - Versionen verfügbar zum Testen der App können Sie festlegen , Geräte , die mit gcloud firebase test android run Befehl und die --device Flag Robo oder Instrumentierung Tests auszuführen.

Ausführen des Robo-Tests

Auch wenn Sie keine Instrumentierungstests haben, können Sie dennoch nach Fehlern in Ihrer App suchen. Verwenden Sie den Robo-Test, um eine automatische Überprüfung der Benutzeroberfläche Ihrer App durchzuführen. Der Robo-Test übt die App, indem er eine statische Analyse der verschiedenen Pfade durch die Benutzeroberfläche der App durchführt und dann die App durchsucht, um Abstürze und andere potenzielle Probleme zu finden.

Beginnen wir mit der Ausführung eines Beispielbefehls:

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

Der --type robo Parameter ist implizit , wenn kein --type Wert angegeben wird. Sie können zum Ausführen von Tests , indem Sie den vollständigen Satz von Befehlszeilenoptionen finden Sie unter : gcloud help firebase test android run . Als Alternative zur Angabe all dieser Argumente in der Befehlszeile können Sie Ihre Argumente optional in einer YAML-formatierten Argumentdatei angeben. Run gcloud topic arg-files zu erfahren , wie diese Funktion zu nutzen.

Sehen Sie die Testergebnisse analysieren Abschnitt zu lernen , wie die Testergebnisse aus dem Robo - Test zu untersuchen.

Ausführen Ihrer Instrumentierungstests

Nun das Verwendung gcloud Kommandozeilen - Tool des Notepad App läuft Espresso - Tests auf Ihren angegebenen Android Gerätekonfigurationen, mit dem instrumentation Testtyp die 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

Die --type instrumentation Parameter ist implizit , wenn ein Test APK hat mit angegeben --test . Als Alternative zur Angabe all dieser Argumente in der Befehlszeile können Sie Ihre Argumente optional in einer YAML-formatierten Argumentdatei angeben. Run gcloud topic arg-files zu erfahren , wie diese Funktion zu nutzen.

Die gcloud CLI unterstützt Android - Test Orchestrator . Orchestrator erfordert AndroidJUnitRunner v1.0 oder höher. Um sie zu aktivieren, verwenden gcloud firebase test android run mit der
--use-orchestrator Flagge. Um sie zu deaktivieren die Verwendung --no-use-orchestrator Flagge.

Hinweis: Sie können auch festlegen , wie Test Lab Ihre Tests Instrumentierung läuft zusätzliche Flags verwenden , die oben nicht dargestellt sind . Zum Beispiel können Sie die Verwendung --test-targets Flagge eine einzige Klasse oder eine Klassenmethode , indem Sie Ihren Test APK verwendet zu testen. Sie können auch herausfinden, ob Ihr fehlgeschlagener Test tatsächlich flockig war oder nicht, indem Sie das Flag '--num-flaky-test-attempts' verwenden Testfälle schlagen aus irgendeinem Grund fehl. Um mehr zu erfahren, siehe gcloud Feuerbasis Test Android laufen .

Code-Coverage-Berichte für Instrumentierungstests

Test Lab unterstützt Code - Coverage - Reporting - Tools EMMA und JaCoCo . Wenn Sie entweder Werkzeug in die Build für Ihren App integriert haben, können Sie einen Code - Coverage - Bericht für Test Lab - Tests erhalten , indem den Lauf gcloud firebase test android run - Befehls mit den folgenden Argumenten:

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/coverage.ec" \
  --directories-to-pull /sdcard

Wenn Test Lab die Ausführung Ihrer Tests abgeschlossen hat, finden Sie Ihre Codeabdeckungsberichte in Google Cloud Storage:

  1. Öffnen Sie die Konsole Firebase Link , dass die gcloud Werkzeug über dem Testergebnistabelle in Ihrem Terminal gedruckt.
  2. Klicken Sie in der Liste unter diesem Link auf eine Testausführung, um die Detailseite dieser Ausführung zu öffnen.
  3. Klicken Sie auf Testergebnisse an die Cloud Storage Eimer zu gehen mit , dass die Testergebnisse der Ausführung.
  4. Offene artifacts/coverage.ec zu Ihrem Code - Coverage - Bericht zu sehen.

Analysieren Sie Ihre Testergebnisse

Nach einigen Minuten wird vom gcloud-Tool eine grundlegende Zusammenfassung Ihrer Testergebnisse gedruckt:

Command test results

Die Ausgabe Ihres Befehlszeilen-Testlaufs enthält auch einen Link zum Anzeigen der Testergebnisse. Um mehr zu erfahren , wie diese Ergebnisse zu interpretieren, siehe Analyse Firebase Test Lab für Android Ergebnisse .

Benutzerdefinierte Anmeldung und Texteingabe mit Robo-Test

Robo - Test vervollständigt automatisch Anmelde-Bildschirme , die ein Google - Konto für die Authentifizierung verwenden, wenn Sie die Verwendung --no-auto-google-login - Parameter. Es kann auch benutzerdefinierte Anmeldebildschirme mit den von Ihnen bereitgestellten Testkonto-Anmeldeinformationen ausfüllen. Sie können diesen Parameter auch verwenden, um benutzerdefinierten Eingabetext für andere Textfelder bereitzustellen, die von Ihrer App verwendet werden.

Um eine vollständige Textfelder in Ihrer Anwendung, verwenden Sie die --robo-directives Parameter und bieten eine durch Kommata getrennte Liste von key-value - Paaren, wobei der key ist die Android - Ressourcenname des Ziel UI - Element, und der value ist die Textzeichenfolge . Sie können dieses Flag auch verwenden, um Robo anzuweisen, bestimmte Elemente der Benutzeroberfläche zu ignorieren (z. B. die Schaltfläche "Abmelden"). EditText Felder werden unterstützt , aber nicht Textfelder in WebView UI - Elemente.

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 gcloud-CLI von Test Lab stehen mehrere Befehle und Flags zur Verfügung, mit denen Sie Tests mit unterschiedlichen Spezifikationen ausführen können:

  • Android - Instrumentation Test Orchestrator Flagge : Ein Flag aktivieren Orchestrator, ein Werkzeug , das Sie jedes Ihrer App - Tests in einem eigenen Aufruf laufen zu lassen Instrumentation . Test Lab führt immer die neueste Version von Orchestrator aus.

  • Spiel Loop - Test - Flags : Eine Reihe von Konfigurationsflags , die einen „Demo - Modus“ zu simulieren Aktionen der Spieler in Spiele - Apps ermöglichen und steuern. Weitere Informationen über das Ausführen von Spiel Loop - Tests mit Test Lab .

  • Uniform Sharding Flag (in Beta) : Ein Flag, die die Anzahl von Scherben , in denen Sie wollen gleichmäßig Testfälle verteilen. Die Shards werden parallel auf separaten Geräten ausgeführt.

  • Manuelles Sharding Flag (in beta) : Ein Flag , das angibt , eine Gruppe von Paketen, Klassen und / oder Testfällen in einer Scherbe (eine Gruppe von Testfällen) auszuführen. Die Shards werden parallel auf separaten Geräten ausgeführt.

  • Der Netzwerkverkehr Profile Flag (in Beta) : Ein Flag , das angibt , welche Netzwerkprofil Ihre Tests mit physikalischen Geräten verwenden. Netzwerkprofile emulieren eine Vielzahl von Netzwerkbedingungen, sodass Sie die Leistung Ihrer App in unzuverlässigen oder unvorhersehbaren Netzwerken testen können.

Skripting von gcloud-Befehlen mit Test Lab

Sie können Shell-Skripts oder Batchdateien verwenden, um Testbefehle für mobile Apps zu automatisieren, die Sie sonst über die gcloud-Befehlszeile ausführen würden. Das folgende Bash-Beispielskript führt einen Instrumentierungstest mit einem zweiminütigen Timeout 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

Skript-Exit-Codes

Test Lab bietet mehrere Exitcodes, die Sie verwenden können, um die Ergebnisse von Tests, die Sie mit Skripts oder Batchdateien ausführen, besser zu verstehen.

Skripting-Exit-Codes für Test Lab

Exit-Code Anmerkungen
0 Alle Testdurchführungen bestanden.
1 Ein allgemeiner Fehler ist aufgetreten. Mögliche Ursachen sind: ein nicht vorhandener Dateiname oder ein HTTP-/Netzwerkfehler.
2 Der Test wurde abgebrochen, weil unbekannte Befehle oder Argumente angegeben wurden.
10 Ein oder mehrere Testfälle (getestete Klassen oder Klassenmethoden) innerhalb einer Testausführung haben nicht bestanden.
fünfzehn Firebase Test Lab konnte aufgrund eines unerwarteten Fehlers nicht feststellen, ob die Testmatrix bestanden 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 Benutzer abgebrochen.
20 Ein Fehler in der Testinfrastruktur ist aufgetreten.