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'interface utilisateur XCtest pour iOS à Device Farm
Device Farm fournit un support pour le framework de test de l'interface utilisateur XCtest. Plus précisément, Device Farm prend en charge les tests d'interface utilisateur XCtest écrits à la fois en langage Objective-C et en Swift
Le framework d'interface utilisateur XCtest permet de tester l'interface utilisateur dans le cadre du développement iOS, basé sur XCtest. Pour plus d'informations, consultez User Interface Testing
Pour des informations générales sur les tests dans Device Farm, consultezFrameworks de test et tests intégrés dans AWS Device Farm.
Suivez les instructions suivantes pour intégrer Device Farm au framework de test de l'interface utilisateur XCtest pour iOS.
Rubriques
Préparez vos tests d'interface utilisateur iOS XCtest
Vous pouvez charger un .ipa fichier ou un .zip fichier pour votre package de test XCTEST_UI.
Un .ipa fichier est une archive d'application contenant l'application iOS Runner au format bundle. Les fichiers supplémentaires ne peuvent pas être inclus dans le .ipa fichier.
Si vous chargez un .zip fichier, celui-ci peut contenir directement l'application iOS Runner ou un .ipa fichier. Vous pouvez également inclure d'autres fichiers dans le .zip fichier si vous souhaitez les utiliser pendant les tests. Par exemple, vous pouvez inclure des fichiers tels que.xctestrun, .xcworkspace ou un .zip fichier .xcodeproj interne pour exécuter des plans de test XCUI sur une batterie de périphériques. Des instructions détaillées sur la façon d'exécuter des plans de test sont disponibles dans le fichier de spécification de test par défaut pour le type de test XCUI.
Option 1 : Création d'un package .ipa pour l'interface utilisateur XCtest
Votre AppName UITest-Runner.app bundle est produit par Xcode lorsque vous créez votre projet à des fins de test. Vous pouvez la trouver dans le répertoire Products de votre projet.
Pour créer un fichier .ipa :
-
Créez un répertoire appelé
Payload. -
Ajoutez le répertoire de votre application au répertoire Payload.
-
Archivez le répertoire Payload dans un
.zipfichier, puis modifiez l'extension de fichier en.ipa.
La structure de dossiers suivante montre comment un exemple d'application nommé my-project-nameUITest-Runner.app serait empaqueté sous forme de .ipa fichier :
. └── my-project-nameUITest.ipa └── Payload (directory) └── my-project-nameUITest-Runner.app
Option 2 : Création d'un package .zip pour l'interface utilisateur XCtest
Device Farm génère automatiquement un .xctestrun fichier pour vous permettre d'exécuter votre suite complète de tests d'interface utilisateur XCtest. Si vous souhaitez utiliser votre propre .xctestrun fichier sur Device Farm, vous pouvez compresser vos .xctestrun fichiers et le répertoire de l'application dans un .zip fichier. Si vous avez déjà un .ipa fichier pour votre package de test, vous pouvez l'inclure ici au lieu de*-Runner.app.
. └── swift-sample-UI.zip (directory) ├── my-project-nameUITest-Runner.app [OR] my-project-nameUITest.ipa ├── SampleTestPlan_2.xctestrun ├── SampleTestPlan_1.xctestrun └── (any other files)
Si vous souhaitez exécuter un plan de test Xcode pour vos tests XCUI sur Device Farm, vous pouvez créer un zip contenant votre fichier my-project-name UITest-Runner.app ou my-project-name et les fichiers de code source xcode requis pour exécuter XCTEST_UI avec des plans de test, y compris un UITest.ipa fichier ou. .xcworkspace .xcodeproj
Voici un exemple de zip utilisant un .xcodeproj fichier :
. └── swift-sample-UI.zip (directory) ├── my-project-nameUITest-Runner.app [OR] my-project-nameUITest.ipa ├── (any directory) └──SampleXcodeProject.xcodeproj├── Testplan_1.xctestplan ├── Testplan_2.xctestplan └── (any other source code files created by xcode with .xcodeproj)
Voici un exemple de zip utilisant un .xcworkspace fichier :
. └──swift-sample-UI.zip (directory) ├── my-project-nameUITest-Runner.app [OR] my-project-nameUITest.ipa └── (any directory) │ ├── SampleXcodeProject.xcodeproj │ ├── Testplan_1.xctestplan │ ├── Testplan_2.xctestplan | └── (any other source code files created by xcode with .xcodeproj) └──SampleWorkspace.xcworkspace└── contents.xcworkspacedata
Note
Assurez-vous que vous n'avez pas de répertoire nommé « Payload » dans votre package .zip de l'interface utilisateur XCtest.
Exécuter des tests d'interface utilisateur iOS XCtest (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 de Création d'un projet dans AWS Device Farm
-
Choisissez Créer une course.
-
Sous Sélectionnez l'application et le type d'exécution, dans la section Type d'exécution, choisissez l'application iOS.
-
Dans la section Sélectionner une application, dans les options de sélection de l'application, sélectionnez Télécharger votre propre application. Sélectionnez ensuite Choisir un fichier sous Télécharger l'application.
-
Recherchez et sélectionnez votre fichier d'application iOS. Le fichier doit être au format .ipa.
Note
Assurez-vous que votre fichier .ipa est conçu pour un appareil iOS et non pour un simulateur.
-
Sous Configurer le test, dans la section Sélectionner le framework de test, choisissez XCtest UI. Sélectionnez ensuite Choisir un fichier sous Télécharger l'application.
-
Naviguez jusqu'au fichier .ipa ou .zip qui contient votre lanceur de tests iOS XCtest UI et choisissez-le.
-
(Facultatif) Pour configurer les propriétés au niveau de l'exécution, mettez à jour la section Paramètres d'exécution :
-
Pour que Device Farm génère un rapport Test Insights une fois votre exécution terminée, activez Générer un rapport de test. Cette option n'est disponible que dans un environnement de test personnalisé.
Les conditions préalables suivantes s'appliquent :
-
Vos tests doivent générer un
.xcresultbundle Xcode et l'écrire dans$DEVICEFARM_DERIVED_DATA_PATH. Par exemple, passez-derivedDataPath $DEVICEFARM_DERIVED_DATA_PATHàxcodebuild. La spécification de test de l'interface utilisateur par défaut de XCtest produit et stocke automatiquement ce bundle si vous conservez la configuration par défaut.
Pour plus d'informations sur l'affichage de votre rapport, consultezAfficher un rapport de test (console).
-
-
-
Effectuez les étapes restantes du processus de création de l'exécution. Sélectionnez les appareils sur lesquels vous souhaitez effectuer le test et spécifiez éventuellement une configuration supplémentaire.
-
Choisissez Créer une course. Device Farm exécute votre test et affiche les résultats sur la console.
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 afficher un résumé des résultats des tests, y compris le nombre total de tests, le nombre de tests réussis et d'échecs, la durée totale d'exécution des tests et la durée médiane d'exécution des tests. Sous le résumé, le tableau des tests montre une répartition par test.
Chaque ligne du tableau Tests comprend les colonnes suivantes :
-
Résultat : si le test a réussi, échoué ou a été ignoré.
-
Classe de test : classe à laquelle appartient le test.
-
Nom du test : nom de la méthode de test.
-
Trace de pile : en cas d'échec d'un test, lien vers la trace de pile de la panne.
-
Durée : durée d'exécution du test.
-
Heure de début et heure de fin : heure de début et de fin du test.
-
Résultat du framework : chaîne de résultats que le framework XCtest a signalée pour le test.
-
Ensemble de tests : ensemble de tests auquel appartient le test.
-
Identifiant de nœud : identifiant de nœud xcresult pour le scénario de test.
Vous pouvez rechercher un test par nom, classe ou statut. Pour choisir les colonnes à afficher, cliquez sur l'icône Paramètres. 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éveloppez une classe pour voir ses tests individuels, comme indiqué dans la capture d'écran suivante.
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.
Sans activation des informations de test
Les résultats des tâches affichent les résultats de test standard et les artefacts, tels que les onglets Suites , Logs et Screenshots, 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 Apple iPhone", "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 Apple iPhone", "platform": "IOS", "os": "18", "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 sur les tests, la réponse inclut également un insights objet contenant 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: 3.214 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'interface utilisateur XCtest :
{ "version": "1.0", "jobArn": "arn:aws:devicefarm:us-west-2:123456789012:job:5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE/a1b2c3d4-e5f6-4a7b-8c9d-67890EXAMPLE/00000", "deviceName": "Apple iPhone 15", "deviceArn": "arn:aws:devicefarm:us-west-2::device:A1B2C3D4E5F60718293A4B5C6D7E8F90", "deviceOsVersion": "17.5", "metrics": { "testsTotal": 3, "testsPassed": 2, "testsFailed": 1, "testsSkipped": 0, "testsErrored": 0, "testsOther": 0, "testsPassedPercentage": 66.67, "totalTestExecutionDurationSeconds": 6.914, "medianTestExecutionDurationSeconds": 2.062 }, "testDetails": [ { "testName": "test_execute()", "testClass": "AlertsTest", "frameworkResult": "Passed", "result": "PASSED", "durationSeconds": 2.062, "startTimestamp": "2026-07-31T16:58:26.646000Z", "endTimestamp": "2026-07-31T16:58:28.708000Z", "testBundle": "AWSDeviceFarmiOSReferenceAppSwiftUITests", "nodeIdentifier": "AlertsTest/test_execute()" }, { "testName": "test_login()", "testClass": "LoginTest", "frameworkResult": "Failed", "result": "FAILED", "durationSeconds": 3.541, "startTimestamp": "2026-07-31T16:58:29.000000Z", "endTimestamp": "2026-07-31T16:58:32.541000Z", "stackTrace": "LoginTest.swift:88: XCTAssertEqual failed: (\"Welcome\") is not equal to (\"Error\")\nLoginTest.swift:91: XCTAssertTrue failed", "testBundle": "AWSDeviceFarmiOSReferenceAppSwiftUITests", "nodeIdentifier": "LoginTest/test_login()" }, { "testName": "test_themeRendering()", "testClass": "ThemeTest", "frameworkResult": "Passed", "result": "PASSED", "durationSeconds": 1.311, "testBundle": "AWSDeviceFarmiOSReferenceAppSwiftUITests", "nodeIdentifier": "ThemeTest/test_themeRendering()", "testArguments": "Dark Appearance, Portrait" } ] }
Le rapport contient les champs de niveau supérieur suivants :
version,jobArnLa version du schéma du rapport et l'ARN de la tâche.
deviceName,deviceArn,deviceOsVersionLe nom et l'ARN du périphérique qui a exécuté la tâche, ainsi que la version de son système d'exploitation.
metricsRésultats agrégés pour le poste : le nombre total de tests (
testsTotal) et le nombre de tests réussis (testsPassed), échoués (testsFailed), ignorés (testsSkipped), erronés (testsErrored) ou ayant donné un autre résultat (testsOther), ainsi que le taux de réussite (testsPassedPercentage), la durée totale du test (totalTestExecutionDurationSeconds) et la durée médiane du test ().medianTestExecutionDurationSeconds
Chaque entrée testDetails contient les champs suivants :
testName,testClassLe nom de la méthode de test et sa classe de test.
result,frameworkResultLe résultat Device Farm pour le test et la chaîne de résultats signalée par le framework XCTest. Device Farm correspond
frameworkResultauresultchamp normalisé.durationSeconds,startTimestamp,endTimestampDurée du test en secondes et heures de début et de fin.
testBundle,nodeIdentifierLe bundle de test auquel appartient le test et l'identifiant du nœud xcresult pour le scénario de test.
testArgumentsPour une invocation de test paramétrée, le libellé de l'argument pour l'invocation.
stackTraceEn cas d'échec d'un test, la trace de la panne.