Tester l'interface utilisateur avec Espresso Test Recorder

L'outil Espresso Test Recorder vous permet de créer des tests d'interface utilisateur pour votre application sans écrire de code de test. En enregistrant un scénario de test, vous pouvez enregistrer vos interactions avec un appareil et ajouter des assertions pour vérifier les éléments de l'interface utilisateur dans des instantanés spécifiques de votre application. Espresso Test Recorder utilise ensuite l'enregistrement sauvegardé pour générer automatiquement un test d'interface utilisateur que vous pouvez exécuter pour tester votre application.

Espresso Test Recorder écrit des tests basés sur le framework d'Espresso Testing, une API d'AndroidX Test. L'API Espresso vous encourage à créer des tests d'interface utilisateur concis et fiables basés sur les actions des utilisateurs. En indiquant les attentes, les interactions et les assertions sans accéder directement aux activités et aux vues de l'application sous-jacente, cette structure évite les erreurs de test et optimise la vitesse d'exécution des tests.

Désactiver les animations sur l'appareil à tester

Avant d'utiliser Espresso Test Recorder, veillez à désactiver les animations sur l'appareil à tester pour éviter des résultats inattendus. Suivez les instructions de configuration d'Espresso, mais notez que vous n'avez pas besoin de définir manuellement une référence de dépendance à la bibliothèque Espresso, car Test Recorder le fait automatiquement lorsque vous sauvegardez un enregistrement. Cette procédure ne doit être effectuée qu'une seule fois pour un projet donné.

Enregistrer un test Espresso

Les tests Espresso sont constitués de deux composants principaux : les interactions avec l'interface utilisateur et les assertions avec les éléments Vue. Les interactions avec l'interface utilisateur incluent les gestes et les saisies effectués pour interagir avec votre application. Les assertions permettent de vérifier l'existence ou le contenu d'éléments visuels à l'écran. Par exemple, un test Espresso pour l'application de test Notes peut inclure des interactions d'IU pour cliquer sur des boutons et créer une nouvelle note, mais il utilisera des assertions pour vérifier l'existence des boutons et le contenu des notes.

Cette section explique comment créer ces deux composants de test à l'aide d'Espresso Test Recorder et comment sauvegarder votre enregistrement final pour générer le test.

Enregistrer des interactions avec l'interface utilisateur

Pour enregistrer un test avec Espresso Test Recorder, procédez comme suit :

  1. Cliquez sur Run > Record Espresso Test (Exécuter > Enregistrer un test Espresso).
  2. Dans la fenêtre Select Deployment Target (Sélectionner une cible de déploiement), choisissez l'appareil sur lequel vous souhaitez enregistrer le test. Si nécessaire, créez un nouvel appareil virtuel Android. Cliquez sur OK.
  3. Espresso Test Recorder déclenche un build de votre projet. L'application doit être installée et lancée avant qu'Espresso Test Recorder vous laisse interagir avec celui-ci. La fenêtre Record Your Test (Enregistrer votre test) s'affiche après le lancement de l'application. Comme vous n'avez pas encore interagi avec l'appareil, le panneau principal indique "No events recorded yet" (Aucun événement enregistré pour le moment). Interagissez avec votre appareil pour commencer l'enregistrement des événements (appui sur une touche, saisie de texte, etc.).

Remarque : Avant que vous ne puissiez commencer à consigner les interactions, une boîte de dialogue peut s'afficher sur votre appareil et indiquer "Waiting for Debugger" (En attente du débogueur) ou "Attaching Debugger" (Connexion au débogueur). Espresso Test Recorder utilise le débogueur pour consigner les événements de l'interface utilisateur. Lorsque le débogueur est connecté, la boîte de dialogue se ferme automatiquement. Ne cliquez pas sur Force Close (Forcer la fermeture).

Les interactions enregistrées apparaîtront dans le panneau principal de la fenêtre Record Your Test (Enregistrer votre test), comme l'illustre l'image 1 ci-dessous. Lorsque vous exécutez le test, le test Espresso tente d'effectuer ces actions dans le même ordre.

Figure 1 : Fenêtre Record Your Test (Enregistrer votre test) avec les interactions consignées dans l'interface utilisateur.

Ajouter des assertions pour vérifier des éléments de l'interface utilisateur

Les assertions vérifient l'existence ou le contenu d'un élément View (Vue) via trois types principaux :

  • le texte est : vérifie le contenu textuel de l'élément "View" (Vue) sélectionné.
  • existe : vérifie que l'élément "View" (Vue) se trouve dans la hiérarchie des vues actuelle, visible à l'écran.
  • n'existe pas : vérifie que l'élément "View" (Vue) ne se trouve pas dans la hiérarchie des vues actuelle.

