View a markdown version of this page

Intégration de l'instrumentation Android à Device Farm - AWS Device Farm

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Intégration de l'instrumentation Android à Device Farm

Note

Suivez les instructions suivantes pour intégrer les tests d'instrumentation Android à AWS Device Farm. Pour plus d'informations sur l'utilisation des tests d'instrumentation dans Device Farm, consultezInstrumentation pour Android et AWS Device Farm.

Exécuter des tests d'instrumentation Android (console)

Utilisez la console Device Farm pour télécharger vos tests.

  1. Connectez-vous à la console Device Farm à l'adresse https://console.aws.amazon.com/devicefarm.

  2. Dans le volet de navigation, choisissez Mobile Device Testing, puis choisissez Projets.

  3. Dans la liste des projets, choisissez le projet dans lequel vous souhaitez télécharger vos tests.

    Astuce

    Vous pouvez utiliser la barre de recherche pour filtrer la liste des projets par nom.

    Pour créer un projet, suivez les instructions fournies dans Création d'un projet dans AWS Device Farm.

  4. Sélectionnez Créer une course.

  5. Sous Sélectionnez l'application et le type d'exécution, dans la section Type d'exécution, sélectionnez l'application Android.

  6. Sous Sélectionner une application, dans la section Options de sélection des applications, choisissez Sélectionner un exemple d'application fourni par Device Farm si vous ne possédez pas d'application. Si vous apportez votre propre application, sélectionnez Télécharger votre propre application, puis choisissez votre APK (format de fichier .apk).

  7. Sous Configurer le test, dans la section Sélectionner le framework de test, choisissez Instrumentation, puis choisissez Choisir un fichier. Naviguez jusqu'au fichier APK (format de fichier .apk) qui contient vos tests et sélectionnez-le.

  8. Sous Choisissez votre environnement d'exécution, sélectionnez Exécuter votre test dans un environnement personnalisé ou Exécuter votre test dans notre environnement standard. Pour de plus amples informations, veuillez consulter Environnements de test dans AWS Device Farm.

  9. Si vous avez choisi l'environnement personnalisé, vous pouvez utiliser la spécification de test par défaut qui est renseignée pour les tests d'instrumentation, ou choisir Télécharger votre propre spécification de test pour fournir la vôtre.

  10. Sous Sélectionner les appareils, choisissez une méthode de sélection des appareils. Sélectionnez Utiliser le pool d'appareils pour choisir parmi une collection d'appareils organisée ou un pool d'appareils personnalisé que vous avez créé. Sélectionnez Sélectionner manuellement les appareils pour sélectionner les appareils individuels sur lesquels effectuer vos tests. La section Compatibilité des appareils indique combien d'appareils du pool sélectionné sont compatibles avec votre application. Pour de plus amples informations, veuillez consulter Prise en charge des appareils dans AWS Device Farm.

  11. Pour configurer les propriétés au niveau de l'exécution, mettez à jour la section Paramètres d'exécution. Ici, vous pouvez effectuer les opérations suivantes :

    1. (Facultatif) Pour que Device Farm génère un rapport de test une fois votre exécution terminée, sélectionnez Générer un rapport de test. Cette option n'est disponible que dans un environnement de test personnalisé. Device Farm génère le rapport à partir des résultats d'instrumentation inclus dans la sortie de vos spécifications de test. Si vous téléchargez votre propre spécification de test, assurez-vous qu'elle affiche les résultats de l'instrumentation sur la sortie de votre spécification de test.

  12. Effectuez les étapes restantes, puis lancez la course.

Afficher un rapport de test (console)

  1. Connectez-vous à la console Device Farm à l'adresse https://console.aws.amazon.com/devicefarm.

  2. Dans le volet de navigation, choisissez Mobile Device Testing, puis choisissez Projets.

  3. Choisissez le projet qui contient l'exécution que vous souhaitez inspecter.

  4. Choisissez la course terminée pour en afficher les détails.

  5. Choisissez l'une des tâches terminées pour afficher les résultats pour cet appareil.

Avec les informations de test activées

Les résultats des tâches incluent un onglet Rapport de test. Sélectionnez-le pour voir la répartition par test. Les captures d'écran suivantes montrent l'onglet Rapport de test avec toutes les colonnes visibles.

Le premier ensemble de colonnes de l'onglet Rapport de test pour une tâche d'instrumentation terminée.
Les colonnes restantes de l'onglet Rapport de test pour une tâche d'instrumentation terminée.

L'onglet affiche les champs suivants pour chaque test :

testName

Le nom de la méthode de test.

testClass

Le nom de la classe de test.

result

Le résultat du test Device Farm.

frameworkResult

Le résultat indiqué par le cadre d'instrumentation. Device Farm associe cette valeur au result champ normalisé.

