Comience a realizar pruebas con la CLI de gcloud

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

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

Antes de que empieces

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

Paso 1. Configura la CLI de gcloud

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

  3. Asegúrese de que su instalación esté actualizada:
    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. Verifique los dispositivos de prueba disponibles

Usa los siguientes comandos de gcloud para ver los dispositivos de prueba y las configuraciones regionales que están disponibles para tu prueba.

Como opción, también puede descargar la aplicación Bloc de notas de muestra para comenzar a ejecutar los comandos de inmediato. Utilice 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 : obtenga una lista actualizada de dispositivos Android disponibles para realizar pruebas.

    gcloud firebase test android models list
    

    En la salida del comando:

    • La columna MODEL_ID contiene el identificador que puede usar más adelante para ejecutar pruebas en el modelo del dispositivo.
    • La columna OS_VERSION_ID contiene las versiones del sistema operativo admitidas por el dispositivo.

    Salida de ejemplo

    gcloud firebase test android models list output

  • models describe : Obtenga 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 del modelo del dispositivo, el fabricante, las versiones del sistema operativo, los niveles de API admitidos, las interfaces binarias de aplicaciones (ABI) admitidas, las fechas de lanzamiento y si el dispositivo es físico o virtual.

  • versions list : obtenga una lista de las versiones del sistema operativo disponibles actualmente para realizar pruebas.

    gcloud firebase test android versions list
    

    Puede utilizar un identificador de cualquiera de las dos primeras columnas de salida del comando ( OS_VERSION_ID y VERSION ) para ejecutar pruebas posteriores en una versión del sistema operativo Android. Si no especifica las versiones del sistema operativo Android con las que realizar la prueba, se utiliza el valor predeterminado indicado en la columna TAGS .

    Salida de ejemplo

    gcloud android versions list

  • locales list : obtenga la lista actual de configuraciones regionales disponibles para realizar pruebas.

    gcloud firebase test android versions list
    

    La primera columna del resultado del comando, LOCALE , contiene el identificador que puede usar más adelante para ejecutar pruebas en una configuración regional. Si no especifica las configuraciones regionales con las que realizar la prueba, se utilizará el inglés como configuración regional predeterminada.

Paso 3. Ejecute su prueba

Ahora que conoce la variedad de modelos de dispositivos, configuraciones regionales y versiones de sistema operativo disponibles para probar su aplicación, puede especificar dispositivos usando el comando gcloud firebase test android run y la marca --device para ejecutar pruebas de Robo o de instrumentación.

Ejecute una prueba robótica

Incluso si no tienes ninguna prueba de instrumentación, aún puedes buscar errores en tu aplicación. Utilice la prueba Robo para realizar una revisión automática de la interfaz de usuario de su aplicación. Robo test ejercita la aplicación realizando un análisis estático de las distintas rutas a través de la interfaz de usuario de la aplicación y luego rastrea la aplicación para encontrar fallas y otros problemas potenciales.

Para ejecutar una prueba Robo, ejecute el siguiente 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 \
  --client-details matrixLabel="Example matrix label"
  • El parámetro --type robo está implícito si no se especifica ningún valor --type .
  • Para ayudarlo a identificar y ubicar sus matrices de prueba en Firebase console, puede usar el indicador opcional --client-details matrixLabel="Example matrix label" para etiquetar su matriz de prueba.
  • Puedes ver el conjunto completo de opciones de línea de comando para ejecutar pruebas escribiendo: gcloud help firebase test android run .

Como alternativa a especificar estos argumentos en la línea de comando, opcionalmente puede especificar sus argumentos en un archivo de argumentos con formato YAML. Ejecute gcloud topic arg-files para aprender a usar esta función.

Para aprender cómo investigar los resultados de la prueba Robo, consulte Analizar los resultados de su prueba .

Ejecutar una prueba de instrumentación

Ahora use la herramienta de línea de comandos gcloud para ejecutar las pruebas de Espresso de la aplicación Notepad en las configuraciones de su dispositivo Android especificadas. Utilice 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
  --client-details matrixLabel="Example matrix label"
  • El parámetro de instrumentación --type está implícito si se especifica un APK de prueba con --test .
  • Para ayudarlo a identificar y ubicar sus matrices de prueba en Firebase console, puede usar el indicador opcional --client-details matrixLabel="Example matrix label" para etiquetar su matriz de prueba.
  • Puedes ver el conjunto completo de opciones de línea de comando para ejecutar pruebas escribiendo gcloud help firebase test android run .

Como alternativa a especificar estos argumentos en la línea de comando, opcionalmente puede especificar sus argumentos en un archivo de argumentos con formato YAML. Ejecute gcloud topic arg-files para aprender a usar esta función.

La CLI de gcloud admite Android Test Orchestrator . Orchestrator requiere AndroidJUnitRunner v1.1 o superior. Para habilitarlo, use gcloud firebase test android run con el
--use-orchestrator . Para deshabilitarlo use el indicador --no-use-orchestrator .

