Catch up on everthing we announced at this year's Firebase Summit. Learn more

Comienza a realizar pruebas con la CLI de gcloud

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

A fin de ver una lista completa de los comandos de gcloud que puedes usar con tu app para Android en Test Lab, visita la documentación de referencia de gcloud firebase test android.

Antes de comenzar

Si aún no lo has hecho, agrega Firebase a tu proyecto de Android.

Paso 1: Configura la CLI de gcloud

  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:
    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. Para ello usa el siguiente comando y reemplaza PROJECT_ID por el ID del proyecto:
    gcloud config set project PROJECT_ID
    

Paso 2: Verifica los dispositivos de prueba disponibles

Usa los siguientes comandos de gcloud a fin de ver los dispositivos de prueba y los parámetros de configuración regional que están disponibles para tu prueba.

Como opción, también puedes descargar la app NotePad de ejemplo para comenzar a ejecutar los comandos de inmediato. Usa el archivo binario app-debug-unaligned.apk y el archivo de pruebas de instrumentación app-debug-test-unaligned.apk, que se encuentran en NotePad/app/build/outputs/apk/.

  • models list: Obtén una lista actualizada de los dispositivos Android disponibles para que puedas realizar pruebas.

    gcloud firebase test android models list
    

    En el resultado del comando, verás lo siguiente:

    • La columna MODEL_ID contiene el identificador que puedes usar más adelante para ejecutar pruebas en el modelo de dispositivo.
    • La columna OS_VERSION_ID contiene las versiones del sistema operativo compatibles con el dispositivo.

    Resultado de ejemplo

    Resultado de gcloud firebase test android models list

  • models describe: Obtén más información sobre un MODEL_ID de Android específico.

    gcloud firebase test android models describe MODEL_ID
    

    El resultado contiene la marca, el fabricante, las versiones del SO, los niveles de API admitidos, las fechas de lanzamiento del modelo de dispositivo y si el dispositivo es físico o virtual.

  • versions list: Obtén una lista de las versiones de SO disponibles para realizar pruebas.

    gcloud firebase test android versions list
    

    Puedes usar un identificador de cualquiera de las dos primeras columnas del resultado del comando (OS_VERSION_ID y VERSION) para ejecutar pruebas en una versión del SO Android posteriormente. Si no especificas las versiones del SO Android con las que deseas realizar las pruebas, se usará la versión predeterminada que aparece en la columna TAGS.

    Resultado de ejemplo

    gcloud android versions list

  • locales list: Obtén la lista actual de parametros de configuración regional disponibles para realizar las pruebas:

    gcloud firebase test android versions list
    

    La primera columna del resultado del comando, LOCALE, contiene el identificador que puedes usar después para ejecutar pruebas con esa configuración regional. Si no especificas la configuración regional con la que deseas realizar las pruebas, se usará la de idioma inglés como la configuración regional predeterminada.

Ejecuta pruebas

Ahora que conoces el rango de modelos de dispositivos, parámetros de configuración regional y versiones de SO disponibles para probar tu app, puedes especificar dispositivos mediante el comando gcloud firebase test android run y la marca --device para ejecutar pruebas de instrumentación o Robo.

Ejecuta la prueba Robo

Incluso si no tienes pruebas de instrumentación, puedes buscar errores en tu app. Usa la prueba Robo para realizar una revisión automatizada de la interfaz de usuario de tu app. La prueba Robo evalúa la app mediante un análisis estático de diversas rutas por la interfaz de usuario de la app y después rastrea la app para encontrar bloqueos y otros posibles problemas.

Para empezar, ejecutemos un comando de ejemplo:

gcloud firebase test android run \
  --type robo \
  --app app-debug-unaligned.apk \
  --device model=Nexus6,version=21,locale=en,orientation=portrait  \
  --device model=Nexus7,version=19,locale=fr,orientation=landscape \
  --timeout 90s

El parámetro --type robo está implícito si no se especifica ningún valor de --type. Para ver el conjunto completo de opciones de línea de comandos para ejecutar pruebas, escribe: gcloud help firebase test android run. Para no tener que especificar todos estos argumentos en la línea de comandos, puedes usar un archivo de argumentos en formato YAML. Ejecuta gcloud topic arg-files para aprender a usar esta función.

Consulta la sección Analiza los resultados de la prueba para ver cómo investigar los resultados de la prueba Robo.

Ejecuta pruebas de instrumentación

Ahora, usa la herramienta de línea de comandos de gcloud para ejecutar las pruebas de Espresso de la app Notepad en las configuraciones de tu dispositivo Android especificado, con el tipo de prueba instrumentation para ejecutarlas en app-debug-test-unaligned.apk como se describe a continuación:

gcloud firebase test android run \
  --type instrumentation \
  --app app-debug-unaligned.apk \
  --test app-debug-test-unaligned.apk \
  --device model=Nexus6,version=21,locale=en,orientation=portrait  \
  --device model=Nexus7,version=19,locale=fr,orientation=landscape

El parámetro --type instrumentation está implícito si se usó --test para especificar un APK de prueba. Para no tener que especificar todos estos argumentos en la línea de comandos, puedes usar un archivo de argumentos en formato YAML. Ejecuta gcloud topic arg-files para aprender a usar esta función.

La CLI de gcloud admite Android Test Orchestrator. Orchestrator requiere AndroidJUnitRunner v1.0 o una versión más reciente. Para habilitarlo, usa gcloud firebase test android run con la marca
--use-orchestrator. Para inhabilitarlo, usa la marca --no-use-orchestrator.

