Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Comience a probar con la CLI de gcloud

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

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

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

Antes de que empieces

Si aún no lo ha hecho, agregue Firebase a su proyecto de Android .

Paso 1. Configurar la CLI de gcloud

  1. Descarga 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. Configure su proyecto de Firebase en gcloud, donde PROJECT_ID es el ID de su proyecto de Firebase:
    gcloud config set project PROJECT_ID
    

Paso 2. Verifique los dispositivos de prueba disponibles

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

Como opción, también puede descargar la aplicación de muestra Bloc de notas para comenzar a ejecutar los comandos de inmediato. Use 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 actual 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 tarde para ejecutar pruebas en el modelo de dispositivo.
    • La columna OS_VERSION_ID contiene las versiones del sistema operativo compatibles con el dispositivo.

    Salida de ejemplo

    gcloud firebase test android models list output

  • los 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 compatibles, las interfaces binarias de aplicaciones (ABI) compatibles, las fechas de lanzamiento y si el dispositivo es físico o virtual.

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

    gcloud firebase test android versions list
    

    Puede usar un identificador de cualquiera de las dos primeras columnas de la salida del comando ( OS_VERSION_ID y VERSION ), para luego ejecutar pruebas contra una versión del sistema operativo Android. Si no especifica las versiones del sistema operativo Android para probar, se usa el valor predeterminado que se indica en la columna TAGS .

    Salida de ejemplo

    gcloud android versions list

  • locales list : Obtenga la lista actual de locales disponibles para probar.

    gcloud firebase test android versions list
    

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

Ejecutando pruebas

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

Ejecutando la prueba Robo

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

Comencemos ejecutando 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 --type . Puede ver el conjunto completo de opciones de línea de comandos para ejecutar pruebas escribiendo: gcloud help firebase test android run . Como alternativa a especificar todos estos argumentos en la línea de comando, puede especificar opcionalmente sus argumentos en un archivo de argumentos con formato YAML. Ejecute gcloud topic arg-files para obtener información sobre cómo usar esta función.

Consulte la sección Analice los resultados de su prueba para obtener información sobre cómo investigar los resultados de la prueba de Robo.

Ejecutando sus pruebas de instrumentación

Ahora use la herramienta de línea de comandos de gcloud para ejecutar las pruebas de Espresso de la aplicación Notepad en las configuraciones de su dispositivo Android especificado. Use el tipo de prueba de 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 ha especificado un APK de prueba con --test . Como alternativa a especificar todos estos argumentos en la línea de comando, puede especificar opcionalmente sus argumentos en un archivo de argumentos con formato YAML. Ejecute gcloud topic arg-files para obtener información sobre cómo usar esta función.

La CLI de gcloud es compatible con 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 la --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 --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 utilizando --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 fracasar por cualquier motivo. Para obtener más información, consulte gcloud firebase test android run .

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 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 Test Lab ejecutando gcloud firebase test android run con algunos argumentos adicionales. Si Android Test Orchestrator no está habilitado, use 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 está generando informes de cobertura de código mientras usa Android Test Orchestrator, modifique sus 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 sus informes de cobertura de código en Google Cloud Storage:

  1. Abra el enlace de la consola Firebase que la herramienta gcloud imprimió sobre 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. Haz 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 su informe de cobertura de código.

Analiza los resultados de tus pruebas

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

Command test results

El resultado de la ejecución de la prueba de la línea de comandos 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 resultados de Firebase Test Lab para Android .

Inicio de sesión personalizado y entrada de texto con prueba Robo

La prueba Robo completa automáticamente las pantallas de inicio de sesión que usan una cuenta de Google para la autenticación, a menos que use el parámetro --no-auto-google-login . También puede completar pantallas de inicio de sesión personalizadas utilizando las credenciales de la cuenta de prueba que 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 este indicador para decirle 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 de WebView .

Por ejemplo, podría usar 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 y marcas disponibles que le permiten ejecutar pruebas con diferentes especificaciones:

Creación de secuencias de comandos de gcloud con Test Lab

Puede usar secuencias de comandos de shell o archivos por lotes para automatizar los comandos de prueba de aplicaciones móviles que, de otro modo, ejecutaría con 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 del script

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

Scripting de códigos de salida para Test Lab

código de salida notas
0 Todas las ejecuciones de prueba pasaron.
1 Ocurrió una falla 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 las 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.