View a markdown version of this page

Mengintegrasikan UI XCTest untuk iOS dengan Device Farm - Device Farm AWS

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengintegrasikan UI XCTest untuk iOS dengan Device Farm

Device Farm menyediakan dukungan untuk kerangka pengujian UI XCTest. Secara khusus, Device Farm mendukung pengujian UI XCTest yang ditulis dalam keduanya Objective-C dan Swift.

Kerangka kerja UI XCTest memungkinkan pengujian UI dalam pengembangan iOS, dibangun di atas XCTest. Untuk informasi selengkapnya, lihat Pengujian Antarmuka Pengguna di Perpustakaan Pengembang iOS.

Untuk informasi umum tentang pengujian di Device Farm, lihatMenguji kerangka kerja dan pengujian bawaan di AWS Device Farm.

Gunakan petunjuk berikut untuk mengintegrasikan Device Farm dengan kerangka pengujian UI XCTest untuk iOS.

Siapkan tes UI iOS XCTest Anda

Anda dapat mengunggah .ipa file atau .zip file untuk paket pengujian XCTEST_UI Anda.

.ipaFile adalah arsip aplikasi yang berisi aplikasi iOS Runner dalam format bundel. File tambahan tidak dapat disertakan di dalam .ipa file.

Jika Anda mengunggah .zip file, itu dapat berisi aplikasi iOS Runner secara langsung atau .ipa file. Anda juga dapat menyertakan file lain dalam .zip file jika Anda ingin menggunakannya selama pengujian. Misalnya Anda dapat menyertakan file seperti.xctestrun, .xcworkspace atau .xcodeproj di dalam .zip file untuk menjalankan Rencana Uji XCUI di farm perangkat. Instruksi terperinci tentang cara menjalankan Rencana Uji tersedia dalam file spesifikasi pengujian default untuk jenis Uji XCUI.

Opsi 1: Membuat paket XCTest UI .ipa

AppNameUITest-Runner.app Bundel Anda diproduksi oleh Xcode ketika Anda membangun proyek Anda untuk pengujian. Hal ini dapat ditemukan di direktori Produk untuk proyek Anda.

Untuk membuat file.ipa:

  1. Buat direktori bernamaPayload.

  2. Tambahkan direktori aplikasi Anda ke direktori Payload.

  3. Arsipkan direktori Payload ke dalam .zip file dan kemudian ubah ekstensi file menjadi.ipa.

Struktur folder berikut menunjukkan bagaimana contoh aplikasi bernama my-project-nameUITest-Runner.app akan dikemas sebagai .ipa file:

. └── my-project-nameUITest.ipa └── Payload (directory) └── my-project-nameUITest-Runner.app

Opsi 2: Membuat paket XCTest UI .zip

Device Farm secara otomatis menghasilkan .xctestrun file untuk Anda untuk menjalankan rangkaian pengujian UI XCTest lengkap Anda. Jika Anda ingin menggunakan .xctestrun file Anda sendiri di Device Farm, Anda dapat mengompres .xctestrun file dan direktori aplikasi Anda menjadi .zip file. Jika Anda sudah memiliki .ipa file untuk paket pengujian Anda, Anda dapat memasukkannya di sini sebagai gantinya*-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)

Jika Anda ingin menjalankan rencana pengujian Xcode untuk pengujian XCUI Anda di Device Farm, Anda dapat membuat zip yang berisi file my-project-name UITest-Runner.app atau my-project-name dan UITest.ipa file kode sumber xcode yang diperlukan untuk menjalankan XCTEST_UI dengan rencana pengujian, termasuk file atau. .xcworkspace .xcodeproj

Berikut adalah contoh zip menggunakan .xcodeproj 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)

Berikut adalah contoh zip menggunakan .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
catatan

Harap pastikan bahwa Anda tidak memiliki direktori bernama “Payload” di dalam paket XCTest UI .zip Anda.

Jalankan pengujian UI iOS XCTest (konsol)

