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
- Descargue el SDK de Google Cloud
- Asegúrese de que su instalación esté actualizada:
gcloud components update
- Inicie sesión en la CLI de gcloud con su cuenta de Google:
gcloud auth login
- Configura tu proyecto de Firebase en gcloud, donde PROJECT_ID es el ID de tu proyecto de Firebase:
gcloud config set project PROJECT_ID
Esto incluye la herramienta CLI de gcloud.
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
- La columna
models describe
: Obtenga más información sobre unMODEL_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
yVERSION
) 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 columnaTAGS
.Salida de ejemplo
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:
- 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. - 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.
- 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.
- 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:
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. |