Cómo crear pruebas de IU con Espresso Test Recorder

La herramienta Espresso Test Recorder te permite crear pruebas de IU para tu app sin la necesidad de escribir código de prueba. Al grabar un escenario de prueba, puedes registrar tus interacciones con un dispositivo y agregar aserciones para verificar elementos de la IU en determinadas capturas de pantalla de tu app. Espresso Test Recorder luego usa la grabación guardada a fin de generar de manera automática una prueba de IU correspondiente que puedes ejecutar para probar tu app.

Espresso Test Recorder escribe pruebas en función del marco de trabajo de pruebas Espresso, una API de AndroidX Test. La API de Espresso te incentiva a crear pruebas de IU concisas y confiables basadas en acciones de los usuarios. Al indicar expectativas, interacciones y aserciones sin acceder directamente a las actividades y las vistas subyacentes de la app, esta estructura evita puntos débiles en las pruebas y optimiza su velocidad de ejecución.

Cómo desactivar animaciones en tu dispositivo de prueba

Antes de usar Espresso Test Recorder, asegúrate de desactivar las animaciones en tu dispositivo de prueba para evitar resultados inesperados. Sigue las instrucciones de "Cómo configurar Espresso" de la página Cómo probar la IU de una app, pero ten en cuenta que no necesitas configurar manualmente una referencia de dependencia a la biblioteca Espresso, ya que Test Recorder lo hace de forma automática cuando guardas una grabación. Solo debes realizar estos pasos una vez para un proyecto determinado.

Cómo grabar una prueba Espresso

Las pruebas Espresso consisten en dos componentes principales: las interacciones y las aserciones de la IU en elementos View. Las interacciones de la IU incluyen acciones, como presionar y escribir, que una persona puede usar para interactuar con tu app. Las aserciones verifican la existencia o el contenido de elementos visuales en la pantalla. Por ejemplo, una prueba Espresso para la app de prueba de notas podría incluir interacciones con la IU que requieran hacer clic en un botón y escribir una nota nueva, pero usaría aserciones para verificar la existencia del botón y del contenido de la nota.

En esta sección, se repasarán la forma de crear esos componentes de prueba usando Espresso Test Recorder y de guardar tu grabación lista para generar la prueba.

Cómo grabar interacciones de la IU

Para empezar a grabar una prueba con Espresso Test Recorder, sigue estos pasos:

  1. Haz clic en Run > Record Espresso Test.
  2. En la ventana Select Deployment Target, elige el dispositivo en el que desees grabar la prueba. Si es necesario, crea un dispositivo virtual Android nuevo. Haz clic en OK.
  3. Espresso Test Recorder activará una compilación de tu proyecto y la app deberá instalarse e iniciarse para que la grabadora te permita interactuar con ella. Una vez que se inicie la app, aparecerá la ventana Record Your Test y, puesto que todavía no interactuaste con el dispositivo, en el panel principal se mostrará el mensaje "No events recorded yet". Interactúa con el dispositivo para comenzar a registrar eventos, como acciones "tap" y "type".

Nota: Antes de empezar a registrar interacciones, es posible que veas en el dispositivo un diálogo con la leyenda "Waiting for Debugger" o "Attaching Debugger". Espresso Test Recorder usa el depurador para registrar eventos de IU. Cuando se adjunte el depurador, se cerrará automáticamente el diálogo. No presiones Force Close.

Las interacciones grabadas aparecerán en el panel principal de la ventana Record Your Test, como se muestra a continuación en la figura 1. Cuando ejecutes la prueba, la prueba Espresso intentará ejecutar estas acciones en el mismo orden.

Figura 1: Ventana Record Your Test con interacciones registradas con la IU

Cómo agregar aserciones para verificar elementos de la IU

Las aserciones verifican la existencia o el contenido de un elemento View mediante tres tipos principales:

  • text is: Comprueba el contenido de texto del elemento View seleccionado.
  • exists: Comprueba que el elemento View esté presente en la jerarquía que se visualiza actualmente en la pantalla.
  • does not exist: Comprueba que el elemento View no esté presente en la jerarquía actual.

Para agregar una aserción a tu prueba, sigue estos pasos:

  1. Haz clic en Add Assertion. Aparecerá un diálogo Screen Capture mientras Espresso obtiene la jerarquía de la IU y otros datos sobre el estado actual de la app. Se cerrará automáticamente el diálogo una vez que Espresso obtenga la captura de pantalla.
  2. En un panel a la derecha de la ventana Record Your Test, aparecerá el diseño de la pantalla actual. Para seleccionar un elemento View en el que se creará una inserción, haz clic en el elemento en la captura de pantalla o usa el primer menú desplegable del cuadro Edit assertion que aparecerá en la parte inferior de la ventana. El objeto View seleccionado se destacará en un cuadro rojo.
  3. Selecciona la aserción que desees usar en el segundo menú desplegable del cuadro Edit assertion. Espresso completará el menú con aserciones válidas para el elemento View seleccionado.
    • Si seleccionas la aserción "text is", Espresso insertará de forma automática el texto que se encuentre dentro del elemento View seleccionado. Podrás editar el texto para que coincida con tu aserción elegida usando el campo de texto del cuadro Edit assertion.
  4. Haz clic en Save and Add Another para crear otra aserción o en Save Assertion para cerrar los paneles de aserciones.

