Keterampilan ini membantu menerjemahkan konfigurasi dan alur kerja proses pengujian lama
(dari Flank atau gcloud firebase test) ke platform CLI gcloud
beta device-run modern yang berorientasi pada resource.
Pemetaan Struktur Perintah & Resource
CLI Device Run mengatur perintah berdasarkan resource: devices, software-versions, dan sessions:
1. Katalog Perangkat (devices)
- List Devices:
- Lama:
gcloud firebase test android/ios models list - Baru:
gcloud beta device-run devices list [--filter="..."] - Contoh:
gcloud beta device-run devices list --filter="platform:android"
- Lama:
- Jelaskan Perangkat:
- Lama:
gcloud firebase test android/ios models describe {MODEL} - Baru:
gcloud beta device-run devices describe {DEVICE} - Contoh:
gcloud beta device-run devices describe redfin-30
- Lama:
- Periksa Kapasitas Perangkat & Ketersediaan Kumpulan Kendaraan:
- Lama:
gcloud firebase test android/ios list-device-capacities - Baru: Disematkan langsung di resource Perangkat (
availability.capacitydanavailability.available). Periksa menggunakangcloud beta device-run devices describe {DEVICE}atau filter langsung dengangcloud beta device-run devices list --filter="availability.capacity=CAPACITY_HIGH".
- Lama:
2. Versi Software (software-versions)
- Mencantumkan Versi Software yang Didukung (Xcode & Android Test Orchestrator):
- Lama:
gcloud firebase test ios xcode-versions list - Baru:
gcloud beta device-run software-versions list
- Lama:
- Jelaskan Versi Software:
- Baru:
gcloud beta device-run software-versions describe {SOFTWARE_VERSION} - Contoh:
gcloud beta device-run software-versions describe xcode-16-4
- Baru:
3. Sesi Otomatisasi (sessions)
- Kirimkan Pengujian Instrumen Android:
- Lama:
gcloud firebase test android run --type=instrumentation ... - Baru:
gcloud beta device-run sessions submit instrumentation ...
- Lama:
- Submit iOS XCTest:
- Lama:
gcloud firebase test ios run --type=xctest ... - Baru:
gcloud beta device-run sessions submit xctest ...
- Lama:
- Menunggu Penyelesaian Sesi:
- Legacy: Hanya pemblokiran CLI sinkron
- Baru:
gcloud beta device-run sessions wait {SESSION}
- Describe / Inspect Session:
- Lama: Lihat link web di Hasil Alat Cloud / Firebase Console
- Baru:
gcloud beta device-run sessions describe {SESSION} [--full]
- List Past Sessions:
- Lama: Melihat histori matriks di konsol web
- Baru:
gcloud beta device-run sessions list
- Membatalkan Sesi:
- Legacy: Hanya konsol web (tidak ada perintah CLI)
- Baru:
gcloud beta device-run sessions cancel {SESSION}
Tabel Referensi Pemetaan Bendera
Tabel berikut memetakan parameter dari Firebase Test Lab dan Flank lama ke
parameter yang didukung di gcloud beta device-run:
| Jenis Uji | Grup Fitur | Parameter Lama (firebase / Flank) | Parameter Target (device-run)
|
Logika Format / Konversi |
|---|---|---|---|---|
| Umum (Android & iOS) | Parameter dan aset inti | Samping --project
|
--project
|
Flag global Google Cloud standar
(--project=PROJECT_ID) atau konfigurasi
Google Cloud CLI yang aktif. |
| Umum (Android & iOS) | Parameter dan aset inti | --client-details
|
--labels
|
Dictionary pasangan key=value. |
| Umum (Android & iOS) | Konfigurasi dan penargetan perangkat | --device
model={M},version={V}
|
--device={M}-{V}
|
Memetakan model dan versi OS ke string ID --device. Menerima daftar beberapa perangkat yang dipisahkan koma dalam satu tanda (mis.
--device=mediumphone-arm-32,shiba-36). |
| Umum (Android & iOS) | Kontrol eksekusi dan ketidakstabilan | --async
|
--async
|
Maps 1:1. Perintah tetap sinkron secara
default, teruskan ini untuk segera
menampilkan. Memantau atau menunggu dengan
gcloud beta device-run sessions wait
<SESSION_ID>. |
| Umum (Android & iOS) | Kontrol eksekusi dan ketidakstabilan | --num-flaky-test-attempts
{R}
|
--flaky-test-attempts {A}
|
Bilangan Bulat. Konversi jumlah percobaan ulang $R$ ke batas total upaya: $A = R + 1$ (defaultnya adalah 1). |
| Umum (Android & iOS) | Kontrol eksekusi dan ketidakstabilan | T/A | --flaky-test-parallel-retry
|
Boolean. Apakah akan mencoba lagi kegagalan pengujian secara paralel (defaultnya berurutan). |
| Umum (Android & iOS) | Kontrol eksekusi dan ketidakstabilan | T/A | --flaky-test-retry-level
|
String. Coba lagi level: shard atau
test (defaultnya shard).
|
| Umum (Android & iOS) | Output dan penyimpanan | --results-bucket
|
--bucket-name
|
Bucket tempat artefak output pengujian diupload (secara default adalah gs://[PROJECT_ID]-devicerun). |
| Umum (Android & iOS) | Output dan penyimpanan | --results-dir
|
Dikelola secara otomatis | Setelan subdirektori kustom tidak
didukung; semua artefak pengujian
otomatis diatur di bagian
automation/sessions/{session_id}/
dalam bucket yang ditentukan oleh
--bucket-name. |
| Umum (Android & iOS) | Output dan penyimpanan | --record-video
|
--video
|
Nilai yang valid: always atau on-failure.
|
| Umum (Android & iOS) | Output dan penyimpanan | --directories-to-pull
|
--paths-to-pull
|
Daftar jalur yang akan ditarik dari perangkat setelah dijalankan. |
| Android Umum | Parameter dan aset inti | --app
|
--apps
|
List. Jika beberapa APK/AAB aplikasi disediakan, teruskan semuanya ke
--apps. |
| Android Umum | Parameter dan aset inti | --additional-apks
|
--apps
|
List. Gabungkan nilai daftar tambahan
langsung ke daftar --apps utama.
|
| Android Umum | Parameter dan aset inti | --obb-files
|
--other-files-to-push
|
Kamus dalam format SOURCE=DEST.
Mendorong file OBB langsung ke jalur perangkat
(/sdcard/Android/obb/{package_name}/). |
| Android Umum | Parameter dan aset inti | --other-files
|
--other-files-to-push
|
Kamus dalam format SOURCE=DEST.
|
| Android Umum | Konfigurasi dan penargetan perangkat | --device locale={L}
|
--locale={L}
|
Memetakan lokalitas perangkat Maps ke tanda
--locale tingkat teratas (language-region, misalnya
--locale=en-US). |
| Android Umum | Konfigurasi dan penargetan perangkat | --device orientation={O}
|
--orientation={O}
|
Memetakan orientasi perangkat ke tanda
--orientation tingkat teratas (portrait atau
landscape). |
| Android Umum | Konfigurasi dan penargetan perangkat | T/A | --coordinates
|
Koordinat lokasi palsu
(latitude,longitude, misalnya,
37.4220,-122.0841). |
| Android Umum | Kontrol eksekusi dan ketidakstabilan | --grant-permissions
|
Default Otomatis | Otomatis. Izin waktu proses
diberikan secara otomatis secara default
(setara dengan --grant-permissions=all).| |
| Android Umum | Output dan penyimpanan | T/A | --dumpsys
|
Kumpulkan dumpsys dari perangkat (always atau
on-failure). |
| Android Umum | Output dan penyimpanan | T/A | --bugreport
|
Kumpulkan laporan bug dari perangkat (always
atau on-failure). |
| Android Instrumentation | Parameter dan aset inti | --type=instrumentation
|
sessions submit instrumentation
|
Struktur sub-perintah menentukan jenis pengujian
bukan flag --type.
|
| Android Instrumentation | Parameter dan aset inti | --test
|
--test
|
Jalur ke file biner yang berisi pengujian instrumentasi. |
| Android Instrumentation | Kontrol eksekusi dan ketidakstabilan | --timeout
|
--instrumentation-timeout
|
Durasi (misalnya, 10m, 20s, 1h).
Rentang yang valid: 1m hingga 3h (defaultnya
5m). |
| Android Instrumentation | Kontrol eksekusi dan ketidakstabilan | --num-uniform-shards {N}
|
--sharding-option=uniform--uniform-sharding-count={N}
|
Konfigurasi tanda mengaktifkan strategi sharding seragam (rentang jumlah yang valid: 1-20 fisik, 1-200 virtual). |
| Android Instrumentation | Kontrol eksekusi dan ketidakstabilan | Sisi --shard-time {S}
|
--sharding-option=smart--smart-sharding-target-duration={S}
|
Mengaktifkan sharding cerdas dengan target
waktu eksekusi (mis. 2m, 10m, 1h).
Rentang yang valid: 2m hingga 1h. |
| Android Instrumentation | Kontrol eksekusi dan ketidakstabilan | Sisi
--smart-flank-gcs-path
|
--smart-sharding-record-name={name}--bucket-name={bucket}
|
Nama YAML rekaman sharding
(tidak termasuk ekstensi) di dalam
--bucket-name di bawah
automation/smart-sharding/. |
| Android Instrumentation | Kontrol eksekusi dan ketidakstabilan | Samping --max-test-shards
{N}
|
--smart-sharding-max-shard-count={N}
|
Memetakan ke batas shard maks saat smart sharding diaktifkan (0-20 fisik, 0-200 virtual). |
| Android Instrumentation | Runner pengujian dan target | --test-runner-class
|
--test-runner-class
|
Class runner yang sepenuhnya memenuhi syarat. |
| Android Instrumentation | Runner pengujian dan target | --test-targets
|
--test-targets
|
Dictionary yang mendukung kunci seperti
package, notPackage, class,
notClass, annotation,
notAnnotation, dan size. Format
seperti testfile atau notTestfile tidak
akan didukung. |
| Android Instrumentation | Runner pengujian dan target | --use-orchestrator
|
--orchestrator-version
|
Mengambil auto (pengelola default) atau
string versi tertentu (misalnya, 1.6). |
| Android Instrumentation | Runner pengujian dan target | --environment-variables
|
--additional-test-options
|
Dictionary opsi yang diteruskan ke
pelaksana pengujian. Format yang didukung di
--test-targets tidak diizinkan di sini. |
| iOS Umum | Parameter dan aset inti | --additional-ipas
|
--additional-apps
|
Daftar file .ipa yang akan diinstal di
perangkat sebelum pengujian dijalankan.
|
| iOS Umum | Parameter dan aset inti | --other-files
|
--other-files-to-push
|
Kamus dalam format
SOURCE=BUNDLE_ID:DEVICE_PATH.
|
| iOS Umum | Output dan penyimpanan | --directories-to-pull
|
--paths-to-pull
|
Daftar file atau direktori yang akan ditarik
setelah pengujian dalam format
BUNDLE_ID:DEVICE_PATH. |
| Khusus XCTest iOS | Parameter dan aset inti | --type=xctest
|
sessions submit xctest
|
Struktur sub-perintah menentukan jenis
pengujian, bukan flag --type.
|
| Khusus XCTest iOS | Parameter dan aset inti | --test
|
--test
|
Jalur ke file ZIP yang berisi aplikasi iOS dan file XCTest. |
| Khusus XCTest iOS | Kontrol eksekusi dan ketidakstabilan | --timeout
|
--xctest-timeout
|
Durasi maksimum yang diizinkan untuk menjalankan XCTest (rentang yang valid: 1m hingga 1h, defaultnya 5m). |
| Khusus XCTest iOS | Runner pengujian dan target | --xctestrun-file
|
--xctestrun-file
|
Jalur ke file .xctestrun kustom. |
| Khusus XCTest iOS | Runner pengujian dan target | --xcode-version
|
--xcode-version
|
ID katalog atau string versi Xcode yang akan digunakan (mis. xcode-16-4 atau 16.4). Kueri
menggunakan software-versions list. |
Panduan Terjemahan yang Dapat Ditindaklanjuti
Ikuti panduan berikut untuk menerjemahkan konfigurasi Firebase Test Lab dan Flank ke jalankan perangkat:
1. Spesifikasi Perangkat
Di gcloud beta device-run, --device menerima daftar string ID model dan versi yang dipisahkan koma. Tidak seperti Firebase yang memerlukan satu tanda --device per perangkat, device-run memungkinkan penentuan beberapa perangkat dalam satu tanda. Lokalitas
perangkat, orientasi, dan koordinat tiruan ditentukan menggunakan tanda tingkat teratas
terpisah:
- ❌
--device model=MediumPhone.arm,version=32,locale=en,orientation=portrait - ✅
--device=mediumphone-arm-32 --locale=en-US --orientation=portrait
2. Kamus dan Daftar
Mengonversi tanda yang dipisahkan koma menjadi daftar (--apps, --paths-to-pull) atau
kamus nilai kunci (--other-files-to-push, --additional-test-options):
- ❌
--other-files /sdcard/file1.txt=local/file1.txt,/sdcard/file2.txt=local/file2.txt - ✅
--other-files-to-push local/file1.txt=/sdcard/file1.txt,local/file2.txt=/sdcard/file2.txt
3. Strategi Sharding
- Sharding Seragam:
- Tetapkan
--sharding-option=uniform. - Tetapkan
--uniform-sharding-count={count}(1-20 untuk fisik, 1-200 untuk virtual).
- Tetapkan
- Smart Sharding:
- Tetapkan
--sharding-option=smart. - Tetapkan
--smart-sharding-target-duration={duration}(mis.2m,10m,1h; rentang yang valid:2mhingga1h). - Tetapkan
--smart-sharding-record-name={record_name}(menunjuk ke rekaman pelacakan YAML di dalam--bucket-namedi bagianautomation/smart-sharding/). - Tetapkan
--smart-sharding-max-shard-count={max_count}(opsional batas maksimum: 0-20 untuk fisik, 0-200 untuk virtual).
- Tetapkan
4. Eksekusi Asinkron
- Asinkron & Menunggu: Jika
--asyncditentukan, CLI akan langsung menampilkan ID sesi yang dibuat. Anda dapat menunggu penyelesaian sesi dalam alur kerja CI/CD menggunakan:gcloud beta device-run sessions wait <SESSION_ID>
5. Konfigurasi YAML Deklaratif (--flags-file)
Untuk konfigurasi yang kompleks atau tim yang lebih suka mempertahankan file
yang dikontrol versinya daripada perintah terminal yang panjang, gcloud menyediakan
praprosesor argumen --flags-file universal (lihat $ gcloud topic flags-file):
gcloud beta device-run sessions submit instrumentation --flags-file=device-run-flags.yaml
!CATATAN Alasan kunci memerlukan
--:gcloudmenyuntikkan kunci YAML langsung ke parser CLI sebagai flag command line. Setiap kunci dalam file YAML harus memiliki awalan--(mis.--device:,--apps:). Tanpa--,gcloudmenolaknya sebagai argumen posisi yang tidak dikenal.
Berikut adalah contoh yang menunjukkan tanda daftar dan kamus bernilai ganda:
# device-run-flags.yaml
--device:
- mediumphone-arm-32
- shiba-36
--apps:
- app-debug.apk
- test-helper.apk
--test: app-debug-androidTest.apk
--bucket-name: my-bucket
--sharding-option: smart
--smart-sharding-target-duration: 2m
--smart-sharding-record-name: timing-record
--paths-to-pull:
- /sdcard/screenshots
- /sdcard/coverage.ec
--additional-test-options:
coverage: "true"
clearPackageData: "true"
Contoh terjemahan
Gunakan contoh ini untuk menerjemahkan konfigurasi Firebase Test Lab dan Flank yang ada ke konfigurasi yang dijalankan perangkat.
Firebase Test Lab ke perangkat yang dijalankan
firebase cmd:
gcloud firebase test android run \
--app=app-debug.apk \
--test=app-debug-androidTest.apk \
--device model=shiba,version=36 \
--timeout=5m \
--num-flaky-test-attempts=2 \
--directories-to-pull=/sdcard/screenshots \
--environment-variables coverage=true
Diterjemahkan ke:
gcloud beta device-run sessions submit instrumentation \
--device=shiba-36 \
--apps=app-debug.apk \
--test=app-debug-androidTest.apk \
--instrumentation-timeout=5m \
--flaky-test-attempts=3 \
--paths-to-pull=/sdcard/screenshots \
--additional-test-options coverage=true
Konfigurasi Flank untuk dijalankan di perangkat
flank options (flank.yml):
gcloud:
app: app-debug.apk
test: app-debug-androidTest.apk
device:
- model: mediumphone-arm
version: 32
shard-time: 120
smart-flank-gcs-path: gs://my-bucket/automation/smart-sharding/timing-record.yaml
Diterjemahkan ke:
Opsi 1: Pemanggilan CLI Langsung (Direkomendasikan)
Terjemahkan langsung ke perintah CLI modern:
gcloud beta device-run sessions submit instrumentation \
--device=mediumphone-arm-32 \
--apps=app-debug.apk \
--test=app-debug-androidTest.apk \
--bucket-name=my-bucket \
--sharding-option=smart \
--smart-sharding-target-duration=2m \
--smart-sharding-record-name=timing-record
Opsi 2: File Flag YAML Deklaratif (--flags-file)
Jika Anda lebih suka mempertahankan konfigurasi dalam file YAML yang dikontrol versinya, bukan string skrip shell, gunakan fitur --flags-file bawaan gcloud:
# device-run-flags.yaml
# Note: gcloud requires keys to start with '--'
--device:
- mediumphone-arm-32
--apps:
- app-debug.apk
--test: app-debug-androidTest.apk
--bucket-name: my-bucket
--sharding-option: smart
--smart-sharding-target-duration: 2m
--smart-sharding-record-name: timing-record
Mengirimkan dengan CLI:
gcloud beta device-run sessions submit instrumentation --flags-file=device-run-flags.yaml
(Anda juga dapat menambahkan atau mengganti tanda di command line, seperti menambahkan
--async).
Penemuan Katalog Perangkat
listing & inspecting devices:
# List all available Android devices
gcloud beta device-run devices list --filter="platform:android"
# Filter devices with high fleet capacity (replaces legacy list-device-capacities)
gcloud beta device-run devices list --filter="availability.capacity=CAPACITY_HIGH"
# Describe a specific device (OS versions, form factors, orientation, locales, capacity)
gcloud beta device-run devices describe redfin-30
Siklus Proses Sesi End-to-End di CI/CD
submitting, waiting, and inspecting sessions:
# 1. Submit asynchronously and capture session ID
SESSION_ID=$(gcloud beta device-run sessions submit instrumentation \
--apps=app-debug.apk \
--test=app-debug-androidTest.apk \
--device=mediumphone-arm-32 \
--async \
--format="value(name)")
# 2. Wait for session completion in CI/CD pipeline
gcloud beta device-run sessions wait "$SESSION_ID"
# 3. Describe session summary (or pass --full for complete details)
gcloud beta device-run sessions describe "$SESSION_ID"
# 4. Cancel a running session if aborted
gcloud beta device-run sessions cancel "$SESSION_ID"