En esta guía, se describe cómo encontrar los resultados de las pruebas y los ejecutables que se activan después de la guía Ejecución de dispositivos de la plataforma de dispositivos para desarrolladores.
Antes de comenzar
En estos pasos, se supone que ya creaste un Google Cloud proyecto, completaste los pasos de configuración de la Developer Device Platform Guía de inicio rápido y te autenticaste con gcloud en la terminal.
En la línea de comandos
Consulta un resumen básico del resultado de tu prueba o ejecutable con este comando y tu ID de sesión:
gcloud beta device-run sessions describe SESSION_ID
Que muestra resultados similares a los siguientes:
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
Por cada ID de tipo de dispositivo que especificaste con la marca --device, se genera un trabajo en la sesión. El índice de trabajo seguirá el orden de tus IDs de dispositivo. Se esperan fallas en las pruebas, y se deben investigar y resolver a través de mejoras y ejecuciones iterativas.
Para obtener detalles adicionales sobre una sesión, agrega --full al comando describe ejecutado anteriormente de la siguiente manera:
gcloud beta device-run sessions describe SESSION_ID --full
Que muestra resultados similares a los siguientes:
Instrumentación de 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
Ejecutable de 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 de iOS
Este es el resultado real desinfectado de gcloud beta device-run sessions
describe SESSION_ID --full de una ejecución de XCTest de iOS en vivo con todas las marcas
habilitadas:
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
En este resultado, busca los archivos extraídos para la app en prueba en
.../artifacts/output.txt (sin com.example.app/Documents/).
En el navegador web
Para obtener todos los detalles, carga la URL del bucket que contiene los resultados de la prueba desde el resultado de la prueba. Debería ser similar a https://console.cloud.google.com/storage/browser/BUCKET_NAME/automation/sessions/SESSION_ID/.
Las sesiones aparecen en el siguiente formato de ruta de acceso en el almacenamiento: gs://BUCKET_NAME/automation/sessions/SESSION_ID/job-000/EXECUTION_ID/.
Navegando
Para buscar tus registros en la Google Cloud interfaz web de la consola, sigue estos pasos:
- En un navegador, agrega el nombre de tu proyecto tal como se usa en el comando
gcloud config set projecta la URLhttps://console.cloud.google.com/?project=y carga la página. - Expande el menú en la esquina superior izquierda.
- Busca Cloud Storage.
- En el menú de almacenamiento, selecciona Buckets.
- En la primera columna, haz clic en el nombre de tu proyecto.
- Haz clic en Automation.
- Haz clic en Sessions.
- En el campo Filter, pega el ID de sesión de la ejecución de prueba más reciente (consulta el resultado de la prueba).
- Haz clic en el nombre de la sesión resultante.
- Selecciona job-* para ver
junit.xml(para la instrumentación de Android y las ejecuciones de XCTest de iOS ), que contiene detalles de los resultados combinados en todas las ejecuciones y casos de prueba del trabajo. - Abre execution-* (o execution-*-rerun-* cuando se vuelven a intentar las pruebas inestables
se configuran con
--flaky-test-attempts) para obtener un desglose de cada ejecución o fragmento individual. Según el tipo de sesión y las marcas configuradas, esta carpeta puede contener varios artefactos. Consulta Comprender los resultados para obtener más detalles. - Visita las URLs públicas y autenticadas para comprender los resultados.
Estructura de archivos
Explora los archivos de registro en tu bucket de Cloud Storage para obtener más información sobre la ejecución de tu sesión. La estructura del archivo es similar a la siguiente:
Instrumentación de 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
Ejecutable de 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 de 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
En este resultado, comprende la ruta de acceso extraída en artifacts/. Para
--paths-to-pull=com.example.app:/Documents/output.txt, cuando se extrae de la
app en prueba (AUT), el servicio quita /Documents y coloca el archivo
directamente en artifacts/output.txt (no
artifacts/com.example.app/Documents/output.txt). Si se extrae de una
app adicional (--additional-apps), se coloca en
artifacts/<bundle_id>-genfiles/output.txt.
Comprender los resultados
Para la instrumentación de Android y las ejecuciones de XCTest de iOS, los archivos junit.xml generados en tu resultado son archivos XML de JUnit estándar. Se escribe un junit.xml a nivel de ejecución en cada directorio execution-*, y se escribe un junit.xml combinado en cada directorio job-*. Estos archivos contienen los resultados por método de prueba, lo que te permite revisar el estado de aprobación o falla específico, el tiempo de ejecución y los seguimientos de errores para cada método de prueba individual. Puedes integrar y analizar estos archivos fácilmente con la mayoría de los sistemas de integración continua y entrega continua (CI/CD) y las herramientas de informes de pruebas.
Además de los resultados de pruebas estructurados, cada directorio execution-* contiene registros y artefactos específicos de la plataforma:
- Las ejecuciones de instrumentación de Android incluyen
instrument.logpara el resultado sin procesar del ejecutor de instrumentación ylogcat.txtpara el registro del sistema Android en todo el dispositivo. Cuando se habilita con--bugreport,--dumpsyso--video, el directorio de ejecución también incluyebugreport.zip,dumpsys.txty grabaciones de video de la pantalla. - Las ejecuciones de ejecutables de Android incluyen
output.log, que captura la salida estándar (stdout) y el error estándar (stderr) que escribe tu ejecutable, ylogcat.txt(que se recopila de forma predeterminada para cada trabajo de Android), que captura el registro del sistema Android en todo el dispositivo, junto con cualquier artefacto opcional--bugreport,--dumpsys, o--video. - Las ejecuciones de XCTest de iOS incluyen
system.log(que se recopila de forma predeterminada para cada trabajo de XCTest de iOS), que captura el syslog sin procesar del dispositivo iOS, y cualquier.ipsinforme de fallas de diagnóstico si un proceso falló durante la ejecución de prueba. - Los archivos de dispositivos extraídos especificados con
--paths-to-pullse almacenan en la subcarpetaartifacts/del directorio de ejecución.- Para las ejecuciones de Android, los archivos extraídos conservan su ruta de acceso del dispositivo en
artifacts/(por ejemplo,artifacts/sdcard/output.txtoartifacts/data/local/tmp/results.json). - Para las ejecuciones de XCTest de iOS, los archivos extraídos de un contenedor de datos de la app con
--paths-to-pull=BUNDLE_ID:DEVICE_PATHse organizan por ID de paquete enartifacts/:- Si
com.example.appes la app en prueba, se guarda directamente enartifacts/output.txt. - Si
com.example.appes una app adicional (--additional-apps), se guarda enartifacts/com.example.app-genfiles/output.txt.
- Si
- Para las ejecuciones de Android, los archivos extraídos conservan su ruta de acceso del dispositivo en
Documentación de respaldo
- Aspectos básicos de las pruebas de apps para Android
- Cómo compilar pruebas de instrumentación
- Documentación de XCTest
- Acerca de los buckets de Cloud Storage
¿Qué sigue?
A continuación, prueba nuestra API de Device Streaming de la Developer Device Platform .