En esta guía, se describe cómo encontrar los resultados de las pruebas y los ejecutables activados siguiendo la guía de Device Run de Developer Device Platform.
Antes de comenzar
En estos pasos, se supone que ya creaste un proyecto de Google Cloud ,
completaste los pasos de configuración en la guía de
inicio rápido de Developer Device Platform y te autenticaste
con gcloud en la terminal.
En la línea de comandos
Consulta un resumen básico de tu prueba o resultado ejecutable con este comando y tu ID de sesión:
gcloud beta device-run sessions describe SESSION_ID
Esto devuelve 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
Para cada ID de tipo de dispositivo que especificaste con la marca --device, se genera un trabajo en la sesión. El índice del trabajo seguirá el orden de los IDs de tus dispositivos. Se esperan fallas en las pruebas, que 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 que ejecutaste antes, de la siguiente manera:
gcloud beta device-run sessions describe SESSION_ID --full
Esto devuelve 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 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 de la app que se está probando en
.../artifacts/output.txt (sin com.example.app/Documents/).
En un navegador web
Para obtener todos los detalles, carga la URL en el bucket que contiene los resultados de la prueba
desde el resultado de la prueba. Debería verse de la siguiente manera:
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 explorar tus registros en la interfaz web de la consola de Google Cloud , sigue estos pasos:
- En un navegador, agrega el nombre de tu proyecto 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ú de 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 Automatización.
- Haz clic en Sesiones.
- En el campo Filtro, pega el ID de sesión de la última ejecución de prueba (consulta el resultado de la prueba).
- Haz clic en el nombre de la sesión resultante.
- Selecciona job-* para ver
junit.xml(para las ejecuciones de instrumentación de Android y XCTest de iOS), que contiene detalles de los resultados combinados de todas las ejecuciones y los casos de prueba del trabajo. - Abre execution-* (o execution-*-rerun-* cuando los reintentos de 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 numerosos artefactos. Consulta Comprende 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 comprender mejor la ejecución de tu sesión. La estructura del archivo se parece 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/. En el caso de --paths-to-pull=com.example.app:/Documents/output.txt, cuando se extrae de la app que se está probando (AUT), el servicio quita /Documents y coloca el archivo directamente en artifacts/output.txt (no en 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.
Comprende los resultados
Para las ejecuciones de instrumentación de Android y XCTest de iOS, los archivos junit.xml que se generan
en el resultado son archivos en formato XML de JUnit estándar. Se escribe un junit.xml a nivel de la 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 específico de aprobación o falla, el tiempo de ejecución y los seguimientos de errores
de cada método de prueba individual. Puedes integrar y analizar estos archivos con facilidad
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 las pruebas estructuradas, 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 de 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 de Android en todo el dispositivo, junto con cualquier artefacto opcional--bugreport,--dumpsyso--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 registro del sistema sin procesar del dispositivo iOS, y cualquier informe de fallas de diagnóstico de.ipssi un proceso falló durante la ejecución de la prueba. Cuando se habilita con--video, cada video de caso de prueba de IU grabado se almacena entestcases/TEST_CLASS/TEST_METHOD/video.mp4. - Los archivos de dispositivo extraídos que se especifican con
--paths-to-pullse almacenan en la subcarpetaartifacts/del directorio de ejecución.- En el caso de 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). - En el caso de las ejecuciones de XCTest para iOS, los archivos extraídos de un contenedor de datos de la app con
--paths-to-pull=BUNDLE_ID:DEVICE_PATHse organizan por ID del paquete enartifacts/:- Si
com.example.appes la app que se está probando, 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
- En el caso de 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 la API de Device Streaming de Developer Device Platform.