En esta guía, se describe cómo ejecutar una XCTest de iOS con la CLI de gcloud beta
device-run y encontrar los resultados en la consola de Google Cloud . Se supone que tienes una cuenta y un proyecto de Google Cloud .
Para usar la CLI de device-run, deberás proporcionar el ID del proyecto de Google Cloud. Consulta gcloud beta device-run para obtener un resumen de los comandos.
Antes de comenzar
En estos pasos, se supone que ya hiciste lo siguiente:
- Creaste un proyecto de Google Cloud .
- Configura la Plataforma de dispositivos para desarrolladores siguiendo la guía de inicio rápido.
- Te autenticaste con
gclouden la terminal. - Revisé la descripción general de Device Run para obtener información general.
- Compilaste tus pruebas y las empaquetaste en un archivo ZIP.
Paso 1: Elige tipos de dispositivos
Con la CLI de device-run, las pruebas de iOS se pueden ejecutar en todos los dispositivos físicos disponibles. Para ver la lista completa de dispositivos disponibles, visita el Catálogo de dispositivos interactivo o ejecuta el siguiente comando:
gcloud beta 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 segmentar un dispositivo específico para la ejecución de la prueba, usa su ID correspondiente (p. ej., iphonese3-18-4) en el comando de envío.
Paso 2: 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. Crea tus pruebas para dispositivos iOS físicos
Abre tu proyecto en Xcode, compila tu app y prueba los destinos 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) tanto para el destino de la app como para el destino 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 la compilación, verifica que el manifiesto de la aplicación, el ejecutor y .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 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 3: Ejecuta tu XCTest
Ten en cuenta que estas marcas son obligatorias:
- Dispositivo: Especifica un dispositivo con
--device:--device iphonese3-18-4 - Test: Especifica el archivo ZIP de prueba con
--test:--test ./MyTests.zip
Para ejecutar tu XCTest, usa el comando gcloud beta 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 beta 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 4: Cómo configurar 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 - 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 - Push files to device: 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 - Pull files from device: Extrae archivos del contenedor de datos de app después de la ejecución de 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). - Dado que subir archivos ZIP o IPA grandes puede llevar mucho tiempo, puedes hacer referencia directamente a tus archivos con sus rutas de acceso de
gs://de Cloud Storage para ahorrar tiempo de carga.
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 los siguientes comandos:
- Describe session: Consulta el progreso en tiempo real o los resultados finales de una sesión:
gcloud beta device-run sessions describe SESSION_IDAgrega--fullpara ver detalles completos, incluidas las asignaciones de dispositivos, los IDs de ejecución y las rutas de artefactos de Cloud Storage. - List sessions: Consulta tus ejecuciones recientes:
gcloud beta device-run sessions list --limit=10 - Cancelar sesión: Detiene una sesión de prueba en ejecución:
gcloud beta device-run sessions cancel SESSION_ID - Cancelar operación: Detiene una operación pendiente o activa:
gcloud beta device-run operations cancel OPERATION_ID
¿Qué sigue?
A continuación, busca y analiza los registros.