También puede controlar cómo Test Lab ejecuta sus pruebas de instrumentación utilizando indicadores adicionales que no se muestran arriba. Por ejemplo, puedes usar la marca --test-targets para probar una sola clase o un método de clase usado por tu APK de prueba. También puede averiguar si la prueba que falló fue realmente inestable o no usando el indicador --num-flaky-test-attempts , que especifica la cantidad de veces que se debe volver a intentar la ejecución de una prueba si uno o más de sus casos de prueba fallar por cualquier motivo. Para obtener más información, consulta la ejecución de Android de prueba de gcloud firebase .

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

Test Lab admite las herramientas de informes de cobertura de código EMMA y JaCoCo . Si tiene alguna de las herramientas integradas en la compilación de su aplicación, puede obtener un informe de cobertura de código para las pruebas de laboratorio de pruebas ejecutando gcloud firebase test android run con algunos argumentos adicionales. Si Android Test Orchestrator no está habilitado, utilice lo siguiente:

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/Download/coverage.ec" \
  --directories-to-pull /sdcard/Download

Si genera informes de cobertura de código mientras utiliza Android Test Orchestrator, modifique las variables de entorno de la siguiente manera:

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

Cuando Test Lab termine de ejecutar sus pruebas, busque los informes de cobertura de código en Google Cloud Storage:

  1. Abra el enlace de la consola de Firebase que la herramienta gcloud imprimió encima de la tabla de resultados de la prueba en su terminal.
  2. Haga clic en una ejecución de prueba de la lista en ese enlace para abrir la página de detalles de esa ejecución.
  3. Haga clic en Resultados de la prueba para ir al depósito de Cloud Storage con los resultados de la prueba de esa ejecución.
  4. Abra artifacts/coverage.ec para ver el informe de cobertura de su código.

Analice los resultados de su prueba

Después de unos minutos, la herramienta gcloud imprime un resumen básico de los resultados de tu prueba:

Command test results

El resultado de la ejecución de prueba de la línea de comando también incluye un enlace para ver los resultados de la prueba. Para obtener más información sobre cómo interpretar estos resultados, consulte Análisis de los resultados de Firebase Test Lab para Android .

Inicio de sesión personalizado e ingreso de texto con prueba Robo

Robo test completa automáticamente las pantallas de inicio de sesión que utilizan una cuenta de Google para la autenticación, a menos que utilice el parámetro --no-auto-google-login . También puede completar pantallas de inicio de sesión personalizadas utilizando las credenciales de cuenta de prueba que usted proporcione. También puede utilizar este parámetro para proporcionar texto de entrada personalizado para otros campos de texto utilizados por su aplicación.

Para completar los campos de texto en su aplicación, use el parámetro --robo-directives y proporcione una lista separada por comas de pares key-value , donde la key es el nombre del recurso de Android del elemento de la interfaz de usuario de destino y el value es la cadena de texto. . También puede usar esta bandera para indicarle a Robo que ignore elementos específicos de la interfaz de usuario (por ejemplo, el botón "cerrar sesión"). Los campos EditText son compatibles, pero no los campos de texto en los elementos de la interfaz de usuario WebView .

Por ejemplo, podría utilizar el siguiente parámetro para un inicio de sesión personalizado:

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

Comandos y banderas disponibles

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

  • Bandera de Android Test Orchestrator : una bandera para habilitar Orchestrator, una herramienta que le permite ejecutar cada una de las pruebas de su aplicación en su propia invocación de Instrumentation . Test Lab siempre ejecuta la última versión de Orchestrator.

  • Indicadores de prueba de Game Loop : un conjunto de indicadores de configuración que habilitan y controlan un "modo de demostración" para simular las acciones del jugador en aplicaciones de juegos. Obtenga más información sobre cómo ejecutar pruebas de Game Loop con Test Lab .

  • Indicador de fragmentación uniforme (en versión beta) : un indicador que especifica la cantidad de fragmentos en los que desea distribuir uniformemente los casos de prueba. Los fragmentos se ejecutan en paralelo en dispositivos separados.

  • Indicador de fragmentación manual (en versión beta) : un indicador que especifica un grupo de paquetes, clases y/o casos de prueba para ejecutar en un fragmento (un grupo de casos de prueba). Los fragmentos se ejecutan en paralelo en dispositivos separados.

  • Indicador de perfiles de tráfico de red (en versión beta) : un indicador que especifica qué perfil de red utilizan sus pruebas con dispositivos físicos. Los perfiles de red emulan una variedad de condiciones de red, lo que le permite probar el rendimiento de su aplicación en redes poco confiables o impredecibles.

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. El siguiente script bash de ejemplo ejecuta una prueba de instrumentación con un tiempo de espera de dos minutos e informa 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 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ódigos de salida de secuencias de comandos para Test Lab

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.
18 El entorno de prueba para esta ejecución de prueba no es compatible debido a dimensiones de prueba incompatibles. Este error puede ocurrir si el nivel de API de Android seleccionado no es compatible con el tipo de dispositivo seleccionado.
19 La matriz de prueba fue cancelada por el usuario.
20 Se produjo un error de infraestructura de prueba.