Pour ajouter une assertion à votre test, procédez comme suit :

  1. Cliquez sur Add Assertion (Ajouter une assertion). Une boîte de dialogue Screen Capture (Capture d'écran) s'affiche. Espresso obtient la hiérarchie de l'interface utilisateur et d'autres informations sur l'état actuel de l'application. La boîte de dialogue se ferme automatiquement une fois la capture d'écran effectuée par Espresso.
  2. La mise en page de l'écran actuel apparaît dans un panneau à droite de la fenêtre Record Your Test (Enregistrer votre test). Pour sélectionner un élément "View" (Vue) sur lequel créer une assertion, cliquez sur l'élément dans la capture d'écran ou utilisez le premier menu déroulant de la case Edit assertion (Modifier l'assertion) au bas de la fenêtre. L'objet "View" (Vue) sélectionné est encadré en rouge.
  3. Sélectionnez l'assertion à utiliser pour le deuxième menu déroulant de la case Edit assertion (Modifier l'assertion). Espresso remplit le menu avec des assertions valides pour l'élément "View" (Vue) sélectionné.
    • Si vous sélectionnez l'assertion "text is" (le texte est), Espresso insère automatiquement le texte qui se trouve actuellement dans l'élément "View" (Vue) sélectionné. Vous pouvez modifier le texte pour qu'il corresponde à l'assertion souhaitée à l'aide du champ de texte de la case Edit assertion (Modifier l'assertion).
  4. Cliquez sur Save and Add Another (Enregistrer et ajouter une autre) pour créer une autre assertion ou sur Save Assertion (Enregistrer l'assertion) pour fermer les panneaux d'assertion.

La capture d'écran de l'image 2 montre la création d'une assertion de type "le texte est" pour vérifier que le titre de la note est "Happy Testing!" :

Figure 2. Case Edit assertion après qu'un élément "View" est sélectionné (en rouge).

Lorsque vous créez une assertion, vous pouvez continuer à interagir avec votre application, même si les panneaux d'assertion sont toujours ouverts dans la fenêtre Record Your Test (Enregistrer votre test). Espresso Test Recorder continue à consigner vos actions, mais une fois l'enregistrement effectué, l'assertion que vous modifiez apparaîtra avant ces interactions. La capture d'écran de l'assertion conserve également la mise en page de l'appareil ou de l'émulateur lorsque vous avez appuyé sur le bouton Add Assertion (Ajouter une assertion).

Sauvegarder un enregistrement

Une fois que vous avez fini d'interagir avec votre application et d'ajouter des assertions, procédez comme suit pour sauvegarder votre enregistrement et générer le test Espresso :

  1. Cliquez sur Complete Recording (Terminer l'enregistrement). La fenêtre Pick a test class name for your test (Sélectionner un nom de classe de test pour votre test) s'affiche.
  2. Espresso Test Recorder attribue à votre test un nom unique dans son package qui correspond au nom de l'activité lancée. Utilisez le champ de texte Test class name (Nom de la classe de test) si vous souhaitez modifier le nom proposé. Cliquez sur Save (Enregistrer).
    • Si vous n'avez pas ajouté les dépendances Espresso à votre application, une boîte de dialogue Missing Espresso dependencies (Dépendances Espresso manquantes) s'affiche lorsque vous essayez d'enregistrer votre test. Cliquez sur Yes (Oui) pour ajouter automatiquement les dépendances à votre fichier build.gradle.
  3. Le fichier s'ouvre automatiquement une fois qu'Espresso Test Recorder l'a généré, et Android Studio affiche la classe de test sélectionnée dans la fenêtre Project (Projet) de l'IDE.
    • L'emplacement du test dépend de l'emplacement de la racine de votre test d'instrumentation, ainsi que du nom du package de l'activité lancée. Par exemple, les tests pour l'application de test Notes s'enregistrent dans le dossier src > androidTest > Java  > com.example.username.appname du module d'application dans lequel vous avez enregistré le test.

Exécuter un test Espresso en local

Pour exécuter un test Espresso, utilisez la fenêtre Project (Projet) sur la partie gauche de l'IDE Android Studio :

  1. Ouvrez le dossier du module d'application souhaité, puis accédez au test que vous souhaitez exécuter. L'emplacement du test dépend de l'emplacement de la racine de votre test d'instrumentation et du nom du package de l'activité lancée. Les exemples suivants illustrent l'emplacement où serait enregistré un test pour l'application de test Notes :
    • Si vous utilisez la vue Android dans la fenêtre, accédez à java > com.example.username.appname (androidTest).
    • Si vous utilisez la vue Projet dans la fenêtre, accédez à src > androidTest > Java > com.example.username.appname dans le dossier du module.
  2. Effectuez un clic droit sur le test, puis cliquez sur Run ‘testName’ (Exécuter "testName").
    • Vous pouvez également ouvrir le fichier de test et effectuer un clic droit sur la classe ou la méthode de test générée. Pour en savoir plus sur la manière dont les tests s'exécutent, consultez la page Tester votre application.
  3. Dans la fenêtre Select Deployment Target (Sélectionner une cible de déploiement), choisissez l'appareil sur lequel vous souhaitez exécuter le test. Si nécessaire, créez un nouvel appareil virtuel Android. Cliquez sur OK.

Surveillez la progression de votre test dans la fenêtre Run (Exécuter) au bas de l'IDE. Android Studio exécute un build complet de votre projet et ouvre un onglet portant le nom de votre test dans la fenêtre Run (Exécuter), comme l'illustre l'image 3. Vous pouvez vérifier si votre test a réussi ou échoué dans cet onglet, ainsi que le temps qu'il a duré. Une fois le test terminé, l'onglet indique "Tests ran to completion" (Tests terminés).

Image 3. Exemple de résultat dans la fenêtre Run (Exécuter) après avoir exécuté un test Espresso en local.

Pour découvrir comment écrire des configurations d'exécution de test, consultez la section "Définir une configuration de test pour une classe ou une méthode" dans Créer et modifier des configurations d'exécution/de débogage.

Exécuter un test Espresso avec Firebase Test Lab pour Android

Vous pouvez utiliser les tests générés par Espresso Test Recorder avec Firebase Test Lab pour tester votre application dans le cloud sur des centaines de configurations d'appareil. Vous ne payez aucuns frais pour tester votre application avec Test Lab dans la limite du quota quotidien inclus avec le forfait Spark. Pour exécuter des tests Espresso avec Firebase Test Lab, commencez par créer un projet Firebase pour votre application, puis suivez les instructions pour exécuter vos tests avec Firebase Test Lab à partir d'Android Studio.

Figure 4. Exemple de résultat dans la fenêtre Run (Exécuter) après avoir exécuté un test avec Firebase Test Lab sur plusieurs appareils.