Realiza pruebas con Google Cloud CLI

En esta guía, se describe cómo ejecutar una XCTest o una prueba de bucle de juego con la CLI de gcloud.

Paso 1: Configura el entorno local del SDK de Google Cloud

  1. Descarga el SDK de Google Cloud.
  2. Esto incluye la herramienta de CLI de gcloud.

  3. Asegúrate de que la instalación esté actualizada y que incluya el comando gcloud firebase:
          gcloud components update
  4. Accede a la CLI de gcloud con tu Cuenta de Google:
          gcloud auth login
  5. Configura tu proyecto de Firebase en gcloud, en el que PROJECT_ID es el ID del proyecto:
         gcloud config set project PROJECT_ID

Paso 2: Ejecuta la prueba

Ejecuta una XCTest

  1. Ejecuta el siguiente comando para subir el archivo ZIP de tu prueba (si aún no empaquetas la app, consulta Empaqueta tu XCTest):

    cd FOLDER_WITH_TEST_OUTPUT/Build/Products ; \
    zip -r MyTests.zip Debug-iphoneos YOUR_SCHEME_iphoneosDEPLOYMENT_TARGET-arm64.xctestrun
  2. Selecciona las dimensiones de tu prueba.

    Test Lab te permite ejecutar pruebas en una gran variedad de versiones de iOS, dispositivos, orientaciones de pantalla y opciones de configuración regional. Estas configuraciones se conocen como dimensiones de prueba. Para ver las opciones de cada dimensión (p. ej., las versiones de Xcode compatibles con la versión de iOS del dispositivo), reemplaza models, versions o locales por dimension en el siguiente comando:

    gcloud firebase test ios dimension list

    La orientación de la pantalla es un poco más sencilla, ya que sus únicas opciones son portrait y landscape.

    Revisa la lista de dimensiones de prueba y selecciona algunas combinaciones sobre las que te gustaría ejecutar la prueba. Consulta los planes de precios para ver la cantidad máxima de combinaciones que puedes ejecutar por día.

  3. Cuando elijas un conjunto de dimensiones de prueba, puedes hacer que Test Lab ejecute las pruebas con el comando firebase test ios run. Para cada combinación de dimensiones de prueba que quieras probar, incluye una marca --device individual:

    gcloud firebase test ios run --test PATH/TO/MyTests.zip \
     --device model=MODEL_ID_1,version=VERSION_ID_1,locale=LOCALE_1,orientation=ORIENTATION_1 \
     --device model=MODEL_ID_2,version=VERSION_ID_2,locale=LOCALE_2,orientation=ORIENTATION_2 \
     etc...

    Es posible que la prueba falle debido a una incompatibilidad entre la versión de Xcode con la que se compiló la prueba y la versión de Xcode predeterminada que usa Test Lab. Para especificar una versión de Xcode compatible con tu prueba, usa la marca --xcode-version:

    gcloud firebase test ios run --test PATH/TO/MyTests.zip \
     --device model=MODEL_ID_1,version=VERSION_ID_1,locale=LOCALE_1,orientation=ORIENTATION_1 \
     --xcode-version=15

    Para ayudarte a identificar y ubicar las matrices de pruebas en Firebase console, puedes etiquetar la matriz de pruebas de manera opcional con la marca --client-details matrixLabel="<label>" del siguiente ejemplo:

    gcloud beta firebase test ios run --test PATH/TO/MyTests.zip \
      --device model=MODEL_ID_1,version=VERSION_ID_1,locale=LOCALE_1,orientation=ORIENTATION_1 \
      --client-details matrixLabel="my label"

Prueba autorizaciones especiales

Para probar las autorizaciones que requieren un ID de app explícito, puedes configurar la marca --test-special-entitlements. Test Lab vuelve a firmar la aplicación con un nuevo identificador de paquete para admitir derechos especiales. Por lo tanto, asegúrate de que no haya ningún recurso en tu archivo ZIP que contenga referencias directas al identificador de paquete de la app.

Derechos admitidos:
  1. Notificaciones push apns-environment
  2. VPN personal com.apple.developer.networking.vpn.api
Notificaciones push

Para autorizar las solicitudes de notificaciones push, los usuarios pueden crear tokens web JSON con la clave de firma privada, el ID de clave C7FD9DJAA8 y el ID de equipo 9CKCGNNUQN. Los tokens generados serían válidos por una hora y se deben actualizar cada 60 min. Obtén más información en Establishing a Token‑Based Connection to APNs.