Nota: También puedes usar otras marcas que no se muestran en el ejemplo anterior para controlar la manera en que Test Lab ejecuta las pruebas de instrumentación. Por ejemplo, puedes usar la marca --test-targets para probar una sola clase o un método de clase que usa tu APK de prueba. También puedes averiguar si la prueba que falló era inestable o no con la marca “--num-flaky-test-attempts”, que especifica la cantidad de veces que se debe reintentar la ejecución de una prueba si uno o más casos de prueba fallan por cualquier motivo. Consulta gcloud firebase test android run para obtener más información.

Informes de cobertura de código para pruebas de instrumentación

Test Lab es compatible con las herramientas de informes de cobertura de código EMMA y JaCoCo. Si tienes alguna de ellas integrada en la compilación de tu app, puedes obtener un informe de cobertura de código para las pruebas de Test Lab cuando ejecutes el comando gcloud firebase test android run con los siguientes argumentos:

gcloud firebase test android run \
  --type instrumentation \
  --app your-app.apk \
  --test your-app-test.apk \
  --device model=TestDevice,version=AndroidVersion  \
  --environment-variables coverage=true,coverageFile="/sdcard/coverage.ec" \
  --directories-to-pull /sdcard

Cuando Test Lab termine de ejecutar tus pruebas, verás los informes de cobertura de códigos en Google Cloud Storage:

  1. Abre el vínculo de Firebase console que la herramienta gcloud imprimió sobre la tabla de resultados de la prueba en tu terminal.
  2. Luego, haz clic en una ejecución de prueba de la lista para abrir su página de detalles.
  3. Haz clic en Resultados de la prueba para ir al bucket de Cloud Storage con los resultados de esa ejecución de prueba.
  4. Abre artifacts/coverage.ec para ver el informe de cobertura de código.

Analiza los resultados de las pruebas

Al cabo de algunos minutos, la herramienta gcloud mostrará un resumen básico de los resultados de la prueba:

Resultado de prueba de comando

El resultado de la ejecución de prueba de la línea de comandos también incluye un vínculo para ver los resultados de la prueba. Para obtener más información sobre cómo interpretar estos resultados, consulta cómo analizar los resultados de Firebase Test Lab for Android.

Acceso personalizado y entrada de texto con la prueba Robo

La prueba Robo completa automáticamente las pantallas de acceso que usan una Cuenta de Google para la autenticación, a menos que uses el parámetro --no-auto-google-login. También puede completar pantallas personalizadas de acceso que utilizan las credenciales de cuenta de prueba que proporciones. Puedes usar este parámetro a fin de proporcionar texto de entrada personalizado para otros campos de texto que utilice tu app.

Para completar los campos de texto de tu app, usa el parámetro --robo-directives y proporciona una lista de pares key-value separados por comas, en los que key es el nombre del recurso de Android del elemento de la IU de destino y value es la string de texto. También puedes usar esta marca para indicarle a Robo que ignore elementos específicos de la IU (p. ej., el botón “salir”). Se admiten los campos EditText, pero no los campos de texto incluidos en los elementos de la IU de tipo WebView.

Por ejemplo, puedes usar el siguiente parámetro para el acceso personalizado:

--robo-directives username_resource=username,password_resource=password

Comandos y marcas disponibles

La CLI de gcloud de Test Lab tiene varios comandos y marcas disponibles que te permiten ejecutar pruebas con diferentes especificaciones:

  • Marca de Android Test Orchestrator: Sirve para habilitar Orchestrator, una herramienta que te permite ejecutar cada una de las pruebas de tu app en su propia invocación de Instrumentation. Test Lab siempre ejecuta la versión más reciente de Orchestrator.

  • Marcas de prueba de bucle de juego: Son un conjunto de marcas de configuración que habilitan y controlan un “modo de demostración” para simular las acciones de un jugador en las apps de videojuegos. Obtén más información sobre cómo ejecutar pruebas de bucle de juego con Test Lab.

  • Marca de fragmentación uniforme (beta): Sirve para especificar la cantidad de shards en los que deseas distribuir de manera uniforme los casos de prueba. Los shards se ejecutan en paralelo en dispositivos separados.

  • Marca de fragmentación manual (beta): Sirve para especificar un grupo de paquetes, clases o casos de prueba para ejecutar en un shard (un grupo de casos de prueba). Los shards se ejecutan en paralelo en dispositivos separados.

  • Marca de perfiles de tráfico de red (beta): Especifica el perfil de red que usan tus pruebas con dispositivos físicos. Los perfiles de red emulan diversas condiciones de red, lo que te permite probar el rendimiento de tu app en redes poco confiables o impredecibles.

Usa 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. El siguiente ejemplo de secuencia de comandos de Bash se ejecuta como prueba de instrumentación 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 android run --app my-app.apk --test my-test.apk --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 de lote.

Códigos de salida de secuencias de comandos para Test Lab

Código de salidaNotas
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 imprevisto.
18 El entorno de prueba de esta ejecución no es compatible debido a las dimensiones de las pruebas. Este error puede ocurrir si el nivel de API de Android seleccionado no es compatible con el tipo de dispositivo seleccionado.
19 El usuario canceló la matriz de pruebas.
20 Se produjo un error con la infraestructura de pruebas.