Gunakan konsol Device Farm untuk mengunggah pengujian Anda.

  1. Masuk ke konsol Device Farm di https://console.aws.amazon.com/devicefarm.

  2. Di panel navigasi, pilih Pengujian Perangkat Sel uler, lalu pilih Proyek.

  3. Dalam daftar proyek, pilih proyek yang ingin Anda unggah pengujian.

    Tip

    Anda dapat menggunakan bilah pencarian untuk memfilter daftar proyek berdasarkan nama.

    Untuk membuat proyek, ikuti instruksi di Membuat proyek di AWS Device Farm

  4. Pilih Buat lari.

  5. Di bawah Pilih aplikasi dan jenis jalankan, di bagian Jalankan jenis, pilih aplikasi iOS.

  6. Di bagian Pilih aplikasi, di Opsi pemilihan aplikasi, pilih Unggah aplikasi sendiri. Kemudian, pilih Pilih file di bawah Unggah aplikasi.

  7. Jelajahi dan pilih file aplikasi iOS Anda. File harus berkas.ipa.

    catatan

    Pastikan file.ipa dibuat untuk perangkat iOS dan bukan untuk simulator.

  8. Di bawah Konfigurasi pengujian, di bagian Pilih kerangka pengujian, pilih XCTest UI. Kemudian, pilih Pilih file di bawah Unggah aplikasi.

  9. Jelajahi dan pilih file.ipa atau.zip yang berisi pelari uji UI iOS XCTest Anda.

  10. (Opsional) Untuk mengkonfigurasi properti run-level, perbarui bagian J alankan pengaturan:

    1. Agar Device Farm membuat laporan Wawasan Pengujian setelah proses selesai, aktifkan Buat laporan pengujian. Opsi ini hanya tersedia di lingkungan pengujian khusus.

      Prasyarat berikut berlaku:

      1. Pengujian Anda harus menghasilkan .xcresult bundel Xcode dan menuliskannya ke$DEVICEFARM_DERIVED_DATA_PATH. Misalnya, lewati -derivedDataPath $DEVICEFARM_DERIVED_DATA_PATH kexcodebuild. Spesifikasi pengujian UI XCTest default menghasilkan dan menyimpan bundel ini secara otomatis jika Anda mempertahankan konfigurasi default.

      Untuk informasi selengkapnya tentang melihat laporan Anda, lihatMelihat laporan pengujian (konsol).

  11. Selesaikan langkah-langkah yang tersisa dalam proses pembuatan jalankan. Pilih perangkat yang ingin Anda uji dan tentukan konfigurasi tambahan secara opsional.

  12. Pilih Buat lari. Device Farm menjalankan pengujian Anda dan menunjukkan hasilnya di konsol.

Melihat laporan pengujian (konsol)

  1. Masuk ke konsol Device Farm di https://console.aws.amazon.com/devicefarm.

  2. Di panel navigasi, pilih Pengujian Perangkat Sel uler, lalu pilih Proyek.

  3. Pilih proyek yang berisi proses yang ingin Anda periksa.

  4. Pilih proses yang telah selesai untuk membuka detailnya.

  5. Pilih salah satu pekerjaan yang telah selesai untuk membuka hasil untuk perangkat tersebut.

Dengan wawasan pengujian diaktifkan

Hasil pekerjaan termasuk tab Laporan uji. Pilih untuk melihat ringkasan hasil pengujian, termasuk jumlah total tes, berapa banyak yang lulus dan gagal, total waktu eksekusi pengujian, dan waktu eksekusi pengujian median. Di bawah ringkasan, tabel Tes menunjukkan rincian per tes.

Kumpulan kolom pertama pada tab Laporan uji untuk pekerjaan UI XCTest yang telah selesai.
Kolom yang tersisa pada tab Laporan uji untuk pekerjaan UI XCTest yang telah selesai.

Setiap baris dalam tabel Tes mencakup kolom berikut:

  • Hasil — apakah tes lulus, gagal, atau dilewati.

  • Kelas uji — kelas tempat tes tersebut berada.

  • Nama uji — nama metode pengujian.

  • Trace tumpukan — untuk pengujian yang gagal, tautan ke jejak tumpukan kegagalan.

  • Durasi — berapa lama waktu yang dibutuhkan tes untuk dijalankan.

  • Waktu mulai dan Waktu akhir - saat tes dimulai dan berakhir.

  • Hasil kerangka kerja — string hasil yang dilaporkan kerangka kerja XCTest untuk pengujian.

  • Paket uji — bundel uji yang dimiliki pengujian.

  • Pengidentifikasi simpul — pengenal simpul xcresult untuk kasus uji.

