En esta guía, se describe cómo ejecutar una prueba Robo, de instrumentación o de bucle de juego con la CLI de gcloud.
A fin de 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
.
Antes de comenzar
Si aún no lo has hecho, agrega Firebase a tu proyecto de Android.
Paso 1: Configura la CLI de gcloud
- Descarga el SDK de Google Cloud.
- Asegúrate de que la instalación esté actualizada:
gcloud components update
- Accede a gcloud CLI con tu Cuenta de Google:
gcloud auth login
- Configura tu proyecto de Firebase en gcloud, en el que PROJECT_ID es el ID del proyecto:
gcloud config set project PROJECT_ID
Esto incluye la herramienta de CLI de gcloud.
Paso 2. Verifica los dispositivos de prueba disponibles
Usa los siguientes comandos de gcloud a fin de ver los dispositivos de prueba y los parámetros de configuración regional que están disponibles para tu prueba.
Como opción, también puedes descargar la
app NotePad de ejemplo para comenzar
a ejecutar los comandos de inmediato. Usa 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
: Obtén una lista actualizada de los dispositivos Android disponibles para que puedas realizar pruebas.gcloud firebase test android models list
En el resultado del comando, verás lo siguiente:
- La columna
MODEL_ID
contiene el identificador que puedes usar más adelante para ejecutar pruebas en el modelo de dispositivo. - La columna
OS_VERSION_ID
contiene las versiones del sistema operativo compatibles con el dispositivo.
Resultado de ejemplo
- La columna
models describe
: Obtén más información sobre unMODEL_ID
de Android específico.gcloud firebase test android models describe MODEL_ID
El resultado contiene la marca, el fabricante, las versiones del SO, los niveles de API admitidos, las interfaces binarias de la aplicación (ABI) compatibles, las fechas de lanzamiento del modelo de dispositivo y si el dispositivo es físico o virtual.
versions list
: Obtén una lista de las versiones de SO disponibles para realizar pruebas.gcloud firebase test android versions list
Puedes usar un identificador de cualquiera de las dos primeras columnas del resultado del comando (
OS_VERSION_ID
yVERSION
) 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 columnaTAGS
.Resultado de ejemplo
locales list
: Obtén la lista actual de parámetros de configuración regional disponibles para realizar las pruebas:gcloud firebase test android versions list
La primera columna del resultado del 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.
Paso 3: Ejecuta la prueba
Ahora que conoces el rango de modelos de dispositivos, parámetros de configuración regional y versiones de SO disponibles
para probar tu app, puedes especificar dispositivos mediante el
comando gcloud firebase test android run
y la marca
--device
para ejecutar pruebas de instrumentación o Robo.
Ejecuta una 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 automática 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 fallas y otros posibles problemas.
Para ejecutar una prueba Robo, ejecuta 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 de--type
. - Si quieres identificar y ubicar las matrices de pruebas en
Firebase console,
puedes usar la marca opcional
--client-details matrixLabel="Example matrix label"
para etiquetar la matriz de pruebas. - 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 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.
Para obtener información sobre cómo investigar los resultados de las pruebas Robo, consulta Analiza los resultados de la prueba.
Ejecuta una prueba 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 opciones de configuración de tu dispositivo Android especificado. Usa 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 --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
. - Si quieres identificar y ubicar las matrices de pruebas en
Firebase console,
puedes usar la marca opcional
--client-details matrixLabel="Example matrix label"
para etiquetar la matriz de pruebas. - 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 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.1 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
.
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 una ejecución de 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ódigo 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 ejecutando gcloud firebase test android run
con algunos
argumentos adicionales. Si Android Test Orchestrator no está habilitado, usa 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 generas informes de cobertura de código y, al mismo tiempo, usas Android Test Orchestrator, modifica 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 tus pruebas, busca los informes de cobertura de código en Google Cloud Storage:
- Abre el vínculo de Firebase console que la herramienta
gcloud
imprimió sobre la tabla de resultados de la prueba en tu terminal. - Luego, haz clic en una ejecución de prueba de la lista para abrir su página de detalles.
- Haz clic en Resultados de la prueba para ir al bucket de Cloud Storage con los resultados de esa ejecución de prueba.
- 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:
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 Analiza los resultados de Firebase Test Lab para 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 ignore 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
gcloud CLI 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 para ejecutar pruebas de bucle de juego con Test Lab.
Marca de fragmentación uniforme (beta): Sirve para especificar la cantidad de shards en los que deseas distribuir de manera uniforme los casos de prueba. Los shards 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 shard (un grupo de casos de prueba). Los shards 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.
Crea secuencias de 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 por lotes.
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 inesperado. |
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. |