Questa guida descrive come trovare i risultati dei test e degli eseguibili attivati seguendo la guida Device Run di Developer Device Platform.
Prima di iniziare
Questi passaggi presuppongono che tu abbia già creato un progetto Google Cloud ,
completato i passaggi di configurazione nella guida Guida rapida
di Developer Device Platform e che tu abbia eseguito l'autenticazione
con gcloud nel terminale.
Dalla riga di comando
Visualizza un riepilogo di base del risultato del test o dell'eseguibile con questo comando e il tuo ID sessione:
gcloud beta device-run sessions describe SESSION_ID
che restituisce risultati simili ai seguenti:
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
Per ogni ID tipo di dispositivo specificato con il flag --device, viene generato un job nella sessione. L'indice del job seguirà l'ordine degli ID dispositivo. Gli errori dei test sono previsti e devono essere esaminati e risolti tramite
miglioramenti ed esecuzioni iterative.
Per ottenere ulteriori dettagli su una sessione, aggiungi --full al comando describe eseguito in precedenza, in questo modo:
gcloud beta device-run sessions describe SESSION_ID --full
che restituisce risultati simili ai seguenti:
Strumentazione 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
Eseguibile Android
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 per iOS
Ecco l'output effettivo sottoposto a sanitizzazione di gcloud beta device-run sessions
describe SESSION_ID --full da un'esecuzione di XCTest per iOS in tempo reale con tutti i flag
attivati:
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
In questo output, individua i file estratti per l'app in fase di test in
.../artifacts/output.txt (senza com.example.app/Documents/).
Nel browser web
Per i dettagli completi, carica l'URL del bucket contenente i risultati del test dall'output del test. Dovrebbe essere simile a:
https://console.cloud.google.com/storage/browser/BUCKET_NAME/automation/sessions/SESSION_ID/
Le sessioni vengono visualizzate nel seguente formato di percorso nello spazio di archiviazione:
gs://BUCKET_NAME/automation/sessions/SESSION_ID/job-000/EXECUTION_ID/
Navigazione
Per sfogliare i log nell'interfaccia web della console Google Cloud , segui questi passaggi:
- In un browser, aggiungi il nome del progetto utilizzato nel comando
gcloud config set projectall'URLhttps://console.cloud.google.com/?project=e carica la pagina. - Espandi il menu in alto a sinistra.
- Trova Cloud Storage.
- Nel menu Spazio di archiviazione, seleziona Bucket.
- Nella prima colonna, fai clic sul nome del progetto.
- Fai clic su Automazione.
- Fai clic su Sessioni.
- Nel campo Filtro, incolla l'ID sessione dell'ultima esecuzione del test (vedi l'output del test).
- Fai clic sul nome della sessione risultante.
- Seleziona job-* per visualizzare
junit.xml(per le esecuzioni di strumentazione Android e XCTest iOS), che contiene i dettagli dei risultati uniti di tutte le esecuzioni e gli scenari di test nel job. - Apri execution-* (o execution-*-rerun-* quando i nuovi tentativi di test instabili sono configurati con
--flaky-test-attempts) per un'analisi dettagliata di ogni singola esecuzione o shard. A seconda del tipo di sessione e dei flag configurati, questa cartella può contenere numerosi artefatti. Per maggiori dettagli, consulta Comprendi i risultati. - Visita gli URL pubblici e di autenticazione per comprendere i risultati.
Struttura dei file
Esplora i file di log nel bucket Cloud Storage per saperne di più sull'esecuzione della sessione. La struttura del file è simile alla seguente:
Strumentazione 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
Eseguibile Android
- 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 per 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
In questo output, scopri il percorso di pull in artifacts/. Per
--paths-to-pull=com.example.app:/Documents/output.txt, quando esegue il pull dall'app
in fase di test (AUT), il servizio rimuove /Documents e posiziona il file
direttamente in artifacts/output.txt (non
artifacts/com.example.app/Documents/output.txt). Se viene eseguito il pull da un'app
aggiuntiva (--additional-apps), viene posizionato in
artifacts/<bundle_id>-genfiles/output.txt.
Comprendere i risultati
Per le esecuzioni di strumentazione Android e XCTest iOS, i file junit.xml generati nell'output sono file XML JUnit standard. Un junit.xml a livello di esecuzione viene scritto in ogni directory execution-* e un junit.xml unito viene scritto in ogni directory job-*. Questi file contengono i risultati per metodo di test, consentendoti di esaminare lo stato specifico di superamento o mancato superamento, il tempo di esecuzione e le tracce degli errori per ogni singolo metodo di test. Puoi integrare e analizzare facilmente questi file con la maggior parte dei sistemi di integrazione continua e distribuzione continua (CI/CD) e degli strumenti di generazione dei report sui test.
Oltre ai risultati dei test strutturati, ogni directory execution-* contiene log e artefatti specifici della piattaforma:
- Le esecuzioni di strumentazione Android includono
instrument.logper l'output non elaborato dello strumento di esecuzione della strumentazione elogcat.txtper il log di sistema Android a livello di dispositivo. Se abilitata con--bugreport,--dumpsyso--video, la directory di esecuzione include anchebugreport.zip,dumpsys.txte registrazioni video dello schermo. - Le esecuzioni di eseguibili Android includono
output.log, che acquisisce l'output standard (stdout) e l'errore standard (stderr) scritti dall'eseguibile, elogcat.txt(raccolto per impostazione predefinita per ogni job Android), che acquisisce il log di sistema Android a livello di dispositivo, insieme a eventuali artefatti--bugreport,--dumpsyso--videofacoltativi. - Le esecuzioni di XCTest per iOS includono
system.log(raccolto per impostazione predefinita per ogni job XCTest per iOS), che acquisisce il syslog non elaborato del dispositivo iOS, e tutti i report sugli arresti anomali di diagnostica.ipsse un processo si è arrestato in modo anomalo durante l'esecuzione del test. Se abilitato con--video, ogni video dello scenario di test dell'interfaccia utente registrato viene archiviato intestcases/TEST_CLASS/TEST_METHOD/video.mp4. - I file del dispositivo estratti specificati con
--paths-to-pullvengono archiviati nella sottocartellaartifacts/della directory di esecuzione.- Per le esecuzioni su Android, i file estratti conservano il percorso del dispositivo in
artifacts/(ad esempio,artifacts/sdcard/output.txtoartifacts/data/local/tmp/results.json). - Per le esecuzioni di XCTest per iOS, i file estratti da un container di dati dell'app utilizzando
--paths-to-pull=BUNDLE_ID:DEVICE_PATHsono organizzati per ID pacchetto inartifacts/:- Se
com.example.appè l'app in fase di test, viene salvata direttamente inartifacts/output.txt. - Se
com.example.appè un'app aggiuntiva (--additional-apps), viene salvata inartifacts/com.example.app-genfiles/output.txt.
- Se
- Per le esecuzioni su Android, i file estratti conservano il percorso del dispositivo in
Documentazione di supporto
- Nozioni di base sui test delle app per Android
- Crea test di strumentazione
- Documentazione di XCTest
- Informazioni sui bucket Cloud Storage
Passaggi successivi
Ora prova l'API Device Streaming di Developer Device Platform.