Google is committed to advancing racial equity for Black communities. See how.
Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Starten Sie den Test mit der gcloud-CLI

Firebase Test Lab bietet eine Cloud-basierte Infrastruktur zum Testen von Android-Apps, einschließlich der vollständigen Integration in die gcloud-Befehlszeilenschnittstelle (CLI). Dieses Dokument behandelt die Installation und Konfiguration, die erforderlich sind, um Test Lab über die gcloud-CLI zu verwenden.

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 .

Erstellen Sie ein Firebase-Projekt

Wenn Sie kein Firebase-Projekt für Ihre App haben, rufen Sie die Firebase-Konsole auf und klicken Sie auf Neues Projekt erstellen, um jetzt eines zu erstellen. Sie benötigen Eigentums- oder Bearbeitungsberechtigungen für Ihr Projekt.

Sie können Test Lab für eine begrenzte Anzahl täglicher Testausführungen in den Spark- und Flame-Plänen verwenden. Um Test Lab ohne tägliche Kontingentbeschränkungen zu verwenden, müssen Sie auf den Firebase Blaze-Plan aktualisieren.

Richten Sie die gcloud-CLI ein

  1. Laden Sie das Google Cloud SDK herunter .
  2. Dies beinhaltet das gcloud CLI-Tool.

  3. Stellen Sie sicher, dass Ihre Installation auf dem neuesten Stand ist:
    gcloud components update
    
  4. Melden Sie sich mit Ihrem Google-Konto bei der gcloud-CLI an:
    gcloud auth login
    
  5. Legen Sie Ihr Firebase-Projekt in gcloud fest, wobei PROJECT_ID die ID Ihres Firebase-Projekts ist:
    gcloud config set project PROJECT_ID
    

Konfigurieren Sie Ihren Test

In diesem Beispiel führen Sie einige Tests mit einer einfachen Android-App namens Notepad durch.

  1. Laden Sie die binäre APK-Datei für die Notepad-App ( app-debug-unaligned.apk ) und die entsprechenden Instrumentierungstests ( app-debug-test-unaligned.apk ) herunter, die im NotePad / app / build / output / apk / des Notepad- Verzeichnisses bereitgestellt werden .zip .

  2. Rufen Sie die aktuelle Liste der verfügbaren Android-Geräte zum Testen wie folgt ab:

     
    $ gcloud firebase test android models list
     
    gcloud firebase test android models list output Die erste Spalte der Befehlsausgabe, MODEL_ID , enthält die Kennung, mit der Sie später Tests für ein bestimmtes Modell ausführen können. In der Spalte OS_VERSION_ID sind die von diesem Gerät unterstützten Betriebssystemversionen aufgeführt. Wenn Sie nicht angeben, gegen welche MODEL_ID (s) getestet werden soll, wird der in der Spalte TAGS Standard verwendet.

  3. Erfahren Sie mehr über eine bestimmte Android MODEL_ID mit dem firebase test android models describe wie folgt beschreiben:

     
    $ gcloud firebase test android models describe Nexus5
     
    Der oben gezeigte Beispielbefehl enthält detaillierte Informationen zum Nexus5 Modell, einschließlich der Marke, des Herstellers und der unterstützten API-Ebenen sowie darüber, ob das Modell physisch oder virtuell ist.

  4. Holen Sie sich die aktuelle Liste der verfügbaren Android-Betriebssystemversionen zum Testen:

     
    $ gcloud firebase test android versions list
     
    gcloud android versions list Sie können einen Bezeichner aus einer der beiden ersten Spalten der Befehlsausgabe ( OS_VERSION_ID und VERSION ) verwenden, um später Tests für eine Android-Betriebssystemversion auszuführen. Wenn Sie die zu TAGS Android-Betriebssystemversionen nicht angeben, wird der in der Spalte TAGS Standard verwendet.

  5. Rufen Sie die aktuelle Liste der verfügbaren Gebietsschemas zum Testen ab:

     
    $ gcloud firebase test android locales list
     
    Die erste Spalte der Befehlsausgabe, LOCALE , enthält die Kennung, mit der Sie später Tests für ein Gebietsschema ausführen können. Wenn Sie die zu testenden Gebietsschemas nicht angeben, wird Englisch als Standardgebietsschema verwendet. Die Befehlsausgabe wird hier nicht angezeigt, da Hunderte von Gebietsschemas verfügbar sind.

