Questa guida descrive come trovare i risultati dei test e degli eseguibili attivati seguendo la guida Developer Device Platform Device Run.
Prima di iniziare
Questi passaggi presuppongono che tu abbia già creato un Google Cloud progetto, completato i passaggi di configurazione nella Developer Device Platform Guida rapida ed eseguito l'autenticazione con gcloud nel terminale.
Nella riga di comando
Visualizza un riepilogo di base del risultato del test o dell'eseguibile con questo comando e l'ID sessione:
gcloud beta device-run sessions describe SESSION_ID
Che restituisce risultati simili a:
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. È previsto che si verifichino errori nei test, che devono essere esaminati e risolti tramite miglioramenti ed esecuzioni iterativi.
Per ottenere ulteriori dettagli su una sessione, aggiungi --full al comando describe eseguito in precedenza, come segue:
gcloud beta device-run sessions describe SESSION_ID --full
Che restituisce risultati simili a:
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
Di seguito è riportato l'output effettivo sanificato di gcloud beta device-run sessions
describe SESSION_ID --full da un'esecuzione live di XCTest per iOS con tutti i flag
abilitati:
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, trova i file estratti per l'app in fase di test in
.../artifacts/output.txt (senza com.example.app/Documents/).
Nel browser web
Per visualizzare tutti i dettagli, carica l'URL del bucket contenente i risultati dei test dall'output dei 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 Google Cloud console, 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.
- Dal menu di archiviazione, seleziona Bucket.
- Nella prima colonna, fai clic sul nome del progetto.
- Fai clic su Automazione.
- Fai clic su Sessioni.
- Nel campo Filtra, 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 iOS XCTest), 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 tentativi di ripetizione dei test instabili
sono configurati con
--flaky-test-attempts) per una suddivisione di ogni singola esecuzione o shard. A seconda del tipo di sessione e dei flag configurati, questa cartella può contenere numerosi artefatti. Per ulteriori dettagli, consulta Come capire i risultati. - Visita gli URL pubblici e autenticati 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 dei file è simile a:
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, comprendi il percorso estratto in artifacts/. Per
--paths-to-pull=com.example.app:/Documents/output.txt, quando esegui l'estrazione dall'
app in fase di test, il servizio rimuove /Documents e inserisce il file
direttamente in artifacts/output.txt (non
artifacts/com.example.app/Documents/output.txt). Se estratto da un'app aggiuntiva (--additional-apps), viene inserito in
artifacts/<bundle_id>-genfiles/output.txt.
Come capire i risultati
Per le esecuzioni di strumentazione Android e XCTest per iOS, i file junit.xml generati nell'output sono file XML JUnit standard. Un file junit.xml a livello di esecuzione viene scritto in ogni directory execution-* e un file junit.xml unito viene scritto in ogni directory job-*. Questi file contengono i risultati per metodo di test, consentendoti di esaminare lo stato di superamento o errore specifico, il tempo di esecuzione e le tracce di errore per ogni singolo metodo di test. Puoi integrare e analizzare facilmente questi file con la maggior parte dei sistemi di integrazione e distribuzione continue (CI/CD) e degli strumenti di generazione di 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 dell'esecutore di 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 le 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 del dispositivo iOS non elaborato, e tutti i report di Crash Reporting diagnostici.ipsse un processo si è arrestato in modo anomalo durante l'esecuzione del test. - I file del dispositivo estratti specificati con
--paths-to-pullvengono archiviati nella sottocartellaartifacts/della directory di esecuzione.- Per le esecuzioni 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 Android, i file estratti conservano il percorso del dispositivo in
Documentazione di supporto
- Nozioni di base sui test delle app per Android
- Creare test strumentati
- Documentazione di XCTest
- Informazioni sui bucket Cloud Storage
Passaggi successivi
Ora prova la nostra API Device Streaming della Developer Device Platform.