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:
- Membuat project Google Cloud .
- Siapkan Developer Device Platform dengan mengikuti Panduan Memulai Cepat.
- Telah diautentikasi dengan
gclouddi terminal. - Meninjau Ringkasan Device Run untuk mengetahui informasi umum.
- 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
--devicebeberapa kali untuk menjalankan pengujian yang sama di beberapa perangkat secara bersamaan:--device iphonese3-18-4 --device iphonese3-26-3atau--device iphonese3-18-4,iphonese3-26-3 - Aplikasi tambahan: Instal satu atau beberapa paket
.ipatambahan sebelum meluncurkan pengujian menggunakan--additional-apps:--additional-apps=/path/to/AdditionalApp.ipa - File
.xctestrunkustom: 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 adalah1mhingga1hdan defaultnya adalah5m). - 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 adalahPROJECT_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:
- Pastikan penandatanganan kode dikonfigurasi dengan benar di Xcode (menentukan profil penyediaan dan identitas developer yang valid) untuk target aplikasi dan target pelaksana pengujian.
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:
Verifikasi app bundle:
codesign --verify --deep --verbose ./build/Build/Products/Debug-iphoneos/YourApp.appOutput yang diharapkan:
YourApp.app: valid on diskJika menjalankan XCUITest, verifikasi juga paket runner pengujian:
codesign --verify --deep --verbose ./build/Build/Products/Debug-iphoneos/YourApp-Runner.appOutput 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_IDTambahkan--fulluntuk 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.