En la captura de pantalla de la figura 2, se muestra la creación de una aserción "text is" para verificar que el título de la nota sea "Happy Testing!":

Figura 2: Cuadro Edit assertion después de seleccionar de un elemento View (en rojo)

Mientras creas una aserción, puedes continuar interactuando con tu app, incluso con los paneles de aserciones aún abiertos en la ventana Record Your Test. Espresso Test Recorder seguirá registrando tus acciones, pero la aserción que edites aparecerá antes de estas interacciones una vez que se guarde. La captura de pantalla para la aserción también conservará el diseño que tenía el dispositivo o el emulador cuando presionaste el botón Add Assertion.

Cómo guardar una grabación

Una vez que termines de interactuar con tu app y agregar inserciones, aplica los siguientes pasos para guardar tu grabación y generar la prueba Espresso:

  1. Haz clic en Complete Recording. Aparecerá la ventana Pick a test class name for your test.
  2. Espresso Test Recorder asignará a tu prueba un nombre único dentro de su paquete según el nombre de la actividad que se haya iniciado. Si deseas cambiar el nombre sugerido, usa el campo de texto Test class name. Haz clic en Save.
    • Si no agregaste dependencias de Espresso a tu app, cuando intentes guardar tu prueba, aparecerá el diálogo Missing Espresso dependencies. Haz clic en Yes para agregar automáticamente las dependencias a tu archivo build.gradle.
  3. Se abrirá automáticamente el archivo después de que Espresso Test Recorder lo genere, y Android Studio mostrará la clase de prueba conforme a lo seleccionado en la ventana Project del IDE.
    • La ubicación en la que se guarde la prueba dependerá de la ubicación de la raíz de tu prueba de instrumentación y del nombre del paquete de la actividad que se haya iniciado. Por ejemplo, las pruebas para la app de prueba de notas se guardarán en la carpeta src > androidTest > java > com.example.username.appname del módulo de la app en el que grabaste la prueba.

Cómo ejecutar una prueba Espresso de forma local

Para ejecutar una prueba Espresso, usa la ventana Project a la izquierda del IDE de Android Studio:

  1. Abre la carpeta del módulo de la app elegida y dirígete a la prueba que desees ejecutar. La ubicación de la prueba dependerá de la ubicación de la raíz de tu prueba de instrumentación y del nombre del paquete de la actividad que se haya iniciado. En los siguientes ejemplos, se muestra el destino en el que se guardaría una prueba para la app de prueba de notas:
    • Si usas la vista de Android en la ventana, dirígete a java > com.example.username.appname (androidTest).
    • Si usas la vista Project dentro de la ventana, dirígete a src > androidTest > java > com.example.username.appname en la carpeta del módulo.
  2. Haz clic con el botón derecho en la prueba y, luego, con el izquierdo en Run ‘testName.’
    • Como alternativa, puedes abrir el archivo de prueba y hacer clic con el botón derecho en la clase o el método de prueba generados. Obtén más información sobre cómo ejecutar pruebas en la página Cómo probar tu app.
  3. En la ventana Select Deployment Target, elige el dispositivo en el que desees grabar la prueba. Si es necesario, crea un dispositivo virtual Android nuevo. Haz clic en OK.

Controla el progreso de tu prueba en la ventana Run, en la parte inferior del IDE. Android Studio ejecutará una compilación completa de tu proyecto y abrirá una pestaña con el nombre de la prueba en la ventana Run, como se muestra en la figura 3. En esa pestaña, podrás comprobar si la prueba es exitosa o no, además del tiempo que se necesitó para ejecutarla. Cuando finalice la prueba, en la pestaña aparecerá el mensaje "Tests ran to completion".

Figura 3. Respuesta de ejemplo en la ventana Run después de la ejecución de una prueba Espresso a nivel local

Para obtener más información sobre cómo escribir configuraciones de ejecución de pruebas, lee la sección "Cómo definir una configuración de pruebas para una clase o un método" en Cómo crear y editar configuraciones de ejecución y depuración.

Cómo ejecutar una prueba Espresso con Firebase Test Lab for Android

Puedes usar pruebas generadas por Espresso Test Recorder con Firebase Test Lab para probar tu app en la nube con cientos de configuraciones de dispositivos. Puedes probar tu app sin cargo con Test Lab dentro de la cuota diaria gratuita del plan Spark. Para ejecutar pruebas Espresso con Firebase Test Lab, crea un proyecto de Firebase para tu app y, luego, sigue las instrucciones a fin de Ejecutar tus pruebas con Firebase Test Lab de Android Studio.

Figura 4. Respuesta de ejemplo en la ventana Run después de ejecutar una prueba con Firebase Test Lab en varios dispositivos