Comienza a realizar pruebas con la CLI de gcloud

Firebase Test Lab proporciona una infraestructura basada en la nube a fin de probar apps para Android. incluida la integración completa con la interfaz de línea de comandos (CLI) de gcloud. En este documento, se abordan la instalación y configuración necesarias para comenzar a usar Test Lab desde la CLI de gcloud.

Para 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.

Crea un proyecto de Firebase

Si no tienes un proyecto de Firebase para la app, ve a Firebase console y haz clic en Crear proyecto nuevo a fin de crearlo ahora. Deberás ser el propietario del proyecto o contar con los permisos para editarlo.

En los planes Spark y Flame, puedes usar Test Lab para ejecutar una cantidad limitada de pruebas por día. Si quieres usar Test Lab sin la limitación de la cuota diaria, debes actualizar al plan Blaze de Firebase.

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
    

Configura la prueba

En este ejemplo, ejecutarás algunas pruebas con una app sencilla para Android denominada Notepad, que sirve para escribir notas.

  1. Descarga el archivo APK binario de la app Notepad (app-debug-unaligned.apk) y las pruebas de instrumentación correspondientes (app-debug-test-unaligned.apk), que se incluyen en el directorio NotePad/app/build/outputs/apk/ de notepad.zip.

  2. Obtén la lista actual de dispositivos Android disponibles para realizar pruebas, como se indica a continuación:

    
    $ gcloud firebase test android models list
    
    Resultado de gcloud firebase test android models list La primera columna del resultado del comando, MODEL_ID, contiene el identificador que puedes usar más adelante para ejecutar pruebas en un modelo específico. En la columna OS_VERSION_ID, aparecen las versiones del sistema operativo que admite ese dispositivo. Si no especificas en qué MODEL_ID deseas que se realicen las pruebas, se usará el valor predeterminado que se indica en la columna TAGS.

  3. Ejecuta el comando firebase test android models describe de la siguiente manera para obtener más información sobre un MODEL_ID de Android específico:

    
    $ gcloud firebase test android models describe Nexus5
    
    El comando de ejemplo anterior proporciona información detallada sobre el modelo Nexus5, incluida la marca, el fabricante y los niveles de API compatibles. También se indica si el modelo es físico o virtual.

  4. Obtén la lista actual de las versiones del SO Android disponibles para realizar pruebas:

    
    $ gcloud firebase test android versions list
    
    gcloud 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.

  5. Obtén la lista actual de configuraciones regionales disponibles para realizar las pruebas:

    
    $ gcloud firebase test android locales list
    
    La primera columna del resultado de este 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. No se incluye el resultado del comando en esta página debido a que hay cientos de configuraciones regionales disponibles.

Ejecuta pruebas

Ahora que conoces el rango de modelos de dispositivos, las versiones de SO y las configuraciones regionales disponibles para probar tu app, puedes usar esa información para especificar dispositivos de prueba con el comando gcloud firebase test android run y la marca --device. El comando y la marca se usan sin importar si utilizas la prueba Robo a fin de probar tu app automáticamente o si ejecutas pruebas de instrumentación escritas específicamente para probar la app.

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ódigos 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 depósito de Google 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 pase por alto 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 fragmentos en los que deseas distribuir de manera uniforme los casos de prueba. Los fragmentos 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 fragmento (un grupo de casos de prueba). Los fragmentos 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.