durationSeconds

Durée du test, en secondes.

startTimestamp

L'heure à laquelle le test a commencé.

endTimestamp

Heure à laquelle le test s'est terminé.

current

Position du test au cours de la course.

numTests

Le nombre total de tests en cours d'exécution.

statusCode

Code d'état de l'instrumentation indiqué par le test.

stream

Une version lisible par l'homme de la sortie de l'instrumentation pour le test.

stackTrace

En cas d'échec d'un test, la trace de la panne.

Pour télécharger le rapport de test complet sous forme de fichier JSON, choisissez Télécharger le résumé complet en haut des détails de la tâche.

Pour choisir les colonnes à afficher, cliquez sur l'icône représentant un engrenage. Dans les paramètres, vous pouvez sélectionner les colonnes à afficher et activer ou désactiver l'option Grouper par classe. L'option Grouper par classe est activée par défaut, ce qui permet de regrouper les tests en fonction de leur classe de test. Désactivez-le pour afficher une liste complète de tous les tests, comme indiqué dans la capture d'écran suivante.

L'onglet Rapport de test avec Grouper par classe désactivé, affichant une liste plate de tests.

Sans activation des informations de test

Les résultats de la tâche indiquent les résultats de test standard et les artefacts, mais aucun onglet Rapport de test. Pour générer un rapport de test, planifiez une nouvelle exécution en activant les informations sur les tests.

Les résultats d'une tâche d'instrumentation terminée sans activation des informations de test.

Afficher un rapport de test (AWS CLI)

Exécutez get-job et spécifiez l'ARN du job :

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

Sans activation des informations de test

Si vous n'avez pas activé les informations relatives aux tests, la réponse contient les champs de tâche standard, tels que le statut de la tâche, le résultat, les compteurs et l'appareil :

{ "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 } }

Avec les informations de test activées

Si vous avez activé les informations de test, la réponse inclut également un insights objet. Cet objet contient l'état du rapport de test, des mesures de haut niveau et une URL présignée vers le rapport détaillé :

{ "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" } } } }

Le testDetailsUrl champ est une URL présignée vers le JSON du rapport de test complet. Téléchargez-le pour obtenir la répartition par test :

curl -o test-report.json "PRESIGNED_URL"

Voici un exemple de rapport de test pour une tâche d'instrumentation :

{ "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 }

Le rapport contient les champs de niveau supérieur suivants :

version

Version du schéma du rapport.

jobArn

ARN de la tâche.

metrics

Résultats agrégés pour le poste. L'objet metrics comporte les champs suivants :

testsTotal

Le nombre total de tests effectués dans le poste.

testsPassed

Le nombre de tests réussis.

testsFailed

Le nombre de tests qui ont échoué.

testsSkipped

Le nombre de tests qui ont été ignorés.

testsErrored

Le nombre de tests qui ont donné lieu à des erreurs.

testsOther

Le nombre de tests ayant donné un autre résultat.

testsPassedPercentage

Le pourcentage de tests réussis.

totalTestExecutionDurationSeconds

Durée totale de tous les tests, en secondes.

medianTestExecutionDurationSeconds

Durée médiane d'un test, en secondes.

errorMessage

En cas d'échec de l'exécution, un message d'erreur les récapitule.

instrumentationCode

Le code de sortie global de l'instrumentation pour la tâche.

testDetails

Une liste des résultats obtenus par test. Chaque entrée testDetails contient les champs suivants :

testName

Le nom de la méthode de test.

testClass

Le nom de la classe de test.

result

Le résultat du test Device Farm.

frameworkResult

Le résultat indiqué par le cadre d'instrumentation. Device Farm associe cette valeur au result champ normalisé.

durationSeconds

Durée du test, en secondes.

startTimestamp

L'heure à laquelle le test a commencé.

endTimestamp

Heure à laquelle le test s'est terminé.

current

Position du test au cours de la course.

numTests

Le nombre total de tests en cours d'exécution.

statusCode

Code d'état de l'instrumentation indiqué par le test.

stream

Une version lisible par l'homme de la sortie de l'instrumentation pour le test.

stackTrace

En cas d'échec d'un test, la trace de la panne.

(Facultatif) Prenez des captures d'écran lors de tests d'instrumentation Android

Vous pouvez effectuer des captures d'écran dans le cadre de vos tests Instrumentation Android.

Pour effectuer des captures d'écran, appelez l'une des méthodes suivantes :

  • Pour Robotium, appelez la méthode takeScreenShot (par exemple, solo.takeScreenShot();).

  • Pour Spoon, appelez la méthode screenshot, par exemple :

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

Lors d'un test, Device Farm obtient des captures d'écran depuis les emplacements suivants sur les appareils, s'ils existent, puis les ajoute aux rapports de test :

  • /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