Automatización de Android Guía súper fácil para crear tu primera prueba de Espresso

Hola amigos En previsión del inicio del curso Mobile QA Engineer , queremos compartir con usted una traducción de material interesante.




¿Qué es el espresso?


No, esta no es una bebida que bebes todos los días para alegrarte. Espresso es un marco de prueba de código abierto desarrollado por Google. Le permite realizar pruebas complejas de interfaz de usuario en un dispositivo o emulador real. ¿Tomará tiempo comenzar a escribir pruebas complejas para Android?

Posiblemente Pero nada le impide dar el primer paso y aprender a escribir casos de prueba simples para Android usando el marco Espresso en este momento.

¿Cuéntanos más sobre la automatización?


Por supuesto La automatización es una forma de acelerar las pruebas, hacerlas más eficientes y escalables. Las pruebas manuales son muy importantes, pero tener pruebas automatizadas es una opción mucho mejor en el futuro.

Básicamente hay dos tipos de marcos de prueba:

  1. Marcos que no necesitan acceso al código fuente y que no están integrados como parte del proyecto. Por ejemplo, WebDriver, Appium, QTP .
  2. Marcos que necesitan acceso al código fuente. Por ejemplo, Espresso, KIF (Keep It Functional) .

Espresso es un marco que necesita acceso al código fuente, por lo que para la automatización necesitamos acceso al código del proyecto. Como necesitamos un proyecto para trabajar, ¡creémoslo!

Componentes principales de espresso


Hay tres tipos de métodos disponibles en Espresso:

  1. ViewMatchers : le permite encontrar un objeto en la jerarquía actual de vistas
  2. ViewAssertions : le permite verificar el estado del objeto y confirmar que el estado cumple con los criterios
  3. ViewActions : estos métodos le permiten realizar diversas acciones con objetos.

Profundicemos y veamos cómo funciona todo con un ejemplo real.

Crea una aplicación de automatización simple


Lo primero que debemos hacer es crear una aplicación que automaticemos. Creemos un proyecto en Android Studio. Para esto, por supuesto, necesita Android Studio instalado en su computadora.

1. Abra Android Studio y cree una Actividad de navegación inferior.


Android Studio. Crear nueva ventana de proyecto

2. Asigne un nombre al proyecto y seleccione un lenguaje de programación.


Android Studio. Nombre del proyecto

3. Vaya a la carpeta androidTest


Android Studio. Prueba instrumental

Como puede ver, solo se escribe una prueba allí, y esta no es una prueba de IU, sino una prueba JUnit.

Ahora necesitamos agregar una prueba de interfaz de usuario simple. Para hacer esto, primero cree una regla para abrir MainActivity .

Agreguemos una importación de anotación de regla JUnit :

import org.junit.Rule; 

Lo siguiente que debe hacer es agregar la siguiente línea de código para complementar la anotación RunWith :

 @Rule public ActivityTestRule<MainActivity> activityActivityTestRule = new ActivityTestRule<>(MainActivity.class); 



Ahora vemos que ActivityTestRule está resaltado en rojo. Esto significa que necesitamos importar la función ActivityTestRule . Pero primero, necesitamos agregar una biblioteca que pueda hacer esto. En pocas palabras, para esta tarea necesitamos la ayuda de Gradle , un sistema de automatización de ensamblaje creado específicamente para este propósito.

Vayamos al archivo de configuración de Gradle y agreguemos esta biblioteca. Abra un archivo llamado build.gradle (Módulo: aplicación) y agregue la siguiente línea:

 androidTestImplementation 'com.android.support.test:rules:1.0.2' 


Android Studio. Añadir dependencia.

Después de agregar, debe hacer clic en el botón para sincronizar el proyecto y luego regresar al archivo con la implementación de prueba.

Ahora que se ha agregado la biblioteca, el siguiente paso es importarla al archivo con la prueba instrumental:

 import androidx.test.rule.ActivityTestRule; 


Android Studio. Importar ActivityTestRule.

Ok, ahora estamos listos para agregar nuestra primera prueba. Ingrese este código en ExampleInstrumentedTest :

 @Test public void clickButtonHome(){ onView(withId(R.id.navigation_home)).perform(click()).check(matches(isDisplayed())); } 


Android Studio. Agregar una prueba e importar elementos adicionales

Para nuestra prueba, necesitamos importar elementos adicionales antes de que comience a funcionar. ¡Haga clic en el botón Aceptar y, de hecho, estamos listos para lanzar nuestra prueba!

