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 y archivos ejecutables en dispositivos Android físicos y virtuales, y dispositivos iOS físicos en la nube. En esta página, se resumen las capacidades y se describen las similitudes entre la ejecución de pruebas de instrumentación de Android, archivos ejecutables de Android y pruebas de iOS. Consulta Device Run para Android y Device Run para iOS para conocer los pasos específicos de la plataforma.

Si estás migrando de Firebase Test Lab a Developer Device Platform, consulta nuestra guía de migración, la traducción de comandos y marcas, y la habilidad de migración para agentes de IA.

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

Funciones clave

Developer Device Platform Device Run es un Google Cloud servicio que te permite ejecutar paquetes de pruebas automatizadas en dispositivos móviles físicos y virtuales. Diseñado para flujos de trabajo modernos de integración continua y entrega continua (CI/CD), Device Run ofrece control de línea de comandos a través de la Google Cloud CLI (gcloud beta device-run), lo que permite a los equipos ejecutar, administrar y escalar paquetes de pruebas en hardware dedicado y entornos virtuales.

1. Pruebas automatizadas multiplataforma

  • Compatibilidad con Android y iOS: Device Run admite frameworks de pruebas integrados, incluidas las pruebas de instrumentación de Android (.apk), los archivos ejecutables de Android (objetos binarios compilados) y las XCTests de iOS (.ipa o .zip).
  • Segmentación de dispositivos flexible: Segmenta dispositivos físicos o virtuales específicos que aparecen en el catálogo de dispositivos con identificadores de SO y modelo (p.ej., modelos de Pixel o iPhone) a través de la marca --device.
  • Ejecución paralela multidispositivo: Ejecuta paquetes de pruebas idénticos de forma simultánea en varios dispositivos especificando IDs de dispositivos separados por comas o proporcionando varias marcas --device.

2. Modos y controles de ejecución flexibles

  • _Envíos síncronos y asíncronos_: Las ejecuciones de prueba operan de forma síncrona de forma predeterminada y muestran un resumen cuando se completan. Si agregas la marca --async, se muestra un ID de sesión de inmediato para la ejecución sin bloqueo, que se puede supervisar más adelante con gcloud beta device-run sessions wait.
  • Tiempos de espera de ejecución personalizados*: Configura los límites de duración de la ejecución con --instrumentation-timeout o --xctest-timeout.
  • Reintentos de pruebas inestables: Establece la cantidad máxima de reintentos para las ejecuciones de pruebas inestables con la marca --flaky-test-attempts.

3. Administración de versiones de software y dependencias

  • Entornos de prueba configurables*: Descubre, inspecciona y selecciona versiones específicas del entorno de software, como AndroidX Test Orchestrator y Apple Xcode , antes de iniciar las ejecuciones de prueba.
  • Descubrimiento de versiones: Usa los comandos gcloud beta device-run software-versions list y describe para ver los paquetes de software activos, las versiones de SO compatibles, y las especificaciones predeterminadas del entorno de ejecución.

4. Administración de almacenamiento y artefactos

  • Integración de Cloud Storage: Las entradas de prueba (APKs, IPAs, apps compatibles) y los artefactos de salida (registros, informes de pruebas) se almacenan en Cloud Storage.
  • Flexibilidad de los buckets: Se establece automáticamente como predeterminado un bucket de proyecto llamado PROJECT_ID-devicerun o se enruta a un bucket personalizado especificado a través de la marca --bucket-name. Tienes el control total de este bucket y deberás quitar su contenido de forma manual cuando ya no sea necesario o configurar la administración automatizada del ciclo de vida en el bucket. Consulta Acerca de la eliminación de objetos para obtener instrucciones.
  • Rutas de acceso directas a la nube: Haz referencia directamente a las rutas de acceso gs:// existentes para archivos grandes para eliminar la sobrecarga de carga.

5. Funciones avanzadas de pruebas de Android

  • Android Test Orchestrator: Aísla la ejecución de pruebas ejecutando cada prueba en su propia instancia Instrumentation para evitar el estado compartido de la app y aislar las fallas de la aplicación.
  • Fragmentación de pruebas:
    • Fragmentación uniforme: Divide de manera uniforme los casos de prueba en una cantidad especificada de fragmentos (--sharding-option=uniform).
    • Fragmentación inteligente: Usa datos históricos de ejecución de pruebas para equilibrar los casos de prueba de forma dinámica en los fragmentos, segmentando una duración total de ejecución específica (--sharding-option=smart).

6. Administración de sesiones y diagnóstico

  • Control total de la sesión: Genera listas, describe, filtra o cancela ejecuciones de prueba activas o históricas con sessions list, sessions describe, y sessions cancel.
  • Validación de entrada temprana: Realiza la validación automática en los objetos binarios de prueba enviados y los artefactos de configuración, y muestra detalles explícitos de errores y causas raíz (como desajustes de paquetes de destino) cuando se producen errores.

Configuración principal

Marcas obligatorias

Ten en cuenta que estas marcas son obligatorias:

  • Dispositivo: Especifica un dispositivo con --device: --device shiba-35 o --device iphonese3-18-4
  • Prueba o ejecutable: Especifica el paquete de prueba con --test (--test /path/to/test.apk o --test /path/to/MyTests.zip) para las ejecuciones de prueba, o especifica el objeto binario o la secuencia de comandos ejecutables con --executable (--executable /path/to/my_executable) para las ejecuciones de archivos ejecutables de Android.

Las siguientes opciones de configuración son comunes en las sesiones de Device Run.

Rutas de acceso de entrada y salida de Cloud Storage

  • Bucket personalizado de Cloud Storage: Puedes especificar un bucket personalizado de Cloud Storage para entradas y salidas: --bucket-name=my-custom-bucket Si no especificas un bucket de Cloud Storage con la marca --bucket-name=, la 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, --executable, --apps, --additional-apps, --other-files-to-push, o --xctestrun-file, la Google Cloud CLI la copia automáticamente a 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]/.

Validación de entradas

Developer Device Platform intenta validar tus entradas, incluidos los artefactos, y muestra un ERROR en lugar de PASSED o FAILED cuando encuentra una entrada errónea:

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

Lo que da como resultado 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 o un archivo ejecutable de Android o ejecuta una prueba de iOS con Developer Device Platform.