Ringkasan Eksekusi Perangkat Developer Device Platform

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 (.ipa atau .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 --async akan langsung menampilkan ID sesi untuk eksekusi non-pemblokiran, yang dapat dipantau nanti menggunakan gcloud beta device-run sessions wait.
  • Waktu tunggu eksekusi kustom*: Konfigurasikan batas durasi eksekusi dengan --instrumentation-timeout atau --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 list dan describe untuk 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-devicerun atau 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).

6. Pengelolaan dan diagnostik sesi

  • Kontrol sesi penuh: Mencantumkan, mendeskripsikan, memfilter, atau membatalkan pengujian aktif atau historis menggunakan sessions list, sessions describe, dan sessions 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-35 atau --device iphonese3-18-4
  • Pengujian atau file yang dapat dieksekusi: Tentukan paket pengujian menggunakan --test (--test /path/to/test.apk atau --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-bucket Jika Anda tidak menentukan bucket Cloud Storage menggunakan flag --bucket-name=, Google Cloud CLI akan menggunakan bucket default bernama PROJECT_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 bagian gs://BUCKET_NAME/automation/inputs/DATE_TIME_FOUR_CHARS_SUFFIX/ setiap kali Anda menjalankan perintah, dengan BUCKET_NAME ditetapkan secara default ke PROJECT_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.