Primeros pasos con Firebase Test Lab desde la línea de comandos de gcloud

Firebase Test Lab proporciona una infraestructura basada en la nube para probar aplicaciones de 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 interfaz de línea de comandos de gcloud.

Para ver una lista completa de los comandos de gcloud firebase test android que puedes usar en Test Lab, consulta gcloud firebase test android.

Crea un proyecto de Firebase

Si no tienes un proyecto de Firebase en tu app, ve a Firebase console y haz clic en Crear proyecto nuevo para 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 estar limitado por la cuota diaria, debes actualizar al plan Blaze de Firebase.

Configura el entorno local del SDK de Google Cloud

  1. Descarga la herramienta de línea de comandos de gcloud, si aún no lo has hecho: SDK de Google Cloud
  2. Asegúrate de que la instalación del SDK de Cloud esté actualizada y que incluya el comando gcloud firebase:
    gcloud components update
  3. Asegúrate de que tus credenciales de autenticación estén al día:
    gcloud auth login
  4. Configura el proyecto actual de gcloud:
    gcloud config set project PROJECT_ID

Cómo elegir las configuraciones de 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 de 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 predeterminado que se indica en la columna TAGS.

  3. Para obtener más información sobre un MODEL_ID de Android específico, usa el comando firebase test android models describe, como se indica a continuación:

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

Ejecución de pruebas

Ahora que conoces la gama de modelos de dispositivos, las versiones de SO y las configuraciones regionales disponibles para probar tu app, puedes utilizar esa información para especificar dispositivos de prueba mediante 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.

Cómo ejecutar la prueba Robo

Puedes buscar errores en la aplicación aun si no tienes pruebas de instrumentación. Usa la prueba Robo para completar una revisión automática de la interfaz de usuario de la aplicación. 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 un valor de --type. Para ver el conjunto completo de opciones de la línea de comandos para ejecutar pruebas, puedes escribir: 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 saber cómo 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.

Cómo ejecutar pruebas de instrumentación

Ahora, usa la herramienta de línea de comandos de gcloud para ejecutar las pruebas Espresso de la app de Notepad en las configuraciones de dispositivos Android que especificaste, con el tipo de prueba instrumentation para ejecutar las pruebas en app-debug-test-unaligned.apk de la siguiente manera:

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 especificó --test en 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 saber cómo usar esta función.

Las versiones Alfa y Beta de la CLI de gcloud son compatibles con Android Test Orchestrator. Orchestrator requiere AndroidJUnitRunner v1.0 o una versión más reciente. Para habilitarlo, usa gcloud beta 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 tus pruebas de instrumentación. Por ejemplo, puedes usar la marca --test-targets a fin de probar solamente una clase o un método de una clase que usa tu APK de prueba. Para obtener más información, consulta la página gcloud firebase test android run.

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, recibirás un informe de cobertura de código en 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 tu 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 utilices 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 en tu app, usa el parámetro --robo-directives y proporciona una lista de pares key-value separada por comas, en la que key es el nombre del recurso de Android del elemento de la IU de destino y value es la string del texto. Se admiten campos EditText, pero no campos de texto en elementos de IU de WebView.

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

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

Comandos y marcas en versión Beta

La CLI de gcloud de Test Lab tiene varios comandos y marcas disponibles en la versión Beta pública:

  • Marca de perfiles de tráfico de red: 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.

  • Marcas de prueba de bucle de juego: Es un tipo de prueba con marcas de configuración asociadas que habilitan y controlan un “modo de demostración” para simular acciones de los jugadores en apps de juegos. Obtén más información sobre las pruebas de bucle de juego.

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

  • Marca de intentos de prueba inestables: Especifica la cantidad de veces que se debe intentar de nuevo una ejecución de prueba si uno o más de sus casos de prueba fallan por alguna razón. Todos los intentos adicionales se ejecutan de forma paralela.

  • Comando para ignorar directiva de Robo: Indica a la prueba Robo que ignore cualquier elemento de IU con nombres de recurso que coincidan con los valores definidos por el usuario o que comiencen con ellos.

Cómo usar 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 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 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 en la infraestructura de pruebas.

Enviar comentarios sobre...

Si necesitas ayuda, visita nuestra página de asistencia.