Automatisation Android Guide super simple pour créer votre premier test Espresso

Bonjour mes amis. En prévision du début du cours d' Ingénieur QA Mobile , nous souhaitons partager avec vous une traduction de matériel intéressant.




Qu'est-ce que l'Espresso?


Non, ce n'est pas une boisson que vous buvez tous les jours pour égayer. Espresso est un framework de test open source développé par Google. Il vous permet d'effectuer des tests d'interface utilisateur complexes sur un véritable appareil ou émulateur. Faut-il du temps pour commencer à écrire des tests complexes pour Android?

C'est possible. Mais rien ne vous empêche de faire le premier pas et d'apprendre à écrire des cas de test simples pour Android en utilisant le framework Espresso dès maintenant.

Parlez-nous de l'automatisation?


Bien sûr. L'automatisation est un moyen d'accélérer les tests, de les rendre plus efficaces et évolutifs. Les tests manuels sont très importants, mais avoir des tests automatisés est une bien meilleure option à l'avenir.

Il existe essentiellement deux types de cadres de test:

  1. Cadres qui n'ont pas besoin d'accéder au code source et qui ne sont pas intégrés dans le cadre du projet. Par exemple, WebDriver, Appium, QTP .
  2. Cadres qui ont besoin d'accéder au code source. Par exemple, Espresso, KIF (Keep It Functional) .

Espresso est un framework qui a besoin d'accéder au code source, donc pour l'automatisation nous avons besoin d'accéder au code du projet. Puisque nous avons besoin d'un projet pour travailler, créons-le!

Composants principaux d'Espresso


Il existe trois types de méthodes disponibles dans Espresso:

  1. ViewMatchers - vous permettent de trouver un objet dans la hiérarchie actuelle des vues
  2. ViewAssertions - vous permet de vérifier l'état de l'objet et de confirmer que l'état répond aux critères
  3. ViewActions - ces méthodes vous permettent d'effectuer diverses actions avec des objets.

Allons plus loin et voyons comment tout cela fonctionne avec un exemple réel.

Créez une application d'automatisation simple


La première chose que nous devons faire est de créer une application que nous automatiserons. Créons un projet dans Android Studio. Pour cela, bien sûr, vous devez installer Android Studio sur votre ordinateur.

1. Ouvrez Android Studio et créez une activité de navigation inférieure.


Android Studio. Créer une nouvelle fenêtre de projet

2. Nommez le projet et sélectionnez un langage de programmation.


Android Studio. Nom du projet

3. Accédez au dossier androidTest


Android Studio. Test instrumental.

Comme vous pouvez le voir, un seul test y est écrit, et ce n'est pas un test d'interface utilisateur, mais un test JUnit.

Maintenant, nous devons ajouter un test d'interface utilisateur simple. Pour ce faire, créez d'abord une règle pour ouvrir MainActivity .

Ajoutons une importation d'annotation de règle JUnit :

import org.junit.Rule; 

La prochaine chose à faire est d'ajouter la ligne de code ci-dessous pour compléter l'annotation RunWith :

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



Nous voyons maintenant que ActivityTestRule est surligné en rouge. Cela signifie que nous devons importer la fonction ActivityTestRule . Mais d'abord, nous devons ajouter une bibliothèque qui peut le faire. En bref, pour cette tâche, nous avons besoin de l'aide de Gradle - un système d'automatisation d'assemblage créé spécialement à cet effet.

Allons dans le fichier de configuration Gradle et ajoutons cette bibliothèque. Ouvrez un fichier appelé build.gradle (Module: app) et ajoutez la ligne ci-dessous:

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


Android Studio. Ajoutez une dépendance.

Après l'ajout, vous devez cliquer sur le bouton pour synchroniser le projet, puis revenir au fichier avec l'implémentation du test.

Maintenant que la bibliothèque a été ajoutée, l'étape suivante consiste à l'importer dans le fichier avec le test instrumental:

 import androidx.test.rule.ActivityTestRule; 


Android Studio. Importez ActivityTestRule.

Ok, maintenant nous sommes prêts à ajouter notre premier test. Entrez ce code dans ExampleInstrumentedTest :

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


Android Studio. Ajout d'un test et importation d'éléments supplémentaires

Pour notre test, nous devons importer des éléments supplémentaires avant qu'il ne commence à fonctionner. Cliquez sur le bouton OK et nous sommes en fait prêts à lancer notre test!

