View a markdown version of this page

Integration der Android-Instrumentierung in die Gerätefarm - AWS Device Farm

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Integration der Android-Instrumentierung in die Gerätefarm

Anmerkung

Verwenden Sie die folgenden Anweisungen, um Android-Instrumentierungstests in AWS Device Farm zu integrieren. Weitere Informationen zur Verwendung von Instrumentierungstests in Device Farm finden Sie unterInstrumentierung für Android und AWS Device Farm.

Führen Sie Android-Instrumentierungstests aus (Konsole)

Verwenden Sie die Device Farm-Konsole, um Ihre Tests hochzuladen.

  1. Melden Sie sich bei der Device Farm-Konsole unter an https://console.aws.amazon.com/devicefarm.

  2. Wählen Sie im Navigationsbereich Mobile Device Testing und dann Projects aus.

  3. Wählen Sie in der Projektliste das Projekt aus, in das Sie Ihre Tests hochladen möchten.

    Tipp

    Sie können die Suchleiste verwenden, um die Projektliste nach Namen zu filtern.

    Befolgen Sie die Anweisungen unter Ein Projekt in AWS Device Farm erstellen, um ein neues Projekt zu erstellen.

  4. Wählen Sie Lauf erstellen aus.

  5. Wählen Sie unter App und Ausführungstyp auswählen im Abschnitt Ausführungstyp die Option Android-App aus.

  6. Wählen Sie unter App auswählen im Abschnitt Optionen zur App-Auswahl die Option Von Device Farm bereitgestellte Beispiel-App auswählen, falls Sie keine App haben. Wenn Sie Ihre eigene App mitbringen, wählen Sie Eigene App hochladen aus und wählen Sie dann Ihr APK (.apk-Dateiformat).

  7. Wählen Sie unter Test konfigurieren im Abschnitt Testframework auswählen die Option Instrumentation und dann Datei auswählen aus. Navigieren Sie zu der APK-Datei (.apk-Dateiformat), die Ihre Tests enthält, und wählen Sie sie aus.

  8. Wählen Sie unter Wählen Sie Ihre Ausführungsumgebung entweder Ihren Test in einer benutzerdefinierten Umgebung aus oder Führen Sie Ihren Test in unserer Standardumgebung aus. Weitere Informationen finden Sie unter Testumgebungen in AWS Device Farm.

  9. Wenn Sie die benutzerdefinierte Umgebung ausgewählt haben, können Sie die Standard-Testspezifikation verwenden, die für Instrumentierungstests aufgefüllt ist, oder wählen Sie Eigene Testspezifikation hochladen, um Ihre eigene Testspezifikation bereitzustellen.

  10. Wählen Sie unter Geräte auswählen eine Methode zur Geräteauswahl aus. Wählen Sie Gerätepool verwenden aus, um aus einer kuratierten Sammlung von Geräten oder einem von Ihnen erstellten benutzerdefinierten Gerätepool auszuwählen. Wählen Sie Geräte manuell auswählen aus, um einzelne Geräte auszuwählen, mit denen Sie Ihre Tests ausführen möchten. Im Abschnitt Gerätekompatibilität wird angezeigt, wie viele Geräte im ausgewählten Pool mit Ihrer App kompatibel sind. Weitere Informationen finden Sie unter Geräteunterstützung in AWS Device Farm.

  11. Um die Eigenschaften auf Run-Level zu konfigurieren, aktualisieren Sie den Abschnitt Ausführungseinstellungen. Hier können Sie Folgendes tun:

    1. (Optional) Damit Device Farm nach Abschluss Ihres Laufs einen Testbericht generiert, wählen Sie Testbericht generieren aus. Diese Option ist nur in einer benutzerdefinierten Testumgebung verfügbar. Device Farm generiert den Bericht anhand der Instrumentierungsergebnisse, die in Ihrer Testspezifikationsausgabe enthalten sind. Wenn Sie Ihre eigene Testspezifikation hochladen, stellen Sie sicher, dass die Instrumentierungsergebnisse an Ihre Testspezifikationsausgabe ausgegeben werden.

  12. Führen Sie die verbleibenden Schritte aus und starten Sie dann den Testlauf.

