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.
-
Connectez-vous à la console Device Farm à l'adresse https://console.aws.amazon.com/devicefarm
. -
Dans le volet de navigation, choisissez Mobile Device Testing, puis choisissez Projets.
-
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.
-
Sélectionnez Créer une course.
-
Sous Sélectionnez l'application et le type d'exécution, dans la section Type d'exécution, sélectionnez l'application Android.
-
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).
-
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.
-
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.
-
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.
-
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.
-
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 :
-
(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.
-
-
Effectuez les étapes restantes, puis lancez la course.
Afficher un rapport de test (console)
Connectez-vous à la console Device Farm à l'adresse https://console.aws.amazon.com/devicefarm
. -
Dans le volet de navigation, choisissez Mobile Device Testing, puis choisissez Projets.
-
Choisissez le projet qui contient l'exécution que vous souhaitez inspecter.
-
Choisissez la course terminée pour en afficher les détails.
-
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.
L'onglet affiche les champs suivants pour chaque test :
testNameLe nom de la méthode de test.
testClassLe nom de la classe de test.
resultLe résultat du test Device Farm.
frameworkResultLe résultat indiqué par le cadre d'instrumentation. Device Farm associe cette valeur au
resultchamp normalisé.durationSecondsDurée du test, en secondes.
startTimestampL'heure à laquelle le test a commencé.
endTimestampHeure à laquelle le test s'est terminé.
currentPosition du test au cours de la course.
numTestsLe nombre total de tests en cours d'exécution.
statusCodeCode d'état de l'instrumentation indiqué par le test.
streamUne version lisible par l'homme de la sortie de l'instrumentation pour le test.
stackTraceEn 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.
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.
Afficher un rapport de test (AWS CLI)
Exécutez get-job et spécifiez l'ARN du job :
aws devicefarm get-job --arnarn: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 :
versionVersion du schéma du rapport.
jobArnARN de la tâche.
metrics-
Résultats agrégés pour le poste. L'objet
metricscomporte les champs suivants :testsTotalLe nombre total de tests effectués dans le poste.
testsPassedLe nombre de tests réussis.
testsFailedLe nombre de tests qui ont échoué.
testsSkippedLe nombre de tests qui ont été ignorés.
testsErroredLe nombre de tests qui ont donné lieu à des erreurs.
testsOtherLe nombre de tests ayant donné un autre résultat.
testsPassedPercentageLe pourcentage de tests réussis.
totalTestExecutionDurationSecondsDurée totale de tous les tests, en secondes.
medianTestExecutionDurationSecondsDurée médiane d'un test, en secondes.
errorMessageEn cas d'échec de l'exécution, un message d'erreur les récapitule.
instrumentationCodeLe code de sortie global de l'instrumentation pour la tâche.
testDetails-
Une liste des résultats obtenus par test. Chaque entrée
testDetailscontient les champs suivants :testNameLe nom de la méthode de test.
testClassLe nom de la classe de test.
resultLe résultat du test Device Farm.
frameworkResultLe résultat indiqué par le cadre d'instrumentation. Device Farm associe cette valeur au
resultchamp normalisé.durationSecondsDurée du test, en secondes.
startTimestampL'heure à laquelle le test a commencé.
endTimestampHeure à laquelle le test s'est terminé.
currentPosition du test au cours de la course.
numTestsLe nombre total de tests en cours d'exécution.
statusCodeCode d'état de l'instrumentation indiqué par le test.
streamUne version lisible par l'homme de la sortie de l'instrumentation pour le test.
stackTraceEn 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