Ejecución de pruebas de espresso


Haga clic derecho en nuestra prueba a la izquierda y seleccione "Ejecutar ejemplo de prueba instrumentada" .



Dado que esta es una prueba de IU , no una prueba unitaria , veremos una ventana con una opción de dispositivo en el que nos gustaría ejecutarla. Ya tengo "Nexus 5X" como dispositivo, así que solo necesito seleccionarlo.



En su caso, si nunca ha implementado un proyecto de Android, seleccione su dispositivo Android real o haga clic en "Crear nuevo dispositivo virtual" y cree un nuevo dispositivo emulado para ejecutar las pruebas. Este puede ser cualquier dispositivo de la lista en la que le gustaría ejecutar pruebas.

¡Haz clic en Aceptar y prepárate para ver la magia!


Android Studio. Resultados de la prueba

Como puede ver, tenemos un conjunto de dos pruebas aprobadas: la prueba unitaria, que ya estaba allí después de que se creó el proyecto, y nuestra prueba clickHomeButton , que acabamos de escribir.


Android Studio. La prueba completada.

Como su nombre lo indica, solo hicimos clic en un botón en la barra de navegación inferior, que se llama "navigation_home" en la jerarquía MainActivity .

Analicemos lo que hicimos en esta cadena de métodos:

 public void clickButtonHome(){ onView(withId(R.id.navigation_home)).perform(click()).check(matches(isDisplayed())); } 

  1. 1. Llame a onView . Este método es un método de tipo ViewMatchers . Encontramos un objeto en nuestra Actividad para hacer algo.
  2. 2. A continuación, llamamos a realizar (clic ()) . Este método es un método de tipo ViewActions . Indicamos la acción específica que debe realizarse en este caso: hacer un clic (clic). Hay muchos más métodos de acción disponibles en Espresso, por ejemplo:
  3. 3. Lo último que debemos hacer es confirmar que la acción que realizamos realmente coincide con nuestros criterios, y para esto ejecutamos el método check (isDisplayed ()) , que es un método de tipo ViewAssertions . En este caso, verificamos que este objeto (vista) se haya mostrado en la pantalla después de que se realizó la acción de hacer clic.

Jerarquía de vista de Android


Estimado lector, espero haber podido explicarle cómo escribir pruebas básicas de IU para Android con Espresso.

Sin embargo, probablemente no sea tan simple entender qué sucedió exactamente aquí si no sabe dónde se encuentran todos estos botones y de dónde provienen. Para averiguarlo, debemos ir a la carpeta "res" en el lado izquierdo, abrir la carpeta "menú" y seleccionar "bottom_nav_menu.xml" .
Esto es lo que veremos allí:


Android Studio. Jerarquía de presentación del menú de navegación inferior.
Como puede ver, esta es la línea que asigna un nombre al elemento del menú:

 android:id="@+id/navigation_home" 

Eso es lo que usamos en nuestro código para ejecutar las pruebas. También hay botones de menú "navigation_dashboard" y "navigation_notifications" , disponibles en la parte inferior, así que continuemos y usémoslos en nuestras pruebas.

Más pruebas de espresso


Necesitamos volver al archivo ExampleInstrumentedTest y agregar un par de funciones de prueba más:

 @Test public void clickButtonDashboard(){ onView(withId(R.id.navigation_dashboard)).perform(click()).check(matches(isDisplayed())); } @Test public void clickButtonNotification(){ onView(withId(R.id.navigation_notifications)).perform(click()).check(matches(isDisplayed())); } 

Lo único que agregamos fue verificar varios elementos más del menú: "navigation_dashboard" y "navigation_notifications" .


Android Studio. Agrega dos pruebas más.

Por supuesto, estas pruebas podrían simplificarse aún más, pero para mostrar cómo funciona todo esto, supongamos que son perfectamente adecuadas para nuestros propósitos.

Continuemos y ejecutemos estas pruebas nuevamente. Haz clic en el botón Ejecutar .


Android Studio. Resultados de la prueba

Las 4 pruebas pasaron. Todas las vistas se encontraron, se hicieron clic y se confirmaron en la jerarquía de vistas.

Conclusión


Espresso es una solución poderosa para ejecutar pruebas de IU. Ahora que sabe cómo se crean, está listo para escribir pruebas mucho más potentes y complejas.

Que tengas una buena prueba!

Source: https://habr.com/ru/post/472372/


All Articles