Anda dapat mencari tes berdasarkan nama, kelas, atau status. Untuk memilih kolom mana yang muncul, pilih ikon Pengaturan. Dalam pengaturan, Anda dapat memilih kolom untuk ditampilkan dan mengaktifkan atau menonaktifkan Grup berdasarkan kelas. Kelompokkan berdasarkan kelas aktif secara default, yang mengelompokkan tes berdasarkan kelas pengujian mereka. Perluas kelas untuk melihat pengujian individualnya, seperti yang ditunjukkan pada tangkapan layar berikut.

Tab Laporan pengujian dengan pengujian dikelompokkan berdasarkan kelas, menunjukkan setiap kelas diperluas ke pengujian individualnya.

Untuk mengunduh laporan pengujian lengkap sebagai file JSON, pilih Unduh ringkasan lengkap di bagian atas detail pekerjaan.

Tanpa wawasan pengujian diaktifkan

Hasil pekerjaan menunjukkan output pengujian standar dan artefak, seperti tab Suite, Log, dan Screenshot, tetapi tidak ada tab Laporan pengujian. Untuk membuat laporan pengujian, jadwalkan proses baru dengan wawasan pengujian diaktifkan.

Hasil pekerjaan untuk pekerjaan UI XCTest yang diselesaikan tanpa wawasan pengujian diaktifkan, menampilkan tab standar dan tidak ada tab Laporan pengujian.

Lihat laporan pengujian (AWS CLI)

Jalan get-job kan dan tentukan pekerjaan ARN:

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

Tanpa wawasan pengujian diaktifkan

Jika Anda tidak mengaktifkan wawasan pengujian, respons berisi bidang pekerjaan standar, seperti status pekerjaan, hasil, penghitung, dan perangkat:

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

Dengan wawasan pengujian diaktifkan

Jika Anda mengaktifkan wawasan pengujian, respons juga menyertakan insights objek yang berisi status laporan pengujian, metrik tingkat tinggi, dan URL yang telah ditandatangani sebelumnya ke laporan terperinci:

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

testDetailsUrlBidang ini adalah URL yang telah ditandatangani sebelumnya ke laporan pengujian lengkap JSON. Unduh untuk mendapatkan rincian per tes:

curl -o test-report.json "PRESIGNED_URL"

Berikut ini adalah contoh laporan pengujian untuk pekerjaan UI 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" } ] }

Laporan berisi bidang tingkat atas berikut:

version, jobArn

Versi skema laporan dan ARN pekerjaan.

deviceName, deviceArn, deviceOsVersion

Nama dan ARN perangkat yang menjalankan pekerjaan, dan versi sistem operasinya.

metrics

Hasil agregat untuk pekerjaan: jumlah total tes (testsTotal) dan berapa banyak yang lulus (testsPassed), gagal (testsFailed), dilewati (testsSkipped), kesalahan (), atau memiliki hasil lain (testsErroredtestsOther), bersama dengan tingkat kelulusan (testsPassedPercentage), total durasi tes (totalTestExecutionDurationSeconds), dan durasi tes median (). medianTestExecutionDurationSeconds

Setiap entri testDetails berisi bidang berikut:

testName, testClass

Nama metode pengujian dan kelas pengujiannya.

result, frameworkResult

Hasil Device Farm untuk pengujian, dan string hasil yang dilaporkan kerangka kerja XCTest. Device Farm memet frameworkResult akan ke result bidang yang dinormalisasi.

durationSeconds, startTimestamp, endTimestamp

Durasi tes dalam hitungan detik, dan waktu ketika itu dimulai dan berakhir.

testBundle, nodeIdentifier

Bundel pengujian yang dimiliki pengujian, dan pengidentifikasi simpul xcresult untuk kasus uji.

testArguments

Untuk pemanggilan pengujian berparameter, label argumen untuk pemanggilan.

stackTrace

Untuk pengujian yang gagal, tumpukan jejak kegagalan.