Jalankan Perangkat Developer Device Platform untuk iOS

Panduan ini menjelaskan cara menjalankan XCTest iOS menggunakan gcloud alpha device-run CLI dan menemukan hasil Anda di Google Cloud console. Tutorial ini mengasumsikan bahwa Anda memiliki akun dan projectGoogle Cloud .

Jika Anda bermigrasi dari Firebase Test Lab ke Platform Perangkat Developer, lihat panduan migrasi, terjemahan perintah dan flag, serta keterampilan migrasi untuk agen AI.

Untuk menggunakan device-run CLI, Anda harus memberikan project ID Google CloudAnda. Lihat gcloud alpha device-run untuk mengetahui ringkasan perintah.

Sebelum memulai

Langkah-langkah ini mengasumsikan bahwa Anda telah:

  1. Membuat project Google Cloud .
  2. Siapkan Developer Device Platform dengan mengikuti Panduan Memulai Cepat.
  3. Telah diautentikasi dengan gcloud di terminal.
  4. Meninjau Ringkasan Device Run untuk mengetahui informasi umum.
  5. Mengompilasi pengujian dan mengemasnya ke dalam ZIP.

Langkah 1. Mengonfigurasi pengujian

Anda dapat menyesuaikan eksekusi uji menggunakan flag opsional berikut (meskipun setidaknya satu instance flag --device diperlukan):

  • Beberapa perangkat: Tentukan flag --device beberapa kali untuk menjalankan pengujian yang sama di beberapa perangkat secara bersamaan: --device iphonese3-18-4 --device iphonese3-26-3 atau --device iphonese3-18-4,iphonese3-26-3
  • Aplikasi tambahan: Instal satu atau beberapa paket .ipa tambahan sebelum meluncurkan pengujian menggunakan --additional-apps: --additional-apps=/path/to/AdditionalApp.ipa
  • File .xctestrun kustom: Teruskan file konfigurasi kustom dengan --xctestrun-file: --xctestrun-file=/path/to/CustomTests.xctestrun
  • Versi Apple Xcode: Akses langsung versi Xcode yang didukung oleh CLI dengan flag --xcode-version, misalnya: --xcode-version=xcode-16-4
  • Test timeout: Batasi durasi eksekusi: --xctest-timeout=10m (Rentang yang valid adalah 1m hingga 1h dan defaultnya adalah 5m).
  • Label: Lampirkan metadata yang ditentukan pengguna ke sesi: --labels=env=staging,owner=my-team
  • Lokalitas: Tetapkan lokalitas perangkat: --locale=en-US
  • Push files to device: Mengirim file ke penampung data aplikasi sebelum eksekusi uji: --other-files-to-push=/tmp/data.txt=com.example.app:/Documents/data.txt
  • Tarik file dari perangkat: Tarik file dari penampung data aplikasi setelah eksekusi pengujian: --paths-to-pull=com.example.app:/Documents/output.txt
  • Upaya ulang uji tidak stabil: Tetapkan jumlah maksimum upaya untuk menjalankan ulang uji tidak stabil: --flaky-test-attempts=3 (Defaultnya adalah 1 upaya).
  • Bucket Cloud Storage kustom: Tentukan bucket Cloud Storage kustom untuk input dan output: --bucket-name=my-custom-bucket (Defaultnya adalah PROJECT_ID-devicerun).
  • Karena mengupload file ZIP atau IPA berukuran besar dapat memakan waktu, Anda dapat langsung mereferensikan file menggunakan jalur gs:// Cloud Storage untuk menghemat waktu upload.

Operasi sinkron dan asinkron

Secara default, perintah pengiriman adalah pemblokiran (sinkron). Program akan menunggu pengujian selesai dan mencetak tabel ringkasan hasilnya.

Untuk mengirimkan sesi dan segera kembali setelah mengupload file ke Cloud Storage, tambahkan tanda --async:

gcloud alpha device-run sessions submit xctest \
  --device iphonese3-18-4 \
  --test ./IOS_TESTS.zip \
  --async

Tindakan ini akan segera menampilkan ID sesi. Kemudian, Anda dapat menunggunya menggunakan perintah sessions wait:

gcloud alpha device-run sessions wait SESSION_ID

Perintah akan diblokir hingga tugas selesai.

