En esta guía, se describe cómo ejecutar una XCTest de iOS con la gcloud alpha device-run
CLI y encontrar los resultados en la Google Cloud consola. Se supone que tienes una
Google Cloud cuenta y un proyecto de.
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 la CLI de device-run, deberás proporcionar el ID de tu Google Cloud
proyecto. Consulta gcloud alpha
device-run para obtener un resumen de los comandos.
Antes de comenzar
En estos pasos, se supone que ya hiciste lo siguiente:
- Creaste un Google Cloud proyecto.
- Configuraste la plataforma de dispositivos para desarrolladores siguiendo la Guía de inicio rápido.
- Te autenticaste con
gclouden la terminal. - Revisaste la descripción general de Device Run para obtener información general.
- Compilaste tus pruebas y las empaquetaste en un archivo ZIP.
Paso 1: Configura la ejecución de la prueba
Puedes personalizar la ejecución de la prueba con las siguientes marcas opcionales (aunque se requiere al menos una instancia de la marca --device):
- Varios dispositivos: Especifica la marca
--devicevarias veces para ejecutar la misma prueba en varios dispositivos de forma simultánea:--device iphonese3-18-4 --device iphonese3-26-3o--device iphonese3-18-4,iphonese3-26-3 - Apps adicionales: Instala uno o más paquetes
.ipaadicionales antes de iniciar la prueba con--additional-apps:--additional-apps=/path/to/AdditionalApp.ipa - Archivo
.xctestrunpersonalizado: Pasa un archivo de configuración personalizado con--xctestrun-file:--xctestrun-file=/path/to/CustomTests.xctestrun - Versiones de Apple Xcode: Accede directamente a las versiones de Xcode compatibles con la CLI
con la marca
--xcode-version, por ejemplo:--xcode-version=xcode-16-4 - Tiempo de espera de la prueba: Limita la duración de la ejecución:
--xctest-timeout=10m(el rango válido es de1ma1hy el valor predeterminado es5m). - Etiquetas: Adjunta metadatos definidos por el usuario a la sesión:
--labels=env=staging,owner=my-team - Configuración regional: Establece la configuración regional del dispositivo:
--locale=en-US - Enviar archivos al dispositivo: Envía archivos al contenedor de datos de la app antes de la ejecución de la prueba:
--other-files-to-push=/tmp/data.txt=com.example.app:/Documents/data.txt - Extraer archivos del dispositivo: Extrae archivos del contenedor de datos de la app después de la ejecución de la prueba:
--paths-to-pull=com.example.app:/Documents/output.txt - Reintentos de pruebas inestables: Establece la cantidad máxima de intentos para volver a ejecutar pruebas inestables:
--flaky-test-attempts=3(el valor predeterminado es 1 intento). - Bucket de Cloud Storage personalizado: Especifica un bucket de Cloud Storage personalizado
para entradas y salidas:
--bucket-name=my-custom-bucket(el valor predeterminado esPROJECT_ID-devicerun). - Debido a que subir archivos ZIP o IPA grandes puede llevar mucho tiempo, puedes hacer referencia directamente a tus archivos con sus rutas de acceso
gs://de Cloud Storage para ahorrar tiempo de carga.
Ejecuciones síncronas y asíncronas
De forma predeterminada, el comando submit es bloqueador (síncrono). Esperará a que se complete la prueba y mostrará una tabla de resumen de los resultados.
Para enviar la sesión y regresar de inmediato después de subir archivos a Cloud Storage, agrega la marca --async:
gcloud alpha device-run sessions submit xctest \
--device iphonese3-18-4 \
--test ./IOS_TESTS.zip \
--async
Esto muestra un ID de sesión de inmediato. Luego, puedes esperar con el comando sessions wait:
gcloud alpha device-run sessions wait SESSION_ID
El comando se bloqueará hasta que se complete el trabajo.
Varios dispositivos
Para ejecutar la misma prueba en varios dispositivos, proporciona la marca --device con varios IDs de dispositivos separados por comas o con varias marcas --device, cada una de las cuales especifica un ID de dispositivo distinto.
Separados por comas
gcloud alpha device-run sessions submit xctest \
--device iphonese3-18-4,iphonese3-26-3 \
--test ./IOS_TESTS.zip
Varias marcas
gcloud alpha 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:
gcloud alpha 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 Apple Xcode, y examina sus ciclos de vida, versiones compatibles y metadatos antes de configurar las ejecuciones de prueba.
Primero, haz una lista de todos los paquetes de software disponibles y sus versiones:
gcloud alpha device-run software-versions list
Recibirás 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:
gcloud alpha device-run software-versions describe xcode-16-4
Recibirás un resultado similar al siguiente:
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 la marca --xcode-version, de la siguiente manera:
gcloud alpha device-run sessions submit xctest \
--device iphonese3-18-4 \
--test ./IOS_TESTS.zip \
--xcode-version=16.4
Paso 2: Elige tipos de dispositivos
Con la CLI de device-run, las pruebas de iOS se pueden ejecutar en los dispositivos físicos disponibles. Para ver la lista completa de dispositivos disponibles, visita el
Catálogo de dispositivos
interactivo o ejecuta lo siguiente:
gcloud alpha device-run devices list
Resultado de ejemplo:
ID MAKE NAME MODEL HARDWARE_TYPE OS_VERSION CAPACITY AVAILABILITY PRODUCTS
iphonese3-18-4 Apple iPhone SE 3 iphonese3 PHYSICAL 18.4 NONE NONE Automation
iphonese3-26-3 Apple iPhone SE 3 iphonese3 PHYSICAL 26.3 NONE NONE Automation
Consulta el Catálogo
de dispositivos para aprender a
filtrar esta lista. Para orientar un dispositivo específico para la ejecución de prueba, usa su ID correspondiente (p. ej., iphonese3-18-4) en el comando submit.
Paso 3: Prepara y empaqueta tu XCTest
Antes de ejecutar las pruebas, debes compilarlas, asegurarte de que estén firmadas, verificar las firmas de código y empaquetar los artefactos resultantes en un archivo ZIP que contenga tu configuración .xctestrun y los paquetes de prueba de la aplicación.
1. Compila tus pruebas para dispositivos iOS físicos
Abre tu proyecto en Xcode y compila tu app y los objetivos de prueba para realizar pruebas:
- Asegúrate de que la firma de código esté configurada correctamente en Xcode (especifica un perfil de aprovisionamiento y una identidad de desarrollador válidos) para el objetivo de la app y el objetivo del ejecutor de pruebas.
Compila para realizar pruebas con Xcode (Product > Build For > Testing) o con
xcodebuild.En el caso de un espacio de trabajo, haz lo siguiente:
xcodebuild build-for-testing \ -workspace YourProject.xcworkspace \ -scheme YourScheme \ -derivedDataPath ./build \ -destination "generic/platform=iOS"En el caso de un proyecto independiente, haz lo siguiente:
xcodebuild build-for-testing \ -project YourProject.xcodeproj \ -scheme YourScheme \ -derivedDataPath ./build \ -destination "generic/platform=iOS"
Esto genera los productos de compilación en: ./build/Build/Products
2. Verifica los productos y las firmas de compilación
Después de la compilación, verifica que la aplicación, el ejecutor y el manifiesto .xctestrun se hayan generado en ./build/Build/Products/. Si se firmó de forma local, puedes verificar las firmas del paquete con codesign:
Verifica el paquete de aplicación:
codesign --verify --deep --verbose ./build/Build/Products/Debug-iphoneos/YourApp.appResultado esperado:
YourApp.app: valid on diskSi ejecutas una XCUITest, también verifica el paquete del ejecutor de pruebas:
codesign --verify --deep --verbose ./build/Build/Products/Debug-iphoneos/YourApp-Runner.appResultado esperado:
YourApp-Runner.app: valid on disk
3. Crea el archivo ZIP
Comprime el directorio Debug-iphoneos y el archivo .xctestrun ubicado en la carpeta de productos de salida de compilación en un solo archivo ZIP.
Ejecuta el siguiente comando desde el directorio de productos de compilación:
cd ./build/Build/Products
zip -r MyTests.zip Debug-iphoneos *.xctestrun
Esto crea el MyTests.zip empaquetado que está listo para usarse con la marca --test.
Paso 4: Ejecuta tu XCTest
Ten en cuenta que estas marcas son obligatorias:
- Dispositivo: Especifica un dispositivo con
--device:--device iphonese3-18-4 - Prueba: Especifica el archivo ZIP de prueba con
--test:--test ./MyTests.zip
Para ejecutar tu XCTest, usa el comando gcloud alpha device-run sessions submit xctest. Debes proporcionar el archivo ZIP de prueba (MyTests.zip) compilado en el paso anterior.
Para ejecutar una sesión de prueba básica, haz lo siguiente:
gcloud alpha device-run sessions submit xctest \
--device iphonese3-18-4 \
--test ./MyTests.zip
Cuando comience la ejecución, la CLI mostrará el ID de sesión creado y el destino de Cloud Storage en el que se almacenarán los resultados:
Creating session [session-ee78b0ed] in location [global].
Result files will be stored at [https://console.cloud.google.com/storage/browser/BUCKET_NAME/automation/sessions/session-ee78b0ed/].
Waiting for session [session-ee78b0ed] to complete....
Paso 5: Explora y administra la ejecución de la prueba
Puedes hacer un seguimiento de las ejecuciones activas y administrar las sesiones históricas con estos comandos:
- Describir sesión: Consulta el progreso en vivo o los resultados finales de una sesión:
gcloud alpha device-run sessions describe SESSION_IDAgrega--fullpara ver los detalles completos, incluidas las asignaciones de dispositivos, los IDs de ejecución y las rutas de acceso de artefactos de Cloud Storage. - Enumerar sesiones: Consulta tus ejecuciones recientes:
gcloud alpha device-run sessions list --limit=10 - Cancelar sesión: Detén una sesión de prueba en ejecución:
gcloud alpha device-run sessions cancel SESSION_ID - Cancelar operación: Detén una operación pendiente o activa:
gcloud alpha device-run operations cancel OPERATION_ID
¿Qué sigue?
A continuación, busca y analiza registros.