Crear pruebas de IU con la grabadora de pruebas Espresso

La herramienta Grabadora de pruebas Espresso 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 grabar tus interacciones con un dispositivo y agregar aserciones para verificar elementos de la IU en determinadas capturas de pantalla de tu app. La grabadora de pruebas Espresso luego usa la grabación guardada para generar de manera automática una prueba de IU correspondiente que puedes ejecutar para probar tu app.

La Grabadora de pruebas Espresso escribe pruebas en función del marco de trabajo de pruebas Espresso, una API de la Biblioteca de compatibilidad de pruebas de Android. La Espresso API te incentiva a crear pruebas de IU concisas y confiables basadas en las 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.

Desactivar animaciones en tu dispositivo de prueba

Antes de usar la Grabadora de pruebas Espresso, asegúrate de desactivar las animaciones en tu dispositivo de prueba para evitar resultados inesperados. Sigue las instrucciones de “Configurar Espresso”, en la página 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 la Grabadora de pruebas lo hace automáticamente cuando guardas una grabación. Solo debes realizar estos pasos una vez para un proyecto determinado.

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 la Grabadora de pruebas Espresso y de guardar tu grabación lista para generar la prueba.

Grabar interacciones de la IU

Para empezar a grabar una prueba con la Grabadora de pruebas Espresso, 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 Android Virtual Device nuevo. Haz clic en OK.
  3. La Grabadora de pruebas Espresso activa una compilación de tu proyecto y la app debe 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” (aún no se grabaron eventos). Interactúa con tu dispositivo para comenzar a registrar eventos como acciones que requieran “presionar” y “escribir”.

Nota: Antes de empezar a registrar interacciones, es posible que veas en el dispositivo un diálogo con la leyenda “Waiting for Debugger” (esperando el depurador) o “Attaching Debugger” (adjuntando el depurador). La Grabadora de pruebas Espresso usa el depurador para registrar eventos de la IU. Cuando se adjunte el depurador, el diálogo se cerrará automáticamente. No presiones Force Close.

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

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

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 View que se visualiza actualmente en la pantalla.
  • does not exist: comprueba que el elemento View no esté presente en la jerarquía View 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. El diálogo se cierra automáticamente una vez que Espresso obtiene 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 aparece en la parte inferior de la ventana. El objeto View seleccionado se destaca en un cuadro rojo.
  3. Selecciona la aserción que desees usar en el segundo menú desplegable del cuadro Edit assertion. Espresso completa el menú con aserciones válidas para el elemento View seleccionado.
    • Si seleccionas la aserción “text is”, Espresso inserta de forma automática el texto que se encuentra actualmente dentro del elemento View seleccionado. Puedes 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 la selección 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. La Grabadora de pruebas Espresso 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 conserva el diseño que tenía el dispositivo o el emulador en el momento en que presionaste el botón Add Assertion.

Guardar una grabación

Una vez que termines de interactuar con tu app y agregar inserciones, aplica los pasos siguientes 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. La Grabadora de pruebas Espresso asigna 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. El archivo se abrirá automáticamente después de que la Grabadora de pruebas Espresso 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 depende 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 guardan en la carpeta src > androidTest > java > com.example.username.appname del módulo de la app en el que grabaste la prueba.

Ejecutar una prueba Espresso localmente

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 depende de la ubicación de la raíz de tu prueba de instrumentación y del nombre del paquete de la actividad que se inició. 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 secundario en la prueba y luego con el primario en Run ‘testName.’
    • Como alternativa, puedes abrir el archivo de prueba y hacer clic con el botón secundario en la clase o el método de prueba generados. Podrás hallar más información sobre cómo ejecutar pruebas en la página Probar tu app.
  3. En la ventana Select Deployment Target, selecciona el dispositivo en el que quieres ejecutar la prueba. Si es necesario, crea un dispositivo Android Virtual Device nuevo. Haz clic en OK.

Controla el progreso de tu prueba en la ventana Run, en la parte inferior del IDE. Android Studio ejecuta una compilación completa de tu proyecto y abre una pestaña con el nombre de la prueba en la ventana Run, como se muestra en la figura 3. En esa pestaña, puedes comprobar si la prueba es exitosa o no y también el tiempo que se necesitó para ejecutarla. Cuando finalice la prueba, en la pestaña aparecerá el mensaje “Tests ran to completion” (pruebas completadas).

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 “Definir una configuración de pruebas para una clase o un método” en Crear y editar configuraciones de ejecución y depuración.

Ejecutar una prueba Espresso con Firebase Test Lab for Android

Puedes usar pruebas generadas por la Grabadora de pruebas Espresso 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 para 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.