Ausführen von Tests

Nachdem Sie nun wissen, welche Gerätemodelle, Betriebssystemversionen und Gebietsschemas beim Testen Ihrer App verfügbar sind, können Sie diese Informationen verwenden, um Testgeräte mit dem Befehl --device gcloud firebase test android run und dem Flag --device . Dieser Befehl und dieses Flag werden verwendet, unabhängig davon, ob Sie den Robo-Test zum automatischen Testen Ihrer App verwenden oder ob Sie Instrumentierungstests ausführen, die speziell zum Testen Ihrer App geschrieben wurden.

Ausführen des Robo-Tests

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

Beginnen wir mit einem Beispielbefehl:

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 Parameter --type robo ist implizit, wenn kein Wert --type angegeben wird. Sie können den vollständigen Satz von Befehlszeilenoptionen zum Ausführen von Tests gcloud help firebase test android run indem Sie gcloud help firebase test android run eingeben: gcloud help firebase test android run . Alternativ zur Angabe all dieser Argumente in der Befehlszeile können Sie Ihre Argumente optional in einer YAML-formatierten Argumentdatei angeben. Führen Sie gcloud topic arg-files , um zu erfahren, wie Sie diese Funktion verwenden.

Im Abschnitt Analysieren Sie Ihre Testergebnisse erfahren Sie, wie Sie die Testergebnisse des Robo-Tests untersuchen.

Ausführen Ihrer Instrumentierungstests

Verwenden gcloud jetzt das gcloud , um die Espresso- Tests der Notepad-App auf Ihren angegebenen Android-Gerätekonfigurationen auszuführen. Verwenden Sie den instrumentation , um die Tests in app-debug-test-unaligned.apk wie folgt 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

Der --type instrumentation ist implizit, wenn mit --test eine Test-APK angegeben wurde. Alternativ zur Angabe all dieser Argumente in der Befehlszeile können Sie Ihre Argumente optional in einer YAML-formatierten Argumentdatei angeben. Führen Sie gcloud topic arg-files , um zu erfahren, wie Sie diese Funktion verwenden.

Die gcloud CLI unterstützt Android Test Orchestrator . Orchestrator erfordert AndroidJUnitRunner v1.0 oder höher. Um es zu aktivieren, verwenden Sie gcloud firebase test android run mit dem
--use-orchestrator flag. Verwenden Sie zum Deaktivieren das Flag --no-use-orchestrator .

Hinweis: Sie können auch steuern, wie Test Lab Ihre Instrumentierungstests durch zusätzliche Flags ausführt, die oben nicht angezeigt werden. Sie können beispielsweise das --test-targets verwenden, um eine einzelne Klasse oder eine Klassenmethode zu testen, die von Ihrer Test-APK verwendet wird. Sie können auch herausfinden, ob Ihr fehlgeschlagener Test tatsächlich flockig war oder nicht, indem Sie das Flag '--num-flaky-test-versuche' verwenden, das angibt, wie oft eine Testausführung erneut versucht werden soll, wenn einer oder mehrere der Tests ausgeführt werden Testfälle schlagen aus irgendeinem Grund fehl. Weitere Informationen finden Sie unter gcloud firebase test android run .

Codeabdeckungsberichte für Instrumentierungstests

Test Lab unterstützt die Tools zur Berichterstellung für die Codeabdeckung EMMA und JaCoCo . Wenn Sie eines der beiden Tools in den Build für Ihre App integriert haben, können Sie einen Bericht zur Codeabdeckung für Test Lab-Tests erhalten, indem Sie den gcloud firebase test android run mit den folgenden Argumenten gcloud firebase test android run :

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 Berichte zur Codeabdeckung in Google Cloud Storage:

  1. Öffnen Sie den Link zur Firebase-Konsole, den das gcloud Tool über der Testergebnis-Tabelle in Ihrem Terminal gedruckt hat.
  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 , um zum Google Cloud Storage-Bucket mit den Testergebnissen dieser Ausführung zu gelangen.
  4. Öffnen Sie artifacts/coverage.ec , um Ihren Code-Coverage-Bericht anzuzeigen.