Grupos de apps

Los IDs de grupos de apps son únicos a nivel universal. Esto significa que, cuando volvemos a firmar las apps de los usuarios, solo podemos usar el ID del grupo de apps asociado con la cuenta de desarrollador de Test Lab. La prueba fallará si se basa en grupos de apps.

Ejecuta una prueba de bucle de juego

Ejecuta el comando gcloud beta firebase test ios run y usa las siguientes marcas para configurar la ejecución:

Marcas para ejecutar pruebas de bucle de juego
--type

Obligatorio: Especifica el tipo de prueba de iOS que deseas ejecutar. Puedes ingresar los tipos de prueba xctest (predeterminado) o game-loop.

--app

Obligatorio: Ruta absoluta (GCS o sistema de archivos) al archivo IPA de la app. Esta marca solo es válida cuando se ejecutan pruebas de bucle de juego.

--scenario-numbers

Los bucles o situaciones que deseas ejecutar en tu app. Puedes ingresar un solo bucle, o bien una lista o un rango. La cantidad predeterminada de bucles es 1.

Por ejemplo, --scenario-numbers=1-3,5 ejecuta los bucles 1, 2, 3 y 5.

--device-model

El dispositivo físico en el que quieres ejecutar la prueba (descubre cuáles son los dispositivos disponibles).

--timeout

La duración máxima de ejecución de la prueba. Puedes ingresar un número entero para representar la duración en segundos o un número entero y una enumeración para representar la duración como una unidad de tiempo más extensa.

Por ejemplo:

  • --timeout=200 fuerza la finalización de la prueba cuando se ejecuta hasta por 200 segundos.
  • --timeout=1h fuerza la finalización de la prueba cuando se ejecuta hasta por una hora.

Por ejemplo, en el siguiente comando se ejecuta una prueba de bucle de juego que ejecuta los bucles 1, 4, 6, 7 y 8 en un iPhone 8 Plus:

gcloud beta firebase test ios run
 --type game-loop --app path/to/my/App.ipa --scenario-numbers 1,4,6-8
 --device-model=iphone8plus

Para obtener más información sobre la CLI de gcloud, consulta la documentación de referencia.

Paso 3 (opcional): Automatiza las pruebas futuras que compiles

Crea secuencias de comandos de gcloud con Test Lab

Puedes usar secuencias de comandos de shell o archivos de lote para automatizar los comandos de prueba de apps para dispositivos móviles que, de otro modo, tendrías que ejecutar mediante la línea de comandos de gcloud. Este ejemplo de secuencia de comandos de Bash se ejecuta como XCTest con un tiempo de espera máximo de dos minutos y sirve para informar si la ejecución de la prueba se completó correctamente:

if gcloud firebase test ios run --test MyTest.zip --timeout 2m
then
    echo "Test matrix successfully finished"
else
    echo "Test matrix exited abnormally with non-zero exit code: " $?
fi

Códigos de salida de secuencias de comandos

Test Lab ofrece varios códigos de salida que puedes usar para comprender mejor los resultados de las pruebas que ejecutas con secuencias de comandos o archivos por lotes.

Código de salida Notas
0 Se aprobaron todas las ejecuciones de pruebas.
1 Hubo una falla general. Las causas posibles incluyen: un nombre de archivo que no existe o un error de HTTP/red.
2 Se salió de la prueba debido a que se proporcionaron comandos o argumentos desconocidos.
10 Uno o más casos de prueba (clases o métodos de clase evaluados) de una prueba no se aprobaron.
15 Firebase Test Lab no pudo determinar si la matriz de pruebas se aprobó o falló debido a un error inesperado.
19 El usuario canceló la matriz de pruebas.
20 Se produjo un error con la infraestructura de pruebas.

Paso 4: Investiga los resultados de las pruebas

Cuando comience la prueba, recibirás un vínculo a la página Resultados de la prueba. Las pruebas pueden tardar varios minutos en ejecutarse según la cantidad de configuraciones diferentes que hayas seleccionado y la duración del tiempo de espera que se haya configurado para tus pruebas. Una vez ejecutadas, podrás revisar los resultados. Consulta Analiza los resultados de Firebase Test Lab para obtener más información sobre cómo interpretar los resultados de las pruebas.

Próximo paso

Consulta la documentación del SDK de Google Cloud para explorar las opciones de prueba que están disponibles de manera general o en versión beta.