In diesem Leitfaden wird beschrieben, wie Sie einen Android-Instrumentierungstest mit der gcloud beta device-run-Befehlszeile ausführen und die Ergebnisse in der Google Cloud Console finden. Es wird davon ausgegangen, dass Sie ein Konto und ein Projekt in Google Cloud haben.
Wenn Sie von Firebase Test Lab zur Developer Device Platform migrieren, lesen Sie unsere Migrationsanleitung, die Übersetzung von Befehlen und Flags und den Migrationsskill für KI-Agenten.
Wenn Sie diese Google Cloud CLI verwenden möchten, müssen Sie Ihre Google Cloud -Projekt-ID angeben. Eine Zusammenfassung der Befehle finden Sie unter gcloud beta device-run.
Hinweis
Bei diesen Schritten wird davon ausgegangen, dass Sie bereits Folgendes getan haben:
- Sie haben ein Projekt in Google Cloud erstellt.
- Richten Sie die Developer Device Platform gemäß der Kurzanleitung ein.
- Im Terminal mit
gcloudauthentifiziert. - Die Device Run-Übersicht mit allgemeinen Informationen gelesen.
- Instrumentierungstest für Android erstellen
Schritt 1: Testlauf konfigurieren
Optionen für Android-Instrumentierungstests
- Mehrere Geräte: Wenn Sie denselben Test auf mehreren Geräten ausführen möchten, geben Sie das Flag
--devicemit mehreren Geräte-IDs an, die durch Kommas getrennt sind, z. B.--device shiba-34,tokay-36, oder mit mehreren--device-Flags, die jeweils eine eindeutige Geräte-ID angeben (z. B.--device shiba-34 --device tokay-36). - Dateien auf das Gerät übertragen: Übertragen Sie vor der Ausführung mit
--other-files-to-push=SOURCE=DEST,...zusätzliche Dateien (z. B. ML-Modellgewichtungen, Testeingaben oder.sogemeinsam genutzte Bibliotheken) auf das Gerät.SOURCEunterstützt sowohl lokale Pfade als auch Cloud Storage-Pfade (gs://...) undDESTist der Zielpfad auf dem Gerät. - Dateien vom Gerät abrufen: Generierte Dateien oder Verzeichnisse nach Abschluss der Ausführung mit
--paths-to-pull=DEVICE_PATH,...vom Gerät abrufen. - Benutzerdefinierter Cloud Storage-Bucket: Geben Sie mit
--bucket-name=einen vorhandenen Cloud Storage-Bucket-Namen (ohnegs://-Schema oder -Pfad) an. Wenn Sie keinen Bucket angeben, verwendet oder erstellt die Google Cloud CLI einen Standard-Bucket mit dem NamenPROJECT_ID-devicerun. - Wiederholungen instabiler Tests: Legen Sie die maximale Anzahl von Versuchen pro Job oder Shard fest, um Instabilität zu beheben:
--flaky-test-attempts=3(Standardwert ist1Versuch). - Geräteumgebung und Diagnose: Konfigurieren Sie die Geräteausrichtung (
--orientation=portraitoderlandscape), das Gebietsschema (--locale=en-US), den simulierten GPS-Standort (--coordinates=LATITUDE,LONGITUDE), die Bildschirmvideoaufzeichnung (--video=alwaysoderon-failure), diedumpsys-Erfassung (--dumpsys=alwaysoderon-failure) oder diebugreport-Erfassung (--bugreport=alwaysoderon-failure). - Labels: Hängen Sie mit
--labels=KEY=VALUE,...benutzerdefinierte Schlüssel/Wert-Labels an die Sitzung an. - Zusätzliche Apps: Sie können optional eine oder mehrere APK-, AAB- oder APKS-Dateien angeben, die vor dem Ausführen der Tests mit dem Flag
--apps=path1,path2,...,path_ninstalliert werden sollen. Die von Ihnen angegebene Reihenfolge ist die Reihenfolge, in der diese Apps installiert werden. - Testzeitüberschreitung: Begrenzen Sie die Ausführungsdauer:
--instrumentation-timeout=10m(gültiger Bereich ist1mbis3h, Standardwert ist5m).
Synchrone und asynchrone Ausführungen
Standardmäßig ist der Befehl „submit“ blockierend (synchron). Es wartet, bis der Test abgeschlossen ist, und gibt eine Übersichtstabelle der Ergebnisse aus.
Wenn Sie die Sitzung senden und sofort nach dem Hochladen von Dateien in Cloud Storage zurückkehren möchten, fügen Sie das Flag --async hinzu:
gcloud beta device-run sessions submit instrumentation \
--device shiba-35 \
--test ./ANDROID_TESTS.apk \
--async
Dadurch wird sofort eine Sitzungs-ID zurückgegeben. Sie können dann mit dem Befehl sessions wait darauf warten:
gcloud beta device-run sessions wait SESSION_ID
Der Befehl wird blockiert, bis der Job abgeschlossen ist.
Mehrere Geräte
Wenn Sie denselben Test auf mehreren Geräten ausführen möchten, geben Sie das Flag --device mit mehreren Geräte-IDs durch Kommas getrennt oder mit mehreren Flags --device an, die jeweils eine eindeutige Geräte-ID angeben:
gcloud beta device-run sessions submit instrumentation \
--device shiba-34,tokay-36 \
--test ./ANDROID_TESTS.apk
oder:
gcloud beta device-run sessions submit instrumentation \
--device shiba-34 \
--device tokay-36 \
--test ./ANDROID_TESTS.apk
Testzeitlimit
Begrenzen Sie die Ausführungsdauer des Tests:
gcloud beta device-run sessions submit instrumentation \
--device shiba-35 \
--test ./ANDROID_TESTS.apk \
--instrumentation-timeout=10m
Der gültige Bereich liegt zwischen 1m und 3h. Der Standardwert ist 5m.
Softwareversionen
Sie können verfügbare Softwarepakete und Versionen von AndroidX Test Orchestrator finden und verwenden und ihre Lebenszyklen, unterstützten Versionen und Metadaten prüfen, bevor Sie Testläufe konfigurieren.
Listen Sie zuerst alle verfügbaren Softwarepakete und ihre Versionen auf:
gcloud beta device-run software-versions list
Die Ausgabe sollte in etwa so aussehen:
ID NAME SOFTWARE_TYPE VERSION STATE IS_DEFAULT
androidx-test-orchestrator-1-4-1 AndroidX Test Orchestrator 1.4.1 ANDROIDX_TEST_ORCHESTRATOR 1.4.1 ACTIVE True
androidx-test-orchestrator-1-6-1 AndroidX Test Orchestrator 1.6.1 ANDROIDX_TEST_ORCHESTRATOR 1.6.1 ACTIVE
xcode-16-4 Xcode 16.4 XCODE 16.4 ACTIVE
xcode-26-2 Xcode 26.2 XCODE 26.2 ACTIVE True
Beschreiben Sie dann ein bestimmtes Paket anhand seiner genauen Ressourcen-ID aus der Liste:
gcloud beta device-run software-versions describe androidx-test-orchestrator-1-4-1
Die Ausgabe sollte in etwa so aussehen:
id: androidx-test-orchestrator-1-4-1
isDefault: true
lifecycle:
state: ACTIVE
name: AndroidX Test Orchestrator 1.4.1
softwareType: ANDROIDX_TEST_ORCHESTRATOR
version: 1.4.1
Nachdem Sie nun wissen, welche Softwareversionen verfügbar sind, können Sie sie in Ihren Testläufen mit dem Flag --orchestrator-version verwenden, z. B.:
gcloud beta device-run sessions submit instrumentation \
--device shiba-35 \
--test ./ANDROID_TESTS.apk \
--orchestrator-version=1.4.1
Orchestrator aktivieren
Die Developer Device Platform unterstützt den Android Test Orchestrator, mit dem Sie jeden Test Ihrer App in einem eigenen Aufruf von Instrumentation ausführen können.
Wenn Sie Orchestrator verwenden, gehen Sie so vor:
Vermeiden Sie einen gemeinsamen Status. Jeder Test wird in einer eigenen
Instrumentation-Instanz ausgeführt. Wenn Ihre Tests also den App-Status teilen, wird der größte Teil dieses geteilten Status nach jedem Test von der CPU oder dem Arbeitsspeicher Ihres Geräts entfernt. Wenn Sie nach jedem Test alle freigegebenen Status aus der CPU und dem Arbeitsspeicher Ihres Geräts entfernen möchten, fügen Sie die EinstellungclearPackageDataso ein:--additional-test-options clearPackageData=trueAbstürze isolieren: Wenn ein Test abstürzt, wird nur die eigene Instanz von
Instrumentationbeendet. Das bedeutet, dass die anderen Tests weiterhin ausgeführt werden und vollständige Testergebnisse liefern.
Android Test Orchestrator ist auf der Developer Device Platform standardmäßig deaktiviert. Wenn Sie den Orchestrator aktivieren und die Version angeben möchten, die während der Testausführung verwendet werden soll, übergeben Sie die ausgewählte Version an das Flag --orchestrator-version=ORCHESTRATOR_VERSION in Ihrem sessions submit
instrumentation-Befehl, z. B.:
gcloud beta device-run sessions submit instrumentation \
--device shiba-35 \
--test ./ANDROID_TESTS.apk \
--orchestrator-version=1.4.1
Setzen Sie das Flag auf auto, um die Standard-Orchestrator-Version des Systems zu verwenden.
Schritt 2: Geräte auswählen
Mit der device-run-Befehlszeile können Android-Tests auf verfügbaren physischen und virtuellen Geräten ausgeführt werden. Eine vollständige Liste der verfügbaren Geräte finden Sie im interaktiven Gerätekatalog oder über folgenden Befehl:
gcloud beta device-run devices list
Beispielausgabe:
ID MAKE NAME MODEL FORM OS_VERSION CAPACITY AVAILABILITY PRODUCTS
tegu-35 Google Pixel 9a tegu PHYSICAL 35 MEDIUM LOW Automation, Streaming
tokay-34 Google Pixel 9 tokay PHYSICAL 34 HIGH HIGH Automation, Streaming
Im Gerätekatalog erfährst du, wie du diese Liste filtern kannst. Wenn Sie ein bestimmtes Gerät für die Ausführung verwenden möchten, geben Sie im Befehl zum Senden die entsprechende ID an (z. B. tegu-35).
Schritt 3: Test ausführen
Reiche ein APK für einen Android-Instrumentierungstest ein.
Diese Flags sind für Android-Instrumentierungstests erforderlich:
- Gerät: Geben Sie ein Gerät mit
--devicean:--device shiba-35 - Test: Geben Sie das Test-APK mit
--testan:--test /path/to/test.apk
Führen Sie den Instrumentierungstest mit einem sessions submit
instrumentation-Befehl aus, der in etwa so aussieht, wobei Sie Ihre eigenen Geräte-IDs und den Testpfad verwenden:
gcloud beta device-run sessions submit instrumentation \
--device shiba-34 \
--apps /path/to/app.apk \
--test /path/to/test.apk
Der Ordner mit dem Ergebnisbericht des Jobs befindet sich in einem Cloud Storage-Pfad wie gs://BUCKET_NAME/automation/sessions/SESSION_ID/. In der Befehlsausgabe finden Sie den Link, der in etwa so aussieht: https://console.cloud.google.com/storage/browser/BUCKET_NAME/automation/sessions/SESSION_ID/.
Schritt 4: Sharding verwenden
Wenn Sie Developer Device Platform-Instrumentierungstests in einen CI/CD-Workflow (Continuous Integration/Continuous Delivery) einbinden möchten, sollten Sie Ihre Tests fragmentieren. Beim Test-Sharding wird eine Reihe von Instrumentierungstests in Untergruppen (Shards) aufgeteilt, die separat und isoliert ausgeführt werden. Die Developer Device Platform führt jeden Shard automatisch parallel auf mehreren Geräten aus und schließt die gesamte Testreihe in kürzerer Zeit ab.
Schritt 4.1: Fragmentierungsoption auswählen
Wenn Ihre Jobs nur eine kleine Anzahl von Testläufen haben oder die Gesamtausführungszeit aller Testläufe nicht lang ist, ist die Verwendung von Fragmentierung nicht erforderlich. Wenn Sie eine große Anzahl von Testfällen haben oder die Gesamtausführungszeit aller Testfälle lang ist, sollten Sie Sharding verwenden.
Die Developer Device Platform unterstützt sowohl intelligentes als auch einheitliches Sharding. Berücksichtigen Sie bei der Entscheidung, wie Sie Ihre Tests fragmentieren, die folgenden Optionen:
Wenn alle Testfälle ähnlich lange dauern, verwenden Sie ein einheitliches Sharding, indem Sie alle Testfälle in
nShards aufteilen.Wenn die Ausführungszeit verschiedener Testfälle stark variiert, verwenden Sie Smart Sharding. Die Developer Device Platform verwendet die bisherige Testausführungszeit, um verschiedene Shards zu erstellen, und versucht, alle Shards in einer ähnlichen Zeit abzuschließen.
Einheitliche Fragmentierung
Wenn Sie Ihre Tests mit einheitlichem Sharding aufteilen möchten, fügen Sie die Flags --sharding-option=uniform und --uniform-sharding-count= in den Befehl sessions submit instrumentation ein:
gcloud beta device-run sessions submit instrumentation \
--test path/to/test.apk \
--device shiba-34,tokay-36 \
--sharding-option=uniform \
--uniform-sharding-count=2
Es sollte eine Ausgabe mit Job status: 2 running angezeigt werden. Der Dienst erstellt zwei Jobs, einen für jedes Gerät. Da die Eingaben für beide Jobs identisch sind, werden die Validierungen vom Dienst zentralisiert und nur einmal ausgeführt.
Die beiden Jobs werden in der endgültigen Ausgabe des Befehls separat aufgeführt:
JOB NAME EXECUTION NAME EXECUTION RESULT
job-000 execution-000 PASSED
job-001 execution-000 PASSED
Intelligentes Sharding
Wenn Sie Ihre Tests mit Smart Sharding fragmentieren möchten, fügen Sie die Flags --sharding-option=smart, --smart-sharding-max-shard-count=, --smart-sharding-target-duration= (in Minuten oder 1h) und --smart-sharding-record-name= in den sessions
submit instrumentation-Befehl ein:
gcloud beta device-run sessions submit instrumentation \
--test path/to/test.apk \
--device shiba-34,shiba-35,tokay-36 \
--sharding-option=smart \
--smart-sharding-max-shard-count=3 \
--smart-sharding-target-duration=5m \
--smart-sharding-record-name=test.yaml
Die endgültige Ausgabe sollte zeigen, dass drei Jobs ausgeführt wurden:
Session [session-3cd0564a] finished with result [ERROR].
JOB NAME EXECUTION NAME EXECUTION RESULT
job-000 execution-000 PASSED
job-001 execution-000 PASSED
job-002 execution-000 PASSED
Hier ist eine Zusammenfassung der hier verwendeten Flags für intelligentes Sharding:
--smart-sharding-max-shard-count=SMART_SHARDING_MAX_SHARD_COUNT: Geben Sie die maximale Anzahl von Shards an, die für Smart Sharding erstellt werden sollen. Wenn nicht festgelegt oder auf 0 gesetzt, werden systemdefinierte Höchstgrenzen verwendet. Der gültige Bereich liegt zwischen 0 und 20 für physische Geräte und zwischen 0 und 200 für virtuelle Geräte.--smart-sharding-target-duration=SMART_SHARDING_TARGET_DURATION: Geben Sie die Zielausführungszeit (z.B. 2m, 10m, 1h) pro Shard für Smart Sharding an. Der gültige Bereich liegt zwischen 2 Minuten und 1 Stunde. Erforderlich, wenn--sharding-option=smart.--smart-sharding-record-name=SMART_SHARDING_RECORD_NAME: Geben Sie den Namen der Smart Sharding-Eintragsdatei ohne Dateiendung an. Erforderlich, wenn „--sharding-option=smart“. Diese YAML-Datei befindet sich im Storage-Bucket Google Cloud, der durch--bucket-nameim Verzeichnissmart-sharding/angegeben ist. Wenn die Datei nicht vorhanden ist, wird sie automatisch erstellt. Andernfalls wird ihr Inhalt nach Abschluss der Sitzung aktualisiert.
Schritt 5: Testlauf ansehen und verwalten
Sowohl für den asynchronen als auch für den synchronen Modus des Befehls sessions submit instrumentation können Sie den Befehl sessions describe verwenden, um den Jobstatus während der Ausführung abzufragen oder das Ergebnis nach Abschluss abzurufen:
gcloud beta device-run sessions describe SESSION_ID
Die Ausgabe fasst die Testergebnisse zusammen und enthält Links zu den Ergebnissen in der Google Cloud Console. Beispiel:
Session SESSION_ID finished with result [FAILED].
Result files are stored at [https://console.cloud.google.com/storage/browser/BUCKET_NAME/automation/sessions/SESSION_ID/].
JOB NAME EXECUTION NAME EXECUTION RESULT
job-000 all FAILED: 2 test cases failed, 5 passed
Verwenden Sie den folgenden Befehl, um alle laufenden und abgeschlossenen Sitzungen aufzulisten:
gcloud beta device-run sessions list
Sie erhalten eine Ausgabe mit der Liste der Sitzungen in Ihrem Projekt, die in etwa so aussieht:
SESSION_ID START_TIME STATE
session-4825e153 2026-07-28T16:38:43.155Z DONE
session-813ca602 2026-07-28T22:40:32.415Z DONE
session-67cd0570 2026-07-16T08:25:55.474Z DONE
session-17cc299c 2026-07-14T14:31:33.649Z DONE
session-911d0763 2026-07-09T00:39:02.051Z DONE
session-4e943fea 2026-07-15T23:08:32.252Z DONE
session-0132e458 2026-08-20T18:33:19.751Z DONE
session-1077f07b 2026-07-28T22:35:43.848Z DONE
session-71b054c6 2026-07-15T01:15:41.643Z DONE
session-4f8b2e45 2026-08-06T23:11:56.161Z DONE
Der Befehl sessions list unterstützt alle Standard-Flag-Optionen der Google Cloud CLI. Beispiel:
gcloud beta device-run sessions list --limit 5
Das Ergebnis sieht in etwa so aus:
SESSION_ID START_TIME STATE
session-4825e153 2026-07-28T16:38:43.155Z DONE
session-813ca602 2026-07-28T22:40:32.415Z DONE
93ec2df2-d5bf-4c36-b7f7-c2a4fb0dc3ce 2026-07-03T05:10:58.015Z DONE
session-67cd0570 2026-07-16T08:25:55.474Z DONE
session-17cc299c 2026-07-14T14:31:33.649Z DONE
Oder führen Sie den folgenden Befehl aus, um alle laufenden Sitzungen aufzulisten:
gcloud beta device-run sessions list --filter RUNNING
Wenn Sie laufende Sitzungen haben, sehen Sie Ergebnisse, die in etwa so aussehen:
SESSION_ID START_TIME STATE
session-d7ff8b81 RUNNING
Andernfalls erhalten Sie Listed 0 items..
Führen Sie diesen Befehl mit Ihrer Sitzungs-ID aus, um eine laufende Sitzung abzubrechen:
gcloud beta device-run sessions cancel SESSION_ID
Der Befehl wird sofort zurückgegeben, da die Sitzung nur zum Abbrechen markiert ist. Der Abbruch erfolgt asynchron im Backend.
Wenn die Sitzung bereits beendet ist, wird nur der aktuelle Status ausgegeben. Wenn Sie den Abbruch einer abgeschlossenen Sitzung anfordern, ist dies kein Fehler.
Nächste Schritte
Als Nächstes können Sie eine ausführbare Android-Datei ausführen oder Logs suchen und analysieren.