Ce guide explique comment trouver les résultats des tests et des exécutables déclenchés en suivant le guide d'exécution sur l'appareil de la plate-forme d'appareil pour les développeurs.
Avant de commencer
Ces étapes supposent que vous avez déjà créé un Google Cloud projet,
suivi les étapes de configuration du guide de démarrage rapide de la plate-forme d'appareil pour les développeurs
Quickstart et que vous vous êtes authentifié
auprès de gcloud dans le terminal.
Dans la ligne de commande
Affichez un résumé de base du résultat de votre test ou de votre exécutable avec cette commande et votre ID de session :
gcloud beta device-run sessions describe SESSION_ID
Qui renvoie des résultats semblables à :
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
Pour chaque ID de type d'appareil que vous avez spécifié avec l'indicateur --device, une tâche est générée dans la session. L'index de la tâche suit l'ordre de vos ID d'appareil. Les échecs de test sont attendus et doivent être examinés et résolus par des améliorations et des exécutions itératives.
Pour obtenir des informations supplémentaires sur une session, ajoutez --full à la commande describe précédemment exécutée, comme suit :
gcloud beta device-run sessions describe SESSION_ID --full
Qui renvoie des résultats semblables à :
Instrumentation 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
Exécutable 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 iOS
Voici la sortie réelle nettoyée de gcloud beta device-run sessions
describe SESSION_ID --full à partir d'une exécution iOS XCTest en direct avec tous les indicateurs
activés :
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
Dans cette sortie, recherchez les fichiers extraits pour l'application testée dans
.../artifacts/output.txt (sans com.example.app/Documents/).
Dans un navigateur Web
Pour obtenir des informations complètes, chargez l'URL du bucket contenant les résultats de vos tests à partir de la sortie du test. Elle doit ressembler à :
https://console.cloud.google.com/storage/browser/BUCKET_NAME/automation/sessions/SESSION_ID/
Les sessions s'affichent au format de chemin suivant dans le stockage :
gs://BUCKET_NAME/automation/sessions/SESSION_ID/job-000/EXECUTION_ID/
Navigation
Pour parcourir vos journaux dans l'interface Web de la Google Cloud console, procédez comme suit :
- Dans un navigateur, ajoutez le nom de votre projet tel qu'il est utilisé dans la commande
gcloud config set projectà l'URLhttps://console.cloud.google.com/?project=et chargez la page. - Développez le menu en haut à gauche.
- Recherchez Cloud Storage.
- Dans le menu de stockage, sélectionnez Buckets.
- Dans la première colonne, cliquez sur le nom de votre projet.
- Cliquez sur Automatisation.
- Cliquez sur Sessions.
- Dans le champ Filtre, collez l'ID de session de votre dernière exécution de test (voir la sortie du test).
- Cliquez sur le nom de la session résultante.
- Sélectionnez job-* pour afficher
junit.xml(pour les exécutions d'instrumentation Android et iOS XCTest), qui contient les détails de la fusion de résultats pour toutes les exécutions et les scénarios de test de la tâche. - Ouvrez execution-* (ou execution-*-rerun-* lorsque les nouvelles tentatives de test irrégulier
sont configurées avec
--flaky-test-attempts) pour obtenir une répartition de chaque exécution ou segment individuel. Selon le type de session et les indicateurs configurés, ce dossier peut contenir de nombreux artefacts. Pour en savoir plus, consultez Comprendre les résultats. - Consultez les URL publiques et authentifiées pour comprendre les résultats.
Structure des fichiers
Explorez les fichiers journaux de votre bucket Cloud Storage pour en savoir plus sur l'exécution de votre session. La structure du fichier ressemble à :
Instrumentation 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
Exécutable 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 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
Dans cette sortie, comprenez le chemin extrait sous artifacts/. Pour
--paths-to-pull=com.example.app:/Documents/output.txt, lors de l'extraction à partir de l'
application testée (AUT), le service supprime /Documents et place le fichier
directement dans artifacts/output.txt (et non
artifacts/com.example.app/Documents/output.txt). S'il est extrait d'une application supplémentaire (--additional-apps), il est placé dans
artifacts/<bundle_id>-genfiles/output.txt.
Comprendre les résultats
Pour les exécutions d'instrumentation Android et iOS XCTest, les fichiers junit.xml générés dans votre sortie sont des fichiers XML JUnit standards. Un fichier junit.xml au niveau de l'exécution est écrit dans chaque répertoire execution-*, et un fichier junit.xml fusionné est écrit dans chaque répertoire job-*. Ces fichiers contiennent les résultats par méthode de test, ce qui vous permet d'examiner l'état de réussite ou d'échec spécifique, le temps d'exécution et les traces d'erreur pour chaque méthode de test individuelle. Vous pouvez facilement intégrer et analyser ces fichiers avec la plupart des systèmes d'intégration et de livraison continues (CI/CD) et des outils de création de rapports de test.
En plus des résultats de test structurés, chaque répertoire execution-* contient des journaux et des artefacts spécifiques à la plate-forme :
- Les exécutions d'instrumentation Android incluent
instrument.logpour la sortie brute de l'exécuteur d'instrumentation etlogcat.txtpour le journal système Android à l'échelle de l'appareil. Lorsqu'il est activé avec--bugreport,--dumpsysou--video, le répertoire d'exécution inclut égalementbugreport.zip,dumpsys.txtet des enregistrements vidéo de l'écran. - Les exécutions d'exécutables Android incluent
output.log, qui capture la sortie standard (stdout) et l'erreur standard (stderr) écrites par votre exécutable, etlogcat.txt(collecté par défaut pour chaque tâche Android), qui capture le journal système Android à l'échelle de l'appareil, ainsi que tous les artefacts--bugreport,--dumpsys, ou--videofacultatifs. - Les exécutions iOS XCTest incluent
system.log(collecté par défaut pour chaque tâche iOS XCTest), qui capture le syslog brut de l'appareil iOS, et tous les rapports de plantage de diagnostic.ipssi un processus a planté lors de l'exécution du test. - Les fichiers d'appareil extraits spécifiés avec
--paths-to-pullsont stockés dans le sous-dossierartifacts/du répertoire d'exécution.- Pour les exécutions Android, les fichiers extraits conservent leur chemin d'appareil sous
artifacts/(par exemple,artifacts/sdcard/output.txtouartifacts/data/local/tmp/results.json). - Pour les exécutions iOS XCTest, les fichiers extraits d'un conteneur de données d'application à l'aide de
--paths-to-pull=BUNDLE_ID:DEVICE_PATHsont organisés par ID de bundle sousartifacts/:- Si
com.example.appest l'application testée, elle est enregistrée directement dansartifacts/output.txt. - Si
com.example.appest une application supplémentaire (--additional-apps), elle est enregistrée dansartifacts/com.example.app-genfiles/output.txt.
- Si
- Pour les exécutions Android, les fichiers extraits conservent leur chemin d'appareil sous
Pièces justificatives
- Principes fondamentaux des tests des applications Android
- Créer des tests instrumentés
- Documentation XCTest
- À propos des buckets Cloud Storage
Étape suivante
Ensuite, essayez notre API de streaming d'appareil de la plate-forme d'appareil pour les développeurs Device Streaming API.