Beberapa perangkat

Untuk menjalankan pengujian yang sama di beberapa perangkat, berikan flag --device dengan beberapa ID perangkat yang dipisahkan dengan koma atau dengan beberapa flag --device, yang masing-masing menentukan ID perangkat yang berbeda.

Dipisahkan dengan koma

gcloud alpha device-run sessions submit xctest \
  --device iphonese3-18-4,iphonese3-26-3 \
  --test ./IOS_TESTS.zip

Beberapa tanda

gcloud alpha device-run sessions submit xctest \
  --device iphonese3-18-4 \
  --device iphonese3-26-3 \
  --test ./IOS_TESTS.zip

Waktu tunggu uji

Batasi durasi eksekusi pengujian Anda:

gcloud alpha device-run sessions submit xctest \
  --device iphonese3-18-4 \
  --test ./IOS_TESTS.zip \
  --xctest-timeout=10m

Rentang yang valid adalah 1m hingga 1h dan default-nya adalah 5m.

Versi software

Temukan dan gunakan paket software serta versi Apple Xcode yang tersedia, dan periksa siklus proses, versi yang didukung, dan metadatanya sebelum mengonfigurasi pengujian.

Pertama, buat daftar semua paket software yang tersedia dan versinya:

gcloud alpha device-run software-versions list

Menerima output yang menyerupai:

ID                                NAME                              SOFTWARE_TYPE               VERSION  STATE   IS_DEFAULT
androidx-test-orchestrator-1-4-1  AndroidX Test Orchestrator 1.4.1  ANDROIDX_TEST_ORCHESTRATOR  1.4.1    ACTIVE  True
androidx-test-orchestrator-1-6-1  AndroidX Test Orchestrator 1.6.1  ANDROIDX_TEST_ORCHESTRATOR  1.6.1    ACTIVE
xcode-16-4                        Xcode 16.4                        XCODE                       16.4     ACTIVE
xcode-26-2                        Xcode 26.2                        XCODE                       26.2     ACTIVE  True

Kemudian, deskripsikan paket tertentu menggunakan ID resource yang tepat dari daftar:

gcloud alpha device-run software-versions describe xcode-16-4

Menerima output yang menyerupai:

id: xcode-16-4
lifecycle:
  state: ACTIVE
name: Xcode 16.4
softwareType: XCODE
supportedIosVersions:

-   '15.0'
-   '15.1'
-   '15.2'
-   '15.4'
-   '15.7'
-   '16.0'
-   '16.1'
-   '16.2'
-   '16.3'
-   '16.5'
-   '16.6'
-   '18.0'
-   '18.3'
-   '18.4'
version: '16.4'

Setelah mengetahui versi software yang tersedia, Anda dapat menggunakannya dalam pengujian dengan flag --xcode-version, seperti ini:

gcloud alpha device-run sessions submit xctest \
  --device iphonese3-18-4 \
  --test ./IOS_TESTS.zip \
  --xcode-version=16.4

Langkah 2. Pilih jenis perangkat

Dengan menggunakan device-run CLI, pengujian iOS dapat dijalankan di seluruh perangkat fisik yang tersedia. Untuk melihat daftar lengkap perangkat yang tersedia, buka Katalog Perangkat interaktif atau jalankan:

gcloud alpha device-run devices list

Contoh output:

ID                MAKE   NAME           MODEL        HARDWARE_TYPE  OS_VERSION  CAPACITY  AVAILABILITY  PRODUCTS
iphonese3-18-4    Apple  iPhone SE 3             iphonese3    PHYSICAL       18.4        NONE      NONE          Automation
iphonese3-26-3    Apple  iPhone SE 3             iphonese3    PHYSICAL       26.3        NONE      NONE          Automation

Lihat Katalog Perangkat untuk mempelajari cara memfilter daftar ini. Untuk menargetkan perangkat tertentu untuk eksekusi uji, gunakan ID yang sesuai (misalnya, iphonese3-18-4) dalam perintah pengiriman.

Langkah 3. Menyiapkan dan mengemas XCTest

Sebelum menjalankan pengujian, Anda harus mengompilasinya, memastikan pengujian ditandatangani, memverifikasi tanda tangan kode, dan mengemas artefak yang dihasilkan ke dalam file ZIP yang berisi konfigurasi .xctestrun dan paket pengujian aplikasi.

