Prueba con la CLI de Google Cloud

Esta guía describe cómo ejecutar una prueba XCTest o Game Loop usando la CLI de gcloud.

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

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

  3. Asegúrate de que tu instalación esté actualizada e incluya el comando gcloud firebase :
          gcloud components update
  4. Inicie sesión en la CLI de gcloud con su cuenta de Google:
          gcloud auth login
  5. Configura tu proyecto de Firebase en gcloud, donde PROJECT_ID es el ID de tu proyecto de Firebase:
         gcloud config set project PROJECT_ID

Paso 2 : ejecuta tu prueba

Ejecute una prueba XCT

  1. Cargue el archivo .zip de su prueba ejecutando el siguiente comando (si aún no ha empaquetado su aplicación, consulte Empaquetar su XCTest ):

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

    Test Lab le permite ejecutar pruebas en una variedad de versiones, dispositivos, orientaciones de pantalla y configuraciones regionales de iOS. Estas configuraciones se conocen como dimensiones de prueba de la prueba. Para ver las opciones para cada dimensión (por ejemplo, versiones de Xcode compatibles para la versión de iOS del dispositivo), sustituya models , versions o locales por dimension en el siguiente comando:

    gcloud firebase test ios dimension list

    La orientación de la pantalla es algo más sencilla, pues sus únicas opciones son portrait y landscape .

    Mire la lista de dimensiones de la prueba y seleccione algunas combinaciones en las que le gustaría ejecutar la prueba. Visite Planes de precios para ver la cantidad máxima de combinaciones que puede ejecutar por día.

  3. Una vez que haya elegido un conjunto de dimensiones de prueba, puede hacer que Test Lab ejecute sus pruebas usando el comando firebase test ios run . Para cada combinación de dimensiones de prueba que desee realizar, incluya una marca --device separada:

    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 su prueba falle debido a una incompatibilidad entre la versión de Xcode con la que se creó la prueba y la versión de Xcode predeterminada utilizada por Test Lab. Para especificar una versión de Xcode compatible para su prueba, use el indicador --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 tus matrices de prueba en Firebase console, opcionalmente puedes etiquetar tu matriz de prueba usando la marca --client-details matrixLabel="<label>" en el 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"

Probar derechos especiales

Para probar derechos que requieren un ID de aplicación explícito, puede hacerlo configurando el indicador --test-special-entitlements . Test Lab vuelve a firmar la aplicación con un nuevo identificador de paquete para admitir derechos especiales, así que asegúrese de que no haya recursos en su archivo zip que contengan referencias directas al identificador de paquete de la aplicación.

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

Para autorizar solicitudes de notificaciones push, los usuarios pueden crear tokens web JSON utilizando la clave de firma privada junto con el ID de clave: C7FD9DJAA8 y el ID de equipo: 9CKCGNNUQN . Los tokens generados serán válidos durante una hora y deberán actualizarse cada 60 minutos. Lea más sobre cómo establecer una conexión basada en tokens con APN.

Grupos de aplicaciones

Los ID de grupo de aplicaciones son universalmente únicos. Esto significa que cuando volvemos a firmar aplicaciones de usuario, solo podemos usar el ID del grupo de aplicaciones asociado con la cuenta de desarrollador de Test Lab. Si su prueba se basa en grupos de aplicaciones, fallará.

Ejecute una prueba de bucle de juego

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

Banderas para pruebas de Game Loop
--type

Obligatorio : especifica el tipo de prueba de iOS que desea ejecutar. Puede ingresar los tipos de prueba xctest (predeterminado) o game-loop .

--app

Requerido : ruta absoluta (GCS o sistema de archivos) al archivo IPA de su aplicación. Esta bandera solo es válida cuando se ejecutan pruebas de Game Loop.

--scenario-numbers

Los bucles (también conocidos como escenarios) que deseas ejecutar en tu aplicación. Puede ingresar un bucle, una lista de bucles o un rango de bucles. El bucle predeterminado 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 desea realizar la prueba (descubra qué dispositivos disponibles puede usar).

--timeout

La duración máxima que desea que se ejecute su prueba. Puede 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 larga.

Por ejemplo:

  • --timeout=200 obliga a que la prueba finalice cuando se ejecuta hasta 200 segundos.
  • --timeout=1h obliga a que la prueba finalice cuando dura hasta una hora.

Por ejemplo, el siguiente comando ejecuta una prueba de Game Loop 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) : automatice las pruebas futuras que cree

Crear secuencias de comandos de gcloud con Test Lab

Puedes usar scripts de shell o archivos por lotes para automatizar los comandos de prueba de aplicaciones móviles que de otro modo ejecutarías usando la línea de comandos de gcloud. Este script bash de muestra ejecuta un XCTest con un tiempo de espera de dos minutos e informa 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 script

Test Lab proporciona varios códigos de salida que puede utilizar para comprender mejor los resultados de las pruebas que ejecuta mediante scripts o archivos por lotes.

código de salida Notas
0 Todas las ejecuciones de prueba pasaron.
1 Se produjo un fracaso general. Las posibles causas incluyen: un nombre de archivo que no existe o un error de red/HTTP.
2 La prueba finalizó porque se proporcionaron comandos o argumentos desconocidos.
10 Uno o más casos de prueba (clases probadas o métodos de clase) dentro de una ejecución de prueba no pasaron.
15 Firebase Test Lab no pudo determinar si la matriz de prueba pasó o falló debido a un error inesperado.
19 La matriz de prueba fue cancelada por el usuario.
20 Se produjo un error de infraestructura de prueba.

Paso 4 : investigar los resultados de la prueba

Cuando comienza la prueba, recibirá un enlace a la página de resultados de la prueba . Las pruebas pueden tardar varios minutos en ejecutarse, según la cantidad de configuraciones diferentes que haya seleccionado y la duración del tiempo de espera de prueba establecido para sus pruebas. Una vez ejecutadas las pruebas, puede revisar los resultados de las mismas. Consulte Análisis de los resultados del laboratorio de pruebas de Firebase para obtener más información sobre cómo interpretar los resultados de sus pruebas.

Próximo paso

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