Selamat datang di Device Run Developer Device Platform, yang memungkinkan Anda menjalankan pengujian dan file yang dapat dieksekusi di perangkat Android fisik dan virtual serta perangkat iOS fisik di cloud. Halaman ini merangkum kemampuan dan menjelaskan kesamaan antara menjalankan uji instrumentasi Android, file yang dapat dieksekusi Android, dan pengujian iOS XCTest.
Jika Anda bermigrasi dari Firebase Test Lab ke Developer Device Platform, lihat panduan migrasi, terjemahan perintah dan flag, serta kemampuan migrasi untuk agen AI.
Untuk menggunakan Google Cloud CLI ini, Anda harus memberikan project ID Google Cloud . Untuk ringkasan perintah, lihat: gcloud beta
device-run
Kemampuan utama
Device Run Developer Device Platform adalah layanan Google Cloud yang memungkinkan Anda
menjalankan suite pengujian otomatis di seluruh perangkat seluler fisik dan virtual. Dibuat
untuk alur kerja Continuous Integration dan Continuous Delivery (CI/CD) modern,
Device Run menawarkan kontrol command line melalui Google Cloud CLI
(gcloud beta device-run), sehingga tim dapat menjalankan, mengelola, dan menskalakan suite pengujian
pada hardware khusus dan lingkungan virtual.
1. Pengujian otomatis lintas platform
- Dukungan Android dan iOS: Device Run mendukung framework pengujian bawaan, termasuk uji Instrumentasi Android (
.apk), file yang dapat dieksekusi Android (biner yang dikompilasi), dan iOS XCTest (.ipaatau.zip). - Penargetan perangkat yang fleksibel: Targetkan perangkat fisik atau perangkat virtual tertentu
yang tercantum dalam Katalog Perangkat menggunakan ID OS dan model (misalnya, model Pixel atau iPhone) melalui flag
--device. - Eksekusi paralel multiperangkat: Jalankan suite pengujian yang identik
secara serentak di beberapa perangkat dengan menentukan ID perangkat yang dipisahkan koma
atau menyediakan beberapa flag
--device.
2. Mode dan kontrol eksekusi yang fleksibel
- Pengiriman sinkron dan asinkron: Pengujian dijalankan secara sinkron
secara default, menampilkan ringkasan setelah selesai. Menambahkan flag
--asyncakan langsung menampilkan ID sesi untuk eksekusi non-pemblokiran, yang dapat dipantau nanti menggunakangcloud beta device-run sessions wait. - Waktu tunggu eksekusi kustom*: Konfigurasikan batas durasi eksekusi dengan
--instrumentation-timeoutatau--xctest-timeout. - Percobaan ulang uji tidak stabil: Tetapkan upaya percobaan ulang maksimum untuk eksekusi uji tidak stabil menggunakan flag
--flaky-test-attempts.
3. Pengelolaan versi dan dependensi software
- Lingkungan pengujian yang dapat dikonfigurasi*: Temukan, periksa, dan pilih versi lingkungan software tertentu — seperti AndroidX Test Orchestrator dan Apple Xcode — sebelum memulai pengujian.
- Penemuan versi: Gunakan perintah
gcloud beta device-run software-versions listdandescribeuntuk melihat paket software aktif, versi OS yang didukung, dan spesifikasi runtime default.
4. Pengelolaan penyimpanan dan artefak
- Integrasi Cloud Storage: Input pengujian (APK, IPA, aplikasi pendukung) dan artefak output (log, laporan pengujian) disimpan di Cloud Storage.
- Fleksibilitas bucket: Otomatis ditetapkan secara default ke bucket project bernama
PROJECT_ID-devicerunatau dirutekan ke bucket kustom yang ditentukan melalui flag--bucket-name. Anda memiliki kontrol penuh atas bucket ini dan harus menghapus kontennya secara manual jika tidak lagi diperlukan atau mengonfigurasi pengelolaan siklus proses otomatis pada bucket. Lihat Tentang penghapusan objek untuk mengetahui petunjuknya. - Jalur cloud langsung: Mereferensikan jalur
gs://yang ada secara langsung untuk file besar guna menghilangkan overhead upload.
5. Fitur pengujian Android lanjutan
- Android Test Orchestrator: Mengisolasi eksekusi uji dengan menjalankan setiap pengujian dalam
instance
Instrumentation-nya sendiri untuk mencegah status aplikasi bersama dan mengisolasi error aplikasi. - Sharding Pengujian:
- Sharding Seragam: Membagi kasus pengujian secara merata di sejumlah shard yang ditentukan (
--sharding-option=uniform). - Sharding Cerdas: Menggunakan data eksekusi uji historis untuk menyeimbangkan kasus pengujian secara dinamis di seluruh shard, yang menargetkan total durasi eksekusi tertentu (
--sharding-option=smart).
- Sharding Seragam: Membagi kasus pengujian secara merata di sejumlah shard yang ditentukan (
6. Pengelolaan dan diagnostik sesi
- Kontrol sesi penuh: Mencantumkan, mendeskripsikan, memfilter, atau membatalkan pengujian aktif atau historis menggunakan
sessions list,sessions describe, dansessions cancel. - Validasi input awal: Melakukan validasi otomatis pada biner pengujian dan artefak konfigurasi yang dikirimkan, sehingga menampilkan detail error eksplisit dan penyebab utama (seperti ketidakcocokan paket target) saat terjadi error.
Setelan inti
Flag yang diperlukan
Perhatikan bahwa flag berikut diperlukan:
- Device: Tentukan perangkat menggunakan
--device:--device shiba-35atau--device iphonese3-18-4 - Pengujian atau file yang dapat dieksekusi: Tentukan paket pengujian menggunakan
--test(--test /path/to/test.apkatau--test /path/to/MyTests.zip) untuk pengujian, atau tentukan biner atau skrip yang dapat dieksekusi menggunakan--executable(--executable /path/to/my_executable) untuk eksekusi Android yang dapat dieksekusi.
Opsi konfigurasi berikut bersifat umum di seluruh sesi Device Run.
Jalur Cloud Storage input dan output
- Bucket Cloud Storage kustom: Anda dapat menentukan bucket Cloud Storage kustom untuk input dan output:
--bucket-name=my-custom-bucketJika Anda tidak menentukan bucket Cloud Storage menggunakan flag--bucket-name=, Google Cloud CLI akan menggunakan bucket default bernamaPROJECT_ID-devicerun. - File input: Saat Anda menentukan jalur lokal dengan flag
--test,--executable,--apps,--additional-apps,--other-files-to-push, atau--xctestrun-file, Google Cloud CLI akan otomatis menyalinnya ke bucket Cloud Storage Anda di bagiangs://BUCKET_NAME/automation/inputs/DATE_TIME_FOUR_CHARS_SUFFIX/setiap kali Anda menjalankan perintah, denganBUCKET_NAMEditetapkan secara default kePROJECT_ID-devicerun. - Jalur cloud: Karena mengupload file besar dapat memakan waktu, Anda dapat langsung mereferensikannya menggunakan jalur
gs://Cloud Storage untuk menghemat waktu upload. - File hasil: Artefak output diupload ke bucket Cloud Storage Anda di bagian
gs://BUCKET_NAME/automation/sessions/session-[SESSION_ID]/.
Input validasi
Developer Device Platform mencoba memvalidasi input Anda, termasuk artefak, dan
menampilkan ERROR, bukan PASSED atau FAILED saat menemukan input yang
salah:
Session [session-94b57778] finished with result [ERROR].
JOB NAME EXECUTION NAME EXECUTION RESULT
job-000 execution-000 ERROR
Sekarang tambahkan --full ke perintah sessions describe untuk melihat detail selengkapnya tentang sesi:
gcloud beta device-run sessions describe --full session-94b57778
Yang menghasilkan output yang mirip dengan:
name: projects/user-test1/locations/global/sessions/session-94b57778
sessionConfig:
displayName: instrumentation-session
jobConfigs:
- action:
androidInstrumentationTest:
testInstallable:
files:
- gcsInputFile:
path: gs://user-test1-devicerun/automation/inputs/2026-09-16_18:55.17372947_EECF/my-test.apk
allocationConfig:
deviceConfigs:
- actions:
- androidLogcat: {}
requirement:
deviceId: mediumphone-arm-34
displayName: job-000
outputDirectoryConfig:
gcsOutputDirectory:
path: gs://user-test1-devicerun/automation/sessions
sessionReport:
endTime: '2026-09-16T18:55:49.721Z'
id: ed681f23-669b-4464-8a93-b28456e58136
jobReports:
- displayName: job-000
endTime: '2026-09-16T18:55:45.839Z'
executionReports:
- displayName: execution-000
endTime: '2026-09-16T18:55:46.694Z'
id: ce370173-af94-4dd7-acc6-0863e4d2e9ec
result:
cause:
summary:
message: The instrumentation target package does not match any of the
installable packages.
reason: INSTRUMENTATION_TARGET_MISMATCH
type: CUSTOMER
resultType: ERROR
startTime: '1970-01-01T00:00:00Z'
status:
statusType: PENDING
id: 953b5106-3c20-40f0-aceb-18af89cd1b83
result:
cause:
summary:
message: The instrumentation target package does not match any of the installable
packages.
reason: INSTRUMENTATION_TARGET_MISMATCH
type: CUSTOMER
resultType: ERROR
startTime: '2026-09-16T18:55:31.651Z'
status:
statusType: DONE
result:
resultType: ERROR
startTime: '2026-09-16T18:55:24.442Z'
status:
statusType: DONE
Langkah berikutnya
Jalankan uji instrumentasi Android, file Android yang dapat dieksekusi, atau iOS XCTest dengan Developer Device Platform.