Panduan ini menjelaskan cara menemukan hasil pengujian dan file yang dapat dieksekusi yang dipicu setelah mengikuti panduan Developer Device Platform Device Run.
Sebelum memulai
Langkah-langkah ini mengasumsikan bahwa Anda telah membuat project Google Cloud ,
menyelesaikan langkah-langkah penyiapan dalam panduan Panduan memulai Developer Device Platform, dan melakukan autentikasi
dengan gcloud di terminal.
Di command line
Lihat ringkasan dasar hasil pengujian atau hasil yang dapat dieksekusi dengan perintah ini dan ID sesi Anda:
gcloud beta device-run sessions describe SESSION_ID
Yang akan menampilkan hasil yang menyerupai:
Session SESSION_ID finished with result [FAILED].
Result files are stored at [https://console.cloud.google.com/storage/browser/BUCKET_NAME/automation/sessions/SESSION_ID/].
JOB NAME EXECUTION NAME EXECUTION RESULT
job-000 all FAILED: 2 test cases failed, 5 passed
job-001 all PASS
Untuk setiap ID jenis perangkat yang Anda tentukan dengan flag --device, satu tugas akan
dibuat dalam sesi. Indeks tugas akan mengikuti urutan ID perangkat Anda. Kegagalan pengujian diperkirakan akan terjadi dan harus diselidiki serta diselesaikan melalui
peningkatan dan pengoperasian yang berulang.
Untuk mendapatkan detail tambahan tentang sesi, tambahkan --full ke perintah describe yang dijalankan sebelumnya seperti ini:
gcloud beta device-run sessions describe SESSION_ID --full
Yang akan menampilkan hasil yang mirip dengan:
Instrumentasi Android
name: projects/PROJECT_ID/locations/global/sessions/session-370961e1
sessionConfig:
displayName: instrumentation-session
jobConfigs:
- action:
androidInstrumentationTest:
testInstallable:
files:
- gcsInputFile:
path: gs://BUCKET_NAME/automation/inputs/2026-07-30_11:28.31915956_8514/app_name_test.apk
allocationConfig:
deviceConfigs:
- actions:
- androidInstallPackages:
installables:
- files:
- gcsInputFile:
path: gs://BUCKET_NAME/automation/inputs/2026-07-30_11:28.31915956_8514/app_name.apk
- androidLogcat: {}
requirement:
deviceId: pa3q-35
displayName: job-000
outputDirectoryConfig:
gcsOutputDirectory:
path: gs://BUCKET_NAME/automation/sessions
sessionReport:
endTime: '2026-07-30T03:30:05.838Z'
id: 6587313f-fdf7-418a-a9b9-b6fa98dff838
jobReports:
- displayName: job-000
endTime: '2026-07-30T03:30:04.601Z'
executionReports:
- displayName: all
endTime: '2026-07-30T03:30:02.151Z'
id: 29b167dd-dde9-4ea9-b2cd-738049083fc9
outputFiles:
- gcsOutputFile:
path: gs://PROJECT_ID-devicerun/automation/sessions/session-370961e1/job-000/execution-000/logcat.txt
- gcsOutputFile:
path: gs://PROJECT_ID-devicerun/automation/sessions/session-370961e1/job-000/execution-000/instrument.log
- gcsOutputFile:
path: gs://PROJECT_ID-devicerun/automation/sessions/session-370961e1/job-000/execution-000/junit.xml
result:
cause:
summary:
message: One or more test assertions or test methods failed. Inspect the
test runner logs and structured test results for details.
reason: TEST_CASE_FAILURE
type: CUSTOMER
resultType: FAILED
startTime: '2026-07-30T03:29:32.769Z'
status:
progressMessages:
- 2 test cases failed, 5 passed
statusType: DONE
id: 7974e37a-2928-4aaf-abba-3a8b6bae853b
result:
cause:
summary:
message: Job has one or more failed tests. See execution reports for details.
reason: JOB_HAS_FAILED_TESTS
resultType: FAILED
startTime: '2026-07-30T03:28:53.756Z'
status:
statusType: DONE
result:
cause:
summary:
message: Session has one or more failed jobs. See job reports for details.
reason: SESSION_HAS_FAILED_JOBS
resultType: FAILED
startTime: '2026-07-30T03:28:52.702Z'
status:
statusType: DONE
Android executable
name: projects/PROJECT_ID/locations/global/sessions/session-8a41c2b0
sessionConfig:
displayName: android-executable-session
jobConfigs:
- action:
androidNativeBinary:
androidNativeBinary:
gcsInputFile:
path: gs://BUCKET_NAME/automation/inputs/2026-07-30_11:28.31915956_8514/my_executable
args:
- --example_flag=/data/local/tmp/example_value
- --threads=4
allocationConfig:
deviceConfigs:
- actions:
- androidLogcat: {}
- androidPushFiles:
fileConfigs:
- destinationPath: /data/local/tmp/model.tflite
sourceFile:
gcsInputFile:
path: gs://BUCKET_NAME/automation/inputs/2026-07-30_11:28.31915956_8514/model.tflite
requirement:
deviceId: shiba-34
displayName: job-000
outputDirectoryConfig:
gcsOutputDirectory:
path: gs://BUCKET_NAME/automation/sessions
sessionReport:
endTime: '2026-07-30T03:30:05.838Z'
id: 4b9120ec-fdf7-418a-a9b9-b6fa98dff838
jobReports:
- displayName: job-000
endTime: '2026-07-30T03:30:04.601Z'
executionReports:
- displayName: execution-000
endTime: '2026-07-30T03:30:02.151Z'
id: 19a267dd-dde9-4ea9-b2cd-738049083fc9
outputFiles:
- gcsOutputFile:
path: gs://PROJECT_ID-devicerun/automation/sessions/session-8a41c2b0/job-000/execution-000/logcat.txt
- gcsOutputFile:
path: gs://PROJECT_ID-devicerun/automation/sessions/session-8a41c2b0/job-000/execution-000/output.log
result:
resultType: PASSED
startTime: '2026-07-30T03:29:32.769Z'
status:
statusType: DONE
id: 8874e37a-2928-4aaf-abba-3a8b6bae853b
result:
resultType: PASSED
startTime: '2026-07-30T03:28:53.756Z'
status:
statusType: DONE
result:
resultType: PASSED
startTime: '2026-07-30T03:28:52.702Z'
status:
statusType: DONE
XCTest iOS
Berikut adalah output gcloud beta device-run sessions
describe SESSION_ID --full yang sebenarnya dan telah dibersihkan dari operasi XCTest iOS langsung dengan semua flag
diaktifkan:
name: projects/PROJECT_ID/locations/global/sessions/session-4b941167-5629-4abb-a8a1-a9814bf16847
sessionConfig:
displayName: xctest-session
jobConfigs:
- action:
iosXcTest:
testsZip:
gcsInputFile:
path: gs://BUCKET_NAME/automation/inputs/2026-10-09_11:33.01234567_ABCD/MyTests.zip
allocationConfig:
deviceConfigs:
- actions:
- iosInstallPackages:
ipas:
- gcsInputFile:
path: gs://BUCKET_NAME/automation/inputs/2026-10-09_11:33.01234567_ABCD/AdditionalApp.ipa
requirement:
deviceId: iphonese3-18-4
displayName: job-000
outputDirectoryConfig:
gcsOutputDirectory:
path: gs://BUCKET_NAME/automation/sessions
Dalam output ini, temukan file yang ditarik untuk Aplikasi yang Sedang Diuji di
.../artifacts/output.txt (tanpa com.example.app/Documents/).
Di browser web
Untuk mengetahui detail lengkapnya, muat URL ke bucket yang berisi hasil pengujian Anda dari output pengujian. Tampilannya akan seperti:
https://console.cloud.google.com/storage/browser/BUCKET_NAME/automation/sessions/SESSION_ID/
Sesi muncul dalam format jalur berikut di penyimpanan:
gs://BUCKET_NAME/automation/sessions/SESSION_ID/job-000/EXECUTION_ID/
Merencanakan
Untuk menjelajahi log di antarmuka web konsol Google Cloud , ikuti langkah-langkah berikut:
- Di browser, tambahkan nama project Anda seperti yang digunakan dalam perintah
gcloud config set projectke URLhttps://console.cloud.google.com/?project=dan muat halaman. - Luaskan menu di kiri atas.
- Temukan Cloud Storage.
- Dari menu penyimpanan, pilih Buckets.
- Di kolom pertama, klik nama project Anda.
- Klik Otomatisasi.
- Klik Sesi.
- Di kolom Filter, tempelkan ID sesi dari uji coba terbaru Anda (lihat output pengujian).
- Klik nama sesi yang dihasilkan.
- Pilih job-* untuk melihat
junit.xml(untuk instrumentasi Android dan iOS XCTest yang berjalan), yang berisi detail hasil gabungan di semua eksekusi dan kasus pengujian dalam tugas. - Buka execution-* (atau execution-*-rerun-* saat percobaan ulang uji tidak stabil dikonfigurasi dengan
--flaky-test-attempts) untuk melihat perincian setiap eksekusi atau shard individual. Bergantung pada jenis sesi dan flag yang dikonfigurasi, folder ini dapat berisi banyak artefak, bergantung pada jenis sesi dan flag yang dikonfigurasi. Lihat Memahami hasil untuk mengetahui detail selengkapnya. - Buka URL publik dan yang diautentikasi untuk memahami hasilnya.
Struktur file
Jelajahi file log di bucket Cloud Storage Anda untuk memahami lebih lanjut eksekusi sesi Anda. Struktur file-nya terlihat seperti:
Instrumentasi Android
- gs://BUCKET_NAME/automation
- inputs/
- 2026-05-29_10:13.026220_JZTM
- app.apk
- test.apk
- sessions/
- SESSION_ID
- job-000/
- junit.xml
- execution-000/
- artifacts/
- sdcard/
- output.txt
- bugreport.zip
- dumpsys.txt
- instrument.log
- junit.xml
- logcat.txt
- video.mp4
- execution-001/
- instrument.log
- junit.xml
- logcat.txt
- video.mp4
- job-001/
- SESSION_ID
Android executable
- gs://BUCKET_NAME/automation
- inputs/
- 2026-05-29_10:13.026220_JZTM
- my_executable
- model.tflite
- sessions/
- SESSION_ID
- job-000/
- execution-000/
- artifacts/
- data/
- local/
- tmp/
- results.json
- bugreport.zip
- dumpsys.txt
- logcat.txt
- output.log
- video.mp4
- job-001/
- SESSION_ID
XCTest iOS
- gs://BUCKET_NAME/
- automation/
- inputs/
- 2026-10-09_11:33.01234567_ABCD/
- AdditionalApp.ipa
- MyTests.zip
- data.txt
- sessions/
- SESSION_ID/
- job-000/
- execution-000/
- artifacts/
- output.txt
- junit.xml
- system.log
Dalam output ini, pahami jalur yang ditarik di bagian artifacts/. Untuk
--paths-to-pull=com.example.app:/Documents/output.txt, saat mengambil dari
Aplikasi yang Diuji (AUT), layanan akan menghapus /Documents dan menempatkan file
langsung di artifacts/output.txt (bukan
artifacts/com.example.app/Documents/output.txt). Jika diambil dari aplikasi
tambahan (--additional-apps), file akan ditempatkan di
artifacts/<bundle_id>-genfiles/output.txt.
Memahami hasil
Untuk instrumentasi Android dan operasi XCTest iOS, file junit.xml yang dihasilkan
dalam output Anda adalah file XML JUnit standar. junit.xml tingkat eksekusi ditulis ke setiap direktori execution-*, dan junit.xml gabungan ditulis ke setiap direktori job-*. File ini berisi hasil per metode pengujian, sehingga Anda dapat meninjau status lulus atau gagal, waktu eksekusi, dan pelacakan error tertentu untuk setiap metode pengujian. Anda dapat dengan mudah mengintegrasikan dan mengurai file ini
dengan sebagian besar sistem Continuous Integration dan Continuous Delivery (CI/CD) serta
alat pelaporan pengujian.
Selain hasil pengujian terstruktur, setiap direktori execution-* berisi log dan artefak khusus platform:
- Eksekusi instrumentasi Android mencakup
instrument.loguntuk output runner instrumentasi mentah danlogcat.txtuntuk log sistem Android di seluruh perangkat. Jika diaktifkan dengan--bugreport,--dumpsys, atau--video, direktori eksekusi juga mencakupbugreport.zip,dumpsys.txt, dan rekaman video layar. - Eksekusi yang dapat dieksekusi Android mencakup
output.log, yang merekam output standar (stdout) dan error standar (stderr) yang ditulis oleh file yang dapat dieksekusi, danlogcat.txt(dikumpulkan secara default untuk setiap tugas Android), yang merekam log sistem Android di seluruh perangkat, beserta artefak--bugreport,--dumpsys, atau--videoopsional. - Eksekusi uji iOS XCTest mencakup
system.log(dikumpulkan secara default untuk setiap tugas iOS XCTest), yang merekam syslog perangkat iOS mentah, dan laporan error diagnostik.ipsjika proses mengalami error selama eksekusi uji. - File perangkat yang ditarik yang ditentukan dengan
--paths-to-pulldisimpan di subfolderartifacts/dari direktori eksekusi.- Untuk operasi Android, file yang ditarik mempertahankan jalur perangkatnya di bawah
artifacts/(misalnya,artifacts/sdcard/output.txtatauartifacts/data/local/tmp/results.json). - Untuk pengujian XCTest iOS, file yang ditarik dari penampung data aplikasi menggunakan
--paths-to-pull=BUNDLE_ID:DEVICE_PATHdiatur berdasarkan ID paket di bagianartifacts/:- Jika
com.example.appadalah Aplikasi yang Diuji, aplikasi tersebut akan disimpan langsung diartifacts/output.txt. - Jika
com.example.appadalah aplikasi tambahan (--additional-apps), aplikasi tersebut akan disimpan diartifacts/com.example.app-genfiles/output.txt.
- Jika
- Untuk operasi Android, file yang ditarik mempertahankan jalur perangkatnya di bawah
Dokumentasi pendukung
- Dasar-dasar pengujian aplikasi Android
- Membuat pengujian berinstrumen
- Dokumentasi XCTest
- Tentang bucket Cloud Storage
Langkah berikutnya
Selanjutnya, coba Device Streaming API Developer Device Platform kami.