Menemukan hasil pengujian Platform Perangkat Developer Anda

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/

Untuk menjelajahi log di antarmuka web konsol Google Cloud , ikuti langkah-langkah berikut:

  1. Di browser, tambahkan nama project Anda seperti yang digunakan dalam perintah gcloud config set project ke URL https://console.cloud.google.com/?project= dan muat halaman.
  2. Luaskan menu di kiri atas.
  3. Temukan Cloud Storage.
  4. Dari menu penyimpanan, pilih Buckets.
  5. Di kolom pertama, klik nama project Anda.
  6. Klik Otomatisasi.
  7. Klik Sesi.
  8. Di kolom Filter, tempelkan ID sesi dari uji coba terbaru Anda (lihat output pengujian).
  9. Klik nama sesi yang dihasilkan.
  10. 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.
  11. 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.
  12. 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.log untuk output runner instrumentasi mentah dan logcat.txt untuk log sistem Android di seluruh perangkat. Jika diaktifkan dengan --bugreport, --dumpsys, atau --video, direktori eksekusi juga mencakup bugreport.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, dan logcat.txt (dikumpulkan secara default untuk setiap tugas Android), yang merekam log sistem Android di seluruh perangkat, beserta artefak --bugreport, --dumpsys, atau --video opsional.
  • 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 .ips jika proses mengalami error selama eksekusi uji.
  • File perangkat yang ditarik yang ditentukan dengan --paths-to-pull disimpan di subfolder artifacts/ dari direktori eksekusi.
    • Untuk operasi Android, file yang ditarik mempertahankan jalur perangkatnya di bawah artifacts/ (misalnya, artifacts/sdcard/output.txt atau artifacts/data/local/tmp/results.json).
    • Untuk pengujian XCTest iOS, file yang ditarik dari penampung data aplikasi menggunakan --paths-to-pull=BUNDLE_ID:DEVICE_PATH diatur berdasarkan ID paket di bagian artifacts/:
      • Jika com.example.app adalah Aplikasi yang Diuji, aplikasi tersebut akan disimpan langsung di artifacts/output.txt.
      • Jika com.example.app adalah aplikasi tambahan (--additional-apps), aplikasi tersebut akan disimpan di artifacts/com.example.app-genfiles/output.txt.

Dokumentasi pendukung

Langkah berikutnya

Selanjutnya, coba Device Streaming API Developer Device Platform kami.