Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Integrazione dell'interfaccia utente di XCTest per iOS con Device Farm
Device Farm fornisce supporto per il framework di test dell'interfaccia utente XCTest. In particolare, Device Farm supporta i test dell'interfaccia utente di XCTest scritti sia in Swift che in Swift. Objective-C https://developer.apple.com/swift/
Il framework dell'interfaccia utente XCTest consente il test dell'interfaccia utente nello sviluppo iOS, basato su XCTest. Per ulteriori informazioni, consulta la sezione User Interface Testing
Per informazioni generali sui test in Device Farm, vedere. Framework di test e test integrati in AWS Device Farm
Usa le seguenti istruzioni per integrare Device Farm con il framework di test dell'interfaccia utente XCTest per iOS.
Prepara i test dell'interfaccia utente XCTest per iOS
Puoi caricare un .ipa file o un .zip file per il tuo pacchetto di test XCTEST_UI.
Un .ipa file è un archivio di applicazioni contenente l'app iOS Runner in formato bundle. Non è possibile includere file aggiuntivi all'interno del .ipa file.
Se carichi un .zip file, può contenere direttamente l'app iOS Runner o un .ipa file. Puoi anche includere altri file all'interno del .zip file se desideri utilizzarli durante i test. Ad esempio.xctestrun, puoi includere file come .xcworkspace o .xcodeproj all'interno di un .zip file per eseguire i piani di test XCUI sulla device farm. Le istruzioni dettagliate su come eseguire i piani di test sono disponibili nel file di specifiche di test predefinito per il tipo di test XCUI.
Opzione 1: creazione di un pacchetto XCTest UI .ipa
Il tuo AppName UITest-Runner.app pacchetto viene prodotto da Xcode quando crei il tuo progetto per il test. Si trova nella directory Products per il progetto.
Per creare un file .ipa:
-
Crea una directory chiamata.
Payload -
Aggiungi la directory della tua app alla directory Payload.
-
Archivia la directory Payload in un
.zipfile e quindi modifica l'estensione del file in..ipa
La seguente struttura di cartelle mostra come un'app di esempio denominata my-project-nameUITest-Runner.app verrebbe impacchettata .ipa come file:
. └── my-project-nameUITest.ipa └── Payload (directory) └── my-project-nameUITest-Runner.app
Opzione 2: creazione di un pacchetto .zip di XCTest UI
Device Farm genera automaticamente un .xctestrun file per l'esecuzione della suite completa di test dell'interfaccia utente XCTest. Se desideri utilizzare il tuo .xctestrun file su Device Farm, puoi comprimere .xctestrun i file e la directory delle app in un file. .zip Se hai già un .ipa file per il tuo pacchetto di test, puoi includerlo qui invece di*-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)
Se desideri eseguire un piano di test Xcode per i tuoi test XCUI su Device Farm, puoi creare uno zip contenente il UITest.ipa file my-project-name UITest-Runner.app o my-project-name e i file di codice sorgente xcode necessari per eseguire XCTEST_UI con i piani di test, incluso un file or. .xcworkspace .xcodeproj
Ecco un esempio di zip che utilizza un file: .xcodeproj
. └── 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)
Ecco un esempio di zip che utilizza un .xcworkspace file:
. └──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
Nota
Assicurati di non avere una directory denominata «Payload» all'interno del pacchetto .zip di XCTest UI.
Esegui i test dell'interfaccia utente XCTest per iOS (console)
Usa la console Device Farm per caricare i tuoi test.
Accedi alla console Device Farm all'indirizzo https://console.aws.amazon.com/devicefarm
. -
Nel pannello di navigazione, scegli Mobile Device Testing, quindi scegli Progetti.
-
Nell'elenco dei progetti, scegli il progetto su cui vuoi caricare i tuoi test.
Suggerimento
Puoi usare la barra di ricerca per filtrare l'elenco dei progetti per nome.
Per creare un progetto, segui le istruzioni in Creazione di un progetto in AWS Device Farm
-
Scegli Crea esecuzione.
-
In Seleziona app e tipo di esecuzione, nella sezione Tipo di esecuzione, scegli l'app iOS.
-
Nella sezione Seleziona app, nelle opzioni di selezione dell'app, seleziona Carica la tua app. Quindi, seleziona Scegli file in Carica app.
-
Individuare e selezionare il file dell'app iOS. Il file deve essere un file .ipa.
Nota
Assicurati che il file .ipa sia integrato per un dispositivo iOS e non per un simulatore.
-
In Configura test, nella sezione Seleziona framework di test, scegli XCTest UI. Quindi, seleziona Scegli file in Carica app.
-
Cerca e scegli il file .ipa o .zip che contiene il test runner dell'interfaccia utente XCTest di iOS.
-
(Facoltativo) Per configurare le proprietà a livello di esecuzione, aggiorna la sezione Impostazioni di esecuzione:
-
Per fare in modo che Device Farm generi un report Test Insights al termine dell'esecuzione, abilita Genera rapporto di test. Questa opzione è disponibile solo in un ambiente di test personalizzato.
Sono validi i seguenti prerequisiti:
-
I tuoi test devono generare un
.xcresultpacchetto Xcode e scriverlo su.$DEVICEFARM_DERIVED_DATA_PATHAd esempio, passa-derivedDataPath $DEVICEFARM_DERIVED_DATA_PATHa.xcodebuildLa specifica di test dell'interfaccia utente XCTest predefinita produce e memorizza questo pacchetto automaticamente se si mantiene la configurazione predefinita.
Per ulteriori informazioni sulla visualizzazione del rapporto, vedere. Visualizza un rapporto di prova (console)
-
-
-
Completa i passaggi rimanenti del processo di creazione dell'esecuzione. Seleziona i dispositivi su cui desideri eseguire il test e, facoltativamente, specifica una configurazione aggiuntiva.
-
Scegli Crea corsa. Device Farm esegue il test e mostra i risultati nella console.
Visualizza un rapporto di prova (console)
Accedi alla console Device Farm all'indirizzo https://console.aws.amazon.com/devicefarm
. -
Nel pannello di navigazione, scegli Mobile Device Testing, quindi scegli Progetti.
-
Scegli il progetto che contiene l'esecuzione che desideri ispezionare.
-
Scegli la corsa completata per aprirne i dettagli.
-
Scegli uno dei lavori completati per aprire i risultati per quel dispositivo.
Con le informazioni sui test abilitate
I risultati del lavoro includono una scheda Rapporto di test. Selezionala per visualizzare un riepilogo dei risultati del test, incluso il numero totale di test, quanti sono stati superati e falliti, il tempo totale di esecuzione del test e il tempo medio di esecuzione del test. Sotto il riepilogo, la tabella Test mostra una suddivisione per test.
Ogni riga della tabella Tests include le seguenti colonne:
-
Risultato: se il test è stato superato, fallito o saltato.
-
Classe di test: la classe a cui appartiene il test.
-
Nome del test: il nome del metodo di test.
-
Stack trace: per un test fallito, un link alla traccia dello stack dell'errore.
-
Durata: quanto tempo ha impiegato il test per essere eseguito.
-
Ora di inizio e ora di fine: quando il test è iniziato e terminato.
-
Risultato del framework: la stringa dei risultati che il framework XCTest ha riportato per il test.
-
Pacchetto di test: il pacchetto di test a cui appartiene il test.
-
Identificatore del nodo: l'identificatore del nodo xcresult per il test case.
Puoi cercare un test per nome, classe o stato. Per scegliere quali colonne visualizzare, scegli l'icona Impostazioni. Nelle impostazioni, puoi selezionare le colonne da visualizzare e attivare o disattivare Raggruppa per classe. L'opzione Raggruppa per classe è attiva per impostazione predefinita e raggruppa i test in base alla classe di test. Espandi una classe per visualizzarne i singoli test, come mostrato nella schermata seguente.
Per scaricare il rapporto completo del test come file JSON, scegli Scarica il riepilogo completo nella parte superiore dei dettagli del lavoro.
Senza che le informazioni sui test siano abilitate
I risultati del lavoro mostrano l'output e gli artefatti del test standard, come le schede Suite , Logs e Screenshots, ma nessuna scheda Test report. Per generare un rapporto di test, pianifica una nuova esecuzione con le informazioni sui test abilitate.
Visualizza un rapporto di prova (AWS CLI)
Esegui get-job e specifica l'ARN del lavoro:
aws devicefarm get-job --arnarn:aws:devicefarm:us-west-2:123456789012:job:PROJECT_ID/RUN_ID/00000
Senza che le informazioni sui test siano abilitate
Se non hai abilitato i test insights, la risposta contiene i campi standard del job, come lo stato del job, il risultato, i contatori e il dispositivo:
{ "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 } }
Con i test insights abilitati
Se hai abilitato gli approfondimenti sui test, la risposta include anche un insights oggetto che contiene lo stato del rapporto di test, metriche di alto livello e un URL prefirmato al rapporto dettagliato:
{ "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" } } } }
Il testDetailsUrl campo è un URL prefirmato al JSON del rapporto di prova completo. Scaricalo per ottenere la suddivisione per test:
curl -o test-report.json "PRESIGNED_URL"
Di seguito è riportato un esempio di rapporto di test per un job dell'interfaccia utente di 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" } ] }
Il rapporto contiene i seguenti campi di primo livello:
version,jobArnLa versione dello schema del report e l'ARN del job.
deviceName,deviceArn,deviceOsVersionIl nome e l'ARN del dispositivo che ha eseguito il job e la relativa versione del sistema operativo.
metricsRisultati aggregati per il processo: il numero totale di test (
testsTotal) e il numero di test superati (testsPassed), falliti (testsFailed), saltati (testsSkipped), errati (testsErrored) o hanno avuto un altro risultato (testsOther), insieme alla percentuale di superamento (testsPassedPercentage), alla durata totale del test (totalTestExecutionDurationSeconds) e alla durata mediana del test ().medianTestExecutionDurationSeconds
Ogni voce testDetails contiene i seguenti campi:
testName,testClassIl nome del metodo di prova e la relativa classe di test.
result,frameworkResultIl risultato di Device Farm per il test e la stringa di risultati riportata dal framework XCTest. Device Farm esegue il
frameworkResultmapping sul campo normalizzatoresult.durationSeconds,startTimestamp,endTimestampLa durata del test in secondi e gli orari di inizio e fine.
testBundle,nodeIdentifierIl pacchetto di test a cui appartiene il test e l'identificatore del nodo xcresult per il test case.
testArgumentsPer una chiamata di test parametrizzata, l'etichetta dell'argomento per la chiamata.
stackTracePer un test fallito, la traccia dello stack dell'errore.