Analysieren Sie Ihre Testergebnisse

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

Command test results

Die Ausgabe Ihres Befehlszeilentestlaufs enthält auch einen Link zum Anzeigen der Testergebnisse. Weitere Informationen zur Interpretation dieser Ergebnisse finden Sie unter Analysieren des Firebase-Testlabors für Android-Ergebnisse .

Benutzerdefinierte Anmeldung und Texteingabe mit Robo-Test

Der Robo-Test schließt --no-auto-google-login automatisch ab, die ein Google-Konto zur Authentifizierung verwenden, es sei denn, Sie verwenden den Parameter --no-auto-google-login . Es kann auch benutzerdefinierte Anmeldebildschirme mit den von Ihnen angegebenen Anmeldeinformationen für das Testkonto ausfüllen. Sie können diesen Parameter auch verwenden, um benutzerdefinierten Eingabetext für andere von Ihrer App verwendete Textfelder bereitzustellen.

Verwenden Sie zum --robo-directives Textfeldern in Ihrer App den Parameter --robo-directives und stellen Sie eine durch Kommas getrennte Liste von key-value Paaren bereit, wobei der key der Android-Ressourcenname des Ziel-UI-Elements und der value die Textzeichenfolge ist . 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, jedoch 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 gcloud-CLI von Test Lab verfügt über mehrere Befehle und Flags, 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 Instrumentation ausführen können. Test Lab führt immer die neueste Version von Orchestrator aus.

  • Game Loop-Testflags : Eine Reihe von Konfigurationsflags, die einen "Demo-Modus" aktivieren und steuern, um Spieleraktionen in Spiel-Apps zu simulieren. Weitere Informationen zum Ausführen von Game Loop-Tests mit Test Lab .

  • Uniform Sharding Flag (in der Beta) : Ein Flag, das die Anzahl der Shards angibt, auf die Sie Testfälle gleichmäßig verteilen möchten. Die Shards werden parallel auf separaten Geräten ausgeführt.

  • Manuelles Sharding-Flag (in der 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 Netzwerkverkehrsprofile (in der Beta) : Ein Flag, das angibt, welches Netzwerkprofil Ihre Tests mit physischen Geräten verwenden. Netzwerkprofile emulieren eine Vielzahl von Netzwerkbedingungen, sodass Sie die Leistung Ihrer App in unzuverlässigen oder unvorhersehbaren Netzwerken testen können.

Scripting von gcloud-Befehlen mit Test Lab

Sie können Shell-Skripte oder Batch-Dateien verwenden, um Befehle zum Testen mobiler Apps zu automatisieren, die Sie sonst über die gcloud-Befehlszeile ausführen würden. Das folgende Beispiel-Bash-Skript führt einen Instrumentierungstest mit einer Zeitüberschreitung von zwei Minuten 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 verschiedene Exit-Codes, mit denen Sie die Ergebnisse von Tests, die Sie mithilfe von Skripten oder Batchdateien ausführen, besser verstehen können.

Skript-Exit-Codes für Test Lab

Code beenden Anmerkungen
0 Alle Testausführungen bestanden.
1 Ein allgemeiner Fehler ist aufgetreten. Mögliche Ursachen sind: ein nicht vorhandener Dateiname oder ein HTTP- / Netzwerkfehler.
2 Das Testen wurde beendet, weil unbekannte Befehle oder Argumente bereitgestellt wurden.
10 Ein oder mehrere Testfälle (getestete Klassen oder Klassenmethoden) innerhalb einer Testausführung wurden nicht bestanden.
fünfzehn 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 die ausgewählte Android-API-Ebene vom ausgewählten Gerätetyp nicht unterstützt wird.
19 Die Testmatrix wurde vom Benutzer abgebrochen.
20 Ein Testinfrastrukturfehler ist aufgetreten.