En esta guía, se describe cómo ejecutar una XCTest de iOS con la CLI de gcloud alpha
device-run y encontrar los resultados en la consola de Google Cloud . Se supone que
tienes una cuenta y un proyecto de Google Cloud .
Si migras 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 del proyecto de Google Cloud. Consulta gcloud alpha
device-run para obtener un resumen de los comandos.
Antes de comenzar
En estos pasos, se da por sentado que ya hiciste lo siguiente:
- Crear un proyecto de Google Cloud
- Configura Developer Device Platform siguiendo la guía de inicio rápido.
- Autenticado 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 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 través de la CLI a las versiones de Xcode compatibles 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 de1ma1h, y 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 - Extrae 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 las 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 de Cloud Storage
gs://para ahorrar tiempo de carga.
Ejecuciones síncronas y asíncronas
De forma predeterminada, el comando de envío es bloqueante (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 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 devuelve un ID de sesión de inmediato. Luego, puedes esperar a que se complete 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 dispositivo separados por comas o con varias marcas --device, cada una de las cuales especifica un ID de dispositivo diferente.
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, además, inspecciona sus ciclos de vida, las versiones compatibles y los metadatos antes de configurar las ejecuciones de pruebas.
Primero, enumera 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 los 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 obtener información sobre cómo filtrar esta lista. Para orientar la ejecución de prueba a un dispositivo específico, usa
su ID correspondiente (p. ej., iphonese3-18-4) en el comando de envío.
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 de .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 destinos de prueba para realizar las pruebas:
- Asegúrate de que la firma de código esté configurada correctamente en Xcode (especificando un perfil de aprovisionamiento y una identidad de desarrollador válidos) tanto para el destino de la app como para el 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"Para 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 la compilación
Después de compilar, verifica que la aplicación, el ejecutor y el manifiesto de .xctestrun
se hayan generado en ./build/Build/Products/. Si se firma 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 que se encuentran en la carpeta de productos de salida de la 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 comienza la ejecución, la CLI muestra 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 tu ejecución de prueba
Puedes hacer un seguimiento de las ejecuciones activas y administrar las sesiones históricas con estos comandos:
- Describe session: 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 artefactos de Cloud Storage. - Enumera las 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.