Descripción general de la ejecución de dispositivos en la Plataforma de dispositivos para desarrolladores

Te damos la bienvenida a Developer Device Platform Device Run, que te permite ejecutar pruebas en dispositivos Android físicos y virtuales, y en dispositivos iOS físicos en la nube. En esta página, se describen las similitudes entre la ejecución de pruebas de Android y de iOS. Consulta Device Run para Android y Device Run para iOS para conocer los pasos específicos de cada plataforma.

Para usar esta Google Cloud CLI, deberás proporcionar el ID de tu proyecto Google Cloud . Para obtener un resumen de los comandos, consulta gcloud beta device-run.

Ten en cuenta que estas marcas son obligatorias:

  • Dispositivo: Especifica un dispositivo con --device: --device shiba-35 o --device iphonese3-18-4
  • Prueba: Especifica el APK o IPA de prueba con --test: --test /path/to/test.apk o --test /path/to/test.ipa

Las siguientes opciones de configuración son comunes para las pruebas de iOS y Android.

Rutas de acceso de entrada y salida de Cloud Storage

  • Bucket personalizado de Cloud Storage: Puedes especificar un bucket personalizado de Cloud Storage para las entradas y salidas: --bucket-name=my-custom-bucket Si no especificas un bucket de Cloud Storage con la marca --bucket-name=, Google Cloud CLI usará un bucket predeterminado llamado PROJECT_ID-devicerun.
  • Archivos de entrada: Cuando especificas una ruta de acceso local con las marcas --test, --additional-apps o --xctestrun-file, Google Cloud CLI la copia automáticamente en tu bucket de Cloud Storage en gs://BUCKET_NAME/automation/inputs/DATE_TIME_FOUR_CHARS_SUFFIX/ cada vez que ejecutas el comando, donde BUCKET_NAME se establece de forma predeterminada en PROJECT_ID-devicerun.
  • Rutas de acceso a la nube: Debido a que subir archivos grandes puede llevar mucho tiempo, puedes hacer referencia a ellos directamente con sus rutas de acceso gs:// de Cloud Storage para ahorrar tiempo de carga.
  • Archivos de resultados: Los artefactos de salida se suben a tu bucket de Cloud Storage en gs://BUCKET_NAME/automation/sessions/session-[SESSION_ID]/.

Ejecuciones síncronas y asíncronas

De forma predeterminada, el comando submit es de bloqueo (síncrono). Esperará a que se complete la prueba y, luego, imprimirá una tabla de resumen de los resultados.

Para enviar la sesión y volver inmediatamente después de subir archivos a Cloud Storage, agrega la marca --async:

Android

gcloud beta device-run sessions submit instrumentation \
  --device shiba-35 \
  --test ./ANDROID_TESTS.apk \
  --async

iOS

gcloud beta device-run sessions submit xctest \
  --device iphonese3-18-4 \
  --test ./IOS_TESTS.zip \
  --async

Esto devuelve un ID de sesión de inmediato. Luego, puedes esperar a que se complete con el comando sessions wait:

gcloud beta device-run sessions wait SESSION_ID

El comando se bloqueará hasta que se complete el trabajo.

Varios dispositivos

Para ejecutar las mismas pruebas en varios dispositivos, proporciona la marca --device con varios IDs de dispositivos separados por comas o con varias marcas --device, cada una especificando un ID de dispositivo distinto.

Android

gcloud beta device-run sessions submit instrumentation \
  --device shiba-34,tokay-36 \
  --test ./ANDROID_TESTS.apk

O:

gcloud beta device-run sessions submit instrumentation \
  --device shiba-34 \
  --device tokay-36 \
  --test ./ANDROID_TESTS.apk

iOS

gcloud beta device-run sessions submit xctest \
  --device iphonese3-18-4,iphonese3-26-3 \
  --test ./IOS_TESTS.zip

O:

gcloud beta device-run sessions submit xctest \
  --device iphonese3-18-4 \
  --device iphonese3-26-3 \
  --test ./IOS_TESTS.zip

Tiempo de espera de la prueba

Limita la duración de la ejecución de la prueba:

Android

gcloud beta device-run sessions submit instrumentation \
  --device shiba-35 \
  --test ./ANDROID_TESTS.apk \
  --instrumentation-timeout=10m

iOS

gcloud beta device-run sessions submit xctest \
  --device iphonese3-18-4 \
  --test ./IOS_TESTS.zip \
  --xctest-timeout=10m

El rango válido es de 1m a 1h y el valor predeterminado es 5m.

Versiones de software

Descubre y usa los paquetes de software y las versiones disponibles de AndroidX Test Orchestrator y Apple Xcode, y, luego, inspecciona sus ciclos de vida, versiones compatibles y metadatos antes de configurar las ejecuciones de pruebas.

Primero, enumera todos los paquetes de software disponibles y sus versiones:

gcloud beta device-run software-versions list

Deberías recibir un resultado similar al siguiente:

ID                                NAME                              SOFTWARE_TYPE               VERSION  STATE   IS_DEFAULT
androidx-test-orchestrator-1-4-1  AndroidX Test Orchestrator 1.4.1  ANDROIDX_TEST_ORCHESTRATOR  1.4.1    ACTIVE  True
androidx-test-orchestrator-1-6-1  AndroidX Test Orchestrator 1.6.1  ANDROIDX_TEST_ORCHESTRATOR  1.6.1    ACTIVE
xcode-16-4                        Xcode 16.4                        XCODE                       16.4     ACTIVE
xcode-26-2                        Xcode 26.2                        XCODE                       26.2     ACTIVE  True

Luego, describe un paquete específico con su ID de recurso exacto de la lista:

Android

gcloud beta device-run software-versions describe androidx-test-orchestrator-1-4-1

iOS

gcloud beta device-run software-versions describe xcode-16-4

Deberías recibir un resultado similar al siguiente:

Android

id: androidx-test-orchestrator-1-4-1
isDefault: true
lifecycle:
  state: ACTIVE
name: AndroidX Test Orchestrator 1.4.1
softwareType: ANDROIDX_TEST_ORCHESTRATOR
version: 1.4.1

iOS

id: xcode-16-4
lifecycle:
  state: ACTIVE
name: Xcode 16.4
softwareType: XCODE
supportedIosVersions:

-   '15.0'
-   '15.1'
-   '15.2'
-   '15.4'
-   '15.7'
-   '16.0'
-   '16.1'
-   '16.2'
-   '16.3'
-   '16.5'
-   '16.6'
-   '18.0'
-   '18.3'
-   '18.4'
version: '16.4'

Ahora que sabes qué versiones de software están disponibles, puedes usarlas en tus ejecuciones de prueba con las marcas --orchestrator-version o --xcode-version, de la siguiente manera:

Android

gcloud beta device-run sessions submit instrumentation \
  --device shiba-35 \
  --test ./ANDROID_TESTS.apk \
  --orchestrator-version=1.4.1

Consulta Habilita Orchestrator para obtener más información.

iOS

gcloud beta device-run sessions submit xctest \
  --device iphonese3-18-4 \
  --test ./IOS_TESTS.zip \
  --xcode-version=16.4

Consulta Device Run para iOS para obtener más información.

Validación de entradas

La plataforma Developer Device intenta validar tus entradas, incluidos los artefactos, y devuelve un ERROR en lugar de PASSED o FAILED cuando encuentra entradas erróneas:

Session [session-94b57778] finished with result [ERROR].
JOB NAME  EXECUTION NAME  EXECUTION RESULT
job-000   execution-000   ERROR

Ahora, agrega --full al comando sessions describe para ver más detalles sobre la sesión:

gcloud beta device-run sessions describe --full session-94b57778

Esto genera un resultado similar al siguiente:

name: projects/user-test1/locations/global/sessions/session-94b57778
sessionConfig:
  displayName: instrumentation-session
  jobConfigs:
  -   action:
      androidInstrumentationTest:
        testInstallable:
          files:
          -   gcsInputFile:
              path: gs://user-test1-devicerun/automation/inputs/2026-09-16_18:55.17372947_EECF/my-test.apk
    allocationConfig:
      deviceConfigs:
      -   actions:
        -   androidLogcat: {}
        requirement:
          deviceId: mediumphone-arm-34
    displayName: job-000
  outputDirectoryConfig:
    gcsOutputDirectory:
      path: gs://user-test1-devicerun/automation/sessions
sessionReport:
  endTime: '2026-09-16T18:55:49.721Z'
  id: ed681f23-669b-4464-8a93-b28456e58136
  jobReports:
  -   displayName: job-000
    endTime: '2026-09-16T18:55:45.839Z'
    executionReports:
    -   displayName: execution-000
      endTime: '2026-09-16T18:55:46.694Z'
      id: ce370173-af94-4dd7-acc6-0863e4d2e9ec
      result:
        cause:
          summary:
            message: The instrumentation target package does not match any of the
              installable packages.
            reason: INSTRUMENTATION_TARGET_MISMATCH
            type: CUSTOMER
        resultType: ERROR
      startTime: '1970-01-01T00:00:00Z'
      status:
        statusType: PENDING
    id: 953b5106-3c20-40f0-aceb-18af89cd1b83
    result:
      cause:
        summary:
          message: The instrumentation target package does not match any of the installable
            packages.
          reason: INSTRUMENTATION_TARGET_MISMATCH
          type: CUSTOMER
      resultType: ERROR
    startTime: '2026-09-16T18:55:31.651Z'
    status:
      statusType: DONE
  result:
    resultType: ERROR
  startTime: '2026-09-16T18:55:24.442Z'
  status:
    statusType: DONE

¿Qué sigue?

Ejecuta una prueba de Android o ejecuta una prueba de iOS con la plataforma de dispositivos para desarrolladores.