Exécution de tests d'espresso


Faites un clic droit sur notre test à gauche et sélectionnez «Exécuter l'exempleInstrumentedTest» .



Comme il s'agit d'un test d'interface utilisateur , et non d'un test unitaire , nous verrons alors une fenêtre avec un choix d'appareil sur lequel nous aimerions l'exécuter. J'ai déjà «Nexus 5X» comme appareil, il me suffit donc de le sélectionner.



Dans votre cas, si vous n'avez jamais déployé de projet Android, sélectionnez votre véritable appareil Android ou cliquez sur «Créer un nouvel appareil virtuel» et créez un nouvel appareil émulé pour exécuter les tests. Il peut s'agir de n'importe quel appareil de la liste sur lequel vous souhaitez exécuter des tests.

Cliquez sur OK et préparez-vous à voir la magie!


Android Studio. Résultats des tests

Comme vous pouvez le voir, nous avons réussi un ensemble de deux tests: le test unitaire, qui était déjà là après la création du projet, et notre test clickHomeButton , que nous venons d'écrire.


Android Studio. Le test terminé.

Comme son nom l'indique, nous n'avons cliqué que sur un bouton dans la barre de navigation inférieure, qui est appelé «navigation_home» dans la hiérarchie MainActivity .

Analysons ce que nous avons fait dans cette chaîne de méthodes:

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

  1. 1. Appelez onView . Cette méthode est une méthode de type ViewMatchers . Nous trouvons un objet dans notre Activité pour faire quelque chose.
  2. 2. Ensuite, nous appelons perform (cliquez sur ()) . Cette méthode est une méthode de type ViewActions . Nous indiquons l'action spécifique qui doit être effectuée dans ce cas - pour faire un clic (clic). Il existe de nombreuses autres méthodes d'action disponibles dans Espresso, par exemple:
  3. 3. La dernière chose que nous devons faire est de confirmer que l'action que nous avons effectuée correspond vraiment à nos critères, et pour cela nous exécutons la méthode check (isDisplayed ()) , qui est une méthode de type ViewAssertions . Dans ce cas, nous vérifions que cet objet (vue) était bien affiché à l'écran après que l'action de clic ait été effectuée.

Hiérarchie des vues Android


Cher lecteur, j'espère avoir pu vous expliquer comment écrire des tests d'interface utilisateur de base pour Android à l' aide d'Espresso.

Cependant, il n'est probablement pas si simple de comprendre ce qui s'est exactement passé ici si vous ne savez pas où se trouvent tous ces boutons et d'où ils viennent. Pour le savoir, nous devons aller dans le dossier "res" sur le côté gauche, ouvrir le dossier "menu" et sélectionner "bottom_nav_menu.xml" .
Voici ce que nous y verrons:


Android Studio. Hiérarchie de présentation du menu de navigation inférieur.
Comme vous pouvez le voir, c'est la ligne qui attribue un nom à l'élément de menu:

 android:id="@+id/navigation_home" 

C'est ce que nous utilisons dans notre code pour exécuter les tests. Il y a aussi des boutons de menu «navigation_dashboard» et «navigation_notifications» , disponibles en bas, alors continuons et utilisons-les dans nos tests.

Plus de tests Espresso


Nous devons revenir au fichier ExampleInstrumentedTest et ajouter quelques fonctions de test supplémentaires:

 @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())); } 

La seule chose que nous avons ajoutée était de vérifier plusieurs autres éléments de menu: "navigation_dashboard" et "navigation_notifications" .


Android Studio. Ajoutez deux tests supplémentaires.

Bien sûr, ces tests pourraient être simplifiés encore plus, mais afin de montrer comment tout cela fonctionne, supposons qu'ils conviennent parfaitement à nos besoins.

Continuons et exécutons à nouveau ces tests. Cliquez sur le bouton Exécuter .


Android Studio. Résultats des tests.

Les 4 tests ont réussi. Toutes les vues ont été trouvées, cliquées et confirmées dans la hiérarchie des vues.

Conclusion


Espresso est une solution puissante pour exécuter des tests d'interface utilisateur. Maintenant que vous savez comment ils sont créés, vous êtes prêt à écrire des tests beaucoup plus puissants et complexes.

Bon test!

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


All Articles