1. Mem-build pengujian untuk perangkat iOS fisik

Buka project Anda di Xcode, lalu bangun aplikasi dan target pengujian untuk pengujian:

  1. Pastikan penandatanganan kode dikonfigurasi dengan benar di Xcode (menentukan profil penyediaan dan identitas developer yang valid) untuk target aplikasi dan target pelaksana pengujian.
  2. Bangun untuk pengujian menggunakan Xcode (Product > Build For > Testing) atau dengan xcodebuild.

    Untuk ruang kerja:

    xcodebuild build-for-testing \
      -workspace YourProject.xcworkspace \
      -scheme YourScheme \
      -derivedDataPath ./build \
      -destination "generic/platform=iOS"
    

    Untuk project mandiri:

    xcodebuild build-for-testing \
      -project YourProject.xcodeproj \
      -scheme YourScheme \
      -derivedDataPath ./build \
      -destination "generic/platform=iOS"
    

Tindakan ini akan menghasilkan produk build di: ./build/Build/Products

2. Memverifikasi produk dan tanda tangan build

Setelah membangun, verifikasi bahwa aplikasi, runner, dan manifes .xctestrun dibuat di ./build/Build/Products/. Jika ditandatangani secara lokal, Anda dapat memverifikasi tanda tangan paket menggunakan codesign:

  1. Verifikasi app bundle:

    codesign --verify --deep --verbose ./build/Build/Products/Debug-iphoneos/YourApp.app
    

    Output yang diharapkan: YourApp.app: valid on disk

  2. Jika menjalankan XCUITest, verifikasi juga paket runner pengujian:

    codesign --verify --deep --verbose ./build/Build/Products/Debug-iphoneos/YourApp-Runner.app
    

    Output yang diharapkan: YourApp-Runner.app: valid on disk

3. Membuat file ZIP

Kompresi direktori Debug-iphoneos dan file .xctestrun yang terletak di folder produk output build menjadi satu file ZIP.

Jalankan perintah berikut dari direktori produk build:

cd ./build/Build/Products
zip -r MyTests.zip Debug-iphoneos *.xctestrun

Tindakan ini akan membuat MyTests.zip dalam paket yang siap digunakan dengan flag --test.

Langkah 4. Menjalankan XCTest

Perhatikan bahwa flag ini diperlukan:

  • Perangkat: Tentukan perangkat menggunakan --device: --device iphonese3-18-4
  • Pengujian: Tentukan file zip pengujian menggunakan --test: --test ./MyTests.zip

Untuk menjalankan XCTest, gunakan perintah gcloud alpha device-run sessions submit xctest. Anda harus memberikan file zip pengujian (MyTests.zip) yang dikompilasi di langkah sebelumnya.

Untuk menjalankan sesi pengujian dasar:

gcloud alpha device-run sessions submit xctest \
  --device iphonese3-18-4 \
  --test ./MyTests.zip

Saat eksekusi dimulai, CLI akan menampilkan ID Sesi yang dibuat dan tujuan Cloud Storage tempat hasil akan disimpan:

Creating session [session-ee78b0ed] in location [global].
Result files will be stored at [https://console.cloud.google.com/storage/browser/BUCKET_NAME/automation/sessions/session-ee78b0ed/].

Waiting for session [session-ee78b0ed] to complete....

Langkah 5. Menjelajahi dan mengelola pengujian

Anda dapat melacak operasi yang aktif dan mengelola sesi historis menggunakan perintah berikut:

  • Menjelaskan sesi: Buat kueri progres langsung atau hasil akhir sesi: gcloud alpha device-run sessions describe SESSION_ID Tambahkan --full untuk melihat detail lengkap termasuk alokasi perangkat, ID eksekusi, dan jalur artefak Cloud Storage.
  • Sesi daftar: Lihat proses terbaru Anda: gcloud alpha device-run sessions list --limit=10
  • Batalkan sesi: Menghentikan sesi pengujian yang sedang berjalan: gcloud alpha device-run sessions cancel SESSION_ID
  • Batalkan operasi: Menghentikan operasi yang tertunda atau aktif: gcloud alpha device-run operations cancel OPERATION_ID

Langkah berikutnya

Selanjutnya, temukan dan analisis log.