Einen Testbericht anzeigen (Konsole)

  1. Melden Sie sich bei der Device Farm-Konsole unter an https://console.aws.amazon.com/devicefarm.

  2. Wählen Sie im Navigationsbereich Mobile Device Testing und dann Projects aus.

  3. Wählen Sie das Projekt aus, das den Testlauf enthält, den Sie überprüfen möchten.

  4. Wählen Sie den abgeschlossenen Lauf aus, um dessen Details zu öffnen.

  5. Wählen Sie einen der abgeschlossenen Jobs aus, um die Ergebnisse für dieses Gerät zu öffnen.

Mit aktivierten Testeinblicken

Die Auftragsergebnisse enthalten eine Registerkarte „Testbericht“. Wählen Sie es aus, um eine Aufschlüsselung pro Test anzuzeigen. Die folgenden Screenshots zeigen die Registerkarte „Testbericht“, auf der alle Spalten sichtbar sind.

Die ersten Spalten auf der Registerkarte Testbericht für einen abgeschlossenen Instrumentierungsauftrag.
Die verbleibenden Spalten auf der Registerkarte Testbericht für einen abgeschlossenen Instrumentierungsauftrag.

Auf der Registerkarte werden die folgenden Felder für jeden Test angezeigt:

testName

Der Name der Testmethode.

testClass

Der Name der Testklasse.

result

Das Device Farm-Ergebnis für den Test.

frameworkResult

Das Ergebnis, das das Instrumentierungs-Framework gemeldet hat. Device Farm ordnet diesen Wert dem normalisierten result Feld zu.

durationSeconds

Die Dauer des Tests in Sekunden.

startTimestamp

Die Uhrzeit, zu der der Test gestartet wurde.

endTimestamp

Die Uhrzeit, zu der der Test beendet wurde.

current

Die Position des Tests im Lauf.

numTests

Die Gesamtzahl der Tests im Lauf.

statusCode

Der Statuscode der Instrumentierung, den der Test gemeldet hat.

stream

Eine für Menschen lesbare Version der Instrumentenausgabe für den Test.

stackTrace

Bei einem fehlgeschlagenen Test der Stack-Trace des Fehlers.

Um den vollständigen Testbericht als JSON-Datei herunterzuladen, wählen Sie Vollständige Zusammenfassung herunterladen oben in den Auftragsdetails aus.

Um auszuwählen, welche Spalten angezeigt werden, wählen Sie das Zahnradsymbol. In den Einstellungen kannst du auswählen, welche Spalten angezeigt werden sollen, und nach Klassen gruppieren ein- oder ausschalten. Nach Klasse gruppieren ist standardmäßig aktiviert, wodurch die Tests nach ihrer Testklasse gruppiert werden. Schalten Sie es aus, um eine einfache Liste aller Tests anzuzeigen, wie im folgenden Screenshot gezeigt.

Die Registerkarte „Testbericht“, auf der die Option Nach Klasse gruppieren deaktiviert ist, wird eine einfache Liste von Tests angezeigt.

Ohne aktivierte Testeinblicke

Die Auftragsergebnisse zeigen die Standardtestausgabe und die Artefakte, aber keine Registerkarte „Testbericht“. Um einen Testbericht zu generieren, planen Sie einen neuen Testlauf mit aktivierten Testeinblicken.

Die Auftragsergebnisse für einen abgeschlossenen Instrumentierungsjob ohne aktivierte Testeinblicke.

Sehen Sie sich einen Testbericht an (AWS CLI)

Führen Sie den Job-ARN aus get-job und geben Sie ihn an:

aws devicefarm get-job --arn arn:aws:devicefarm:us-west-2:123456789012:job:PROJECT_ID/RUN_ID/00000

Ohne aktivierte Testeinblicke

Wenn Sie Testinformationen nicht aktiviert haben, enthält die Antwort die Standardfelder für den Job, z. B. den Jobstatus, das Ergebnis, die Leistungsindikatoren und das Gerät:

{ "job": { "arn": "arn:aws:devicefarm:us-west-2:123456789012:job:EXAMPLE-PROJECT/EXAMPLE-RUN/00000", "name": "Example Android Phone", "created": "2026-08-05T14:26:56.959000-07:00", "status": "COMPLETED", "result": "PASSED", "counters": { "total": 3, "passed": 3, "failed": 0, "warned": 0, "errored": 0, "stopped": 0, "skipped": 0 }, "message": "Successful test lifecycle of Setup Test", "device": { "arn": "arn:aws:devicefarm:us-west-2::device:EXAMPLEDEVICEID", "name": "Example Android Phone", "platform": "ANDROID", "os": "16", "formFactor": "PHONE", "fleetType": "PUBLIC" }, "deviceMinutes": { "total": 1.38, "metered": 0.0, "unmetered": 1.13 }, "videoCapture": true } }

Mit aktivierten Testeinblicken

Wenn Sie Testeinblicke aktiviert haben, enthält die Antwort auch ein insights Objekt. Dieses Objekt enthält den Status des Testberichts, allgemeine Metriken und eine vorsignierte URL zum detaillierten Bericht:

{ "job": { "arn": "arn:aws:devicefarm:us-west-2:123456789012:job:EXAMPLE-PROJECT/EXAMPLE-RUN/00000", "status": "COMPLETED", "result": "PASSED", "counters": { ... }, "device": { ... }, "deviceMinutes": { ... }, "videoCapture": true, "insights": { "status": "COMPLETED", "testReport": { "message": "Results: 2 Executed | 2 passed, Median test duration: 28.926 seconds.", "metrics": { "testsTotal": 2, "testsPassed": 2, "testsFailed": 0, "testsSkipped": 0, "testsErrored": 0, "testsOther": 0, "testsPassedPercentage": 100.0 }, "testDetailsUrl": "https://EXAMPLE-PRESIGNED-URL" } } } }

Das testDetailsUrl Feld ist eine vorsignierte URL zum vollständigen Testbericht-JSON. Laden Sie es herunter, um die Aufschlüsselung pro Test zu erhalten:

curl -o test-report.json "PRESIGNED_URL"

Im Folgenden finden Sie ein Beispiel für einen Testbericht für einen Instrumentierungsauftrag:

{ "version": "1.0", "jobArn": "arn:aws:devicefarm:us-west-2:123456789012:job:EXAMPLE-PROJECT/EXAMPLE-RUN/00000", "metrics": { "testsTotal": 3, "testsPassed": 2, "testsFailed": 1, "testsSkipped": 0, "testsErrored": 0, "testsOther": 0, "testsPassedPercentage": 66.67, "totalTestExecutionDurationSeconds": 26.004, "medianTestExecutionDurationSeconds": 1.598 }, "testDetails": [ { "testName": "testConnect", "testClass": "com.example.myapp.GpsConnectInstrumentedTest", "frameworkResult": "PASSED", "result": "PASSED", "durationSeconds": 24.399, "startTimestamp": "2026-08-05T20:38:30.131514Z", "endTimestamp": "2026-08-05T20:38:54.530369Z", "statusCode": 0, "current": 1, "numTests": 3 }, { "testName": "testHistoryOff", "testClass": "com.example.myapp.NotificationHistoryInstrumentedTest", "frameworkResult": "PASSED", "result": "PASSED", "durationSeconds": 1.598, "startTimestamp": "2026-08-05T20:38:54.531765Z", "endTimestamp": "2026-08-05T20:38:56.130032Z", "statusCode": 0, "current": 2, "numTests": 3 }, { "testName": "testConnect", "testClass": "com.example.myapp.WifiConnectInstrumentedTest", "frameworkResult": "FAILED", "result": "FAILED", "durationSeconds": 0.002, "startTimestamp": "2026-08-05T20:38:56.131857Z", "endTimestamp": "2026-08-05T20:38:56.133770Z", "stackTrace": "java.lang.NullPointerException: Attempt to invoke virtual method 'boolean androidx.test.uiautomator.UiDevice.pressHome()' on a null object reference\n\tat com.example.myapp.WifiConnectInstrumentedTest.testConnect(WifiConnectInstrumentedTest.java:93)\n\t...", "stream": "\nError in testConnect(com.example.myapp.WifiConnectInstrumentedTest):\njava.lang.NullPointerException: Attempt to invoke virtual method 'boolean androidx.test.uiautomator.UiDevice.pressHome()' on a null object reference\n\t...", "statusCode": -2, "current": 3, "numTests": 3 } ], "errorMessage": "There was 1 failure:\n1) testConnect(com.example.myapp.WifiConnectInstrumentedTest)\njava.lang.NullPointerException: Attempt to invoke virtual method 'boolean androidx.test.uiautomator.UiDevice.pressHome()' on a null object reference\n\t...\nFAILURES!!!\nTests run: 3, Failures: 1", "instrumentationCode": -1 }

Der Bericht enthält die folgenden Felder auf oberster Ebene:

version

Die Version des Berichtsschemas.

jobArn

Der ARN des Auftrags.

metrics

Aggregierte Ergebnisse für den Job. Das metrics-Objekt enthält die folgenden Felder:

testsTotal

Die Gesamtzahl der Tests im Job.

testsPassed

Die Anzahl der Tests, die bestanden wurden.

testsFailed

Die Anzahl der fehlgeschlagenen Tests.

testsSkipped

Die Anzahl der Tests, die übersprungen wurden.

testsErrored

Die Anzahl der fehlgeschlagenen Tests.

testsOther

Die Anzahl der Tests mit einem anderen Ergebnis.

testsPassedPercentage

Der Prozentsatz der Tests, die bestanden wurden.

totalTestExecutionDurationSeconds

Die Gesamtdauer aller Tests in Sekunden.

medianTestExecutionDurationSeconds

Die mittlere Dauer eines Tests in Sekunden.

errorMessage

Wenn bei dem Testlauf Fehler aufgetreten sind, werden diese in einer zusammenfassenden Fehlermeldung angezeigt.

instrumentationCode

Der gesamte Instrumentierungs-Exitcode für den Job.

testDetails

Eine Liste der Ergebnisse pro Test. Jeder Eintrag in testDetails enthält die folgenden Felder:

testName

Der Name der Testmethode.

testClass

Der Name der Testklasse.

result

Das Device Farm-Ergebnis für den Test.

frameworkResult

Das Ergebnis, das das Instrumentierungs-Framework gemeldet hat. Device Farm ordnet diesen Wert dem normalisierten result Feld zu.

durationSeconds

Die Dauer des Tests in Sekunden.

startTimestamp

Die Uhrzeit, zu der der Test gestartet wurde.

endTimestamp

Die Uhrzeit, zu der der Test beendet wurde.

current

Die Position des Tests im Lauf.

numTests

Die Gesamtzahl der Tests im Lauf.

statusCode

Der Statuscode der Instrumentierung, den der Test gemeldet hat.

stream

Eine für Menschen lesbare Version der Instrumentenausgabe für den Test.

stackTrace

Bei einem fehlgeschlagenen Test der Stack-Trace des Fehlers.

(Optional) Machen Sie Screenshots in Android-Instrumentierungstests

Sie können im Rahmen Ihrer Android-Instrumentierungstests Screenshots erstellen.

Rufen Sie eine der folgenden Methoden auf, um Screenshots zu erstellen:

  • Rufen Sie für Robotium die Methode takeScreenShot auf (z. B. solo.takeScreenShot();).

  • Rufen Sie für Spoon die Methode screenshot auf, z. B.:

    Spoon.screenshot(activity, "initial_state"); /* Normal test code... */ Spoon.screenshot(activity, "after_login");

Während eines Testlaufs ruft Device Farm Screenshots von den folgenden Stellen auf den Geräten ab, sofern diese vorhanden sind, und fügt sie dann den Testberichten hinzu:

  • /sdcard/robotium-screenshots

  • /sdcard/test-screenshots

  • /sdcard/Download/spoon-screenshots/test-class-name/test-method-name

  • /data/data/application-package-name/app_spoon-screenshots/test-class-name/test-method-name