Automatiser les tests de l'interface utilisateur

Tester les interactions des utilisateurs permet d'éviter les résultats inattendus et de garantir une expérience utilisateur satisfaisante. Vous devez vous habituer à créer des tests d'interface utilisateur (UI) si vous devez vérifier que l'UI de votre application fonctionne correctement.

Une approche des tests d'interface utilisateur consiste à demander à un testeur humain d'effectuer un ensemble d'opérations utilisateur sur l'application cible et de vérifier qu'elle se comporte correctement. Cependant, cette approche manuelle peut être chronophage et sujette aux erreurs. Une approche plus efficace consiste à écrire vos tests d'interface utilisateur de sorte que les actions des utilisateurs soient effectuées de manière automatisée. L'approche automatisée vous permet d'exécuter vos tests rapidement et de manière fiable et reproductible.

Les tests d'interface utilisateur lancent une application (ou une partie de celle-ci), puis simulent les interactions des utilisateurs, et vérifient enfin que l'application a réagi de manière appropriée. Il s'agit de tests d'intégration qui peuvent aller de la vérification du comportement d'un petit composant à un grand test de navigation qui traverse l'ensemble d'un parcours utilisateur. Ils sont utiles pour détecter les régressions et vérifier la compatibilité avec différents niveaux d'API et appareils physiques.

Exécuter des tests d'interface utilisateur

  • Pour exécuter des tests d'interface utilisateur instrumentés à l'aide d'Android Studio, vous devez implémenter votre code de test dans un dossier de test Android distinct : src/androidTest/java. Le plug-in Android Gradle compile une application de test basée sur votre code de test, puis charge l'application de test sur le même appareil que l'application cible. Dans votre code de test, vous pouvez utiliser des frameworks de test d'interface utilisateur pour simuler les interactions utilisateur sur l'application cible, afin d'effectuer des tâches de test couvrant des scénarios d'utilisation spécifiques.
  • Vous pouvez également utiliser Robolectric pour exécuter des tests d'interface utilisateur sur la JVM.

Architecture et configuration des tests

L'architecture de votre application doit permettre aux tests de remplacer certaines de ses parties pour tester les doublons. Vous devez également utiliser des bibliothèques qui fournissent des utilitaires pour faciliter les tests. Par exemple, vous pouvez remplacer un module de dépôt de données par une version en mémoire qui fournit des données factices et déterministes au test.

Schémas d'architecture de production et de test Le diagramme de production montre comment des sources de données locales et distantes fournissent des données au dépôt, qui les fournit ensuite de manière asynchrone à l'UI. Le diagramme de test montre un dépôt fictif qui fournit ses données de manière synchrone à l'UI.
Figure 3: Test d'une UI en remplaçant ses dépendances par des faux.

L'approche recommandée pour remplacer les dépendances est l'injection de dépendances. Vous pouvez créer votre propre système manuellement, mais nous vous recommandons d'utiliser un framework d'injection de dépendances tel que Hilt.

Pourquoi tester automatiquement les UI ?

Une application Android peut cibler des milliers d'appareils différents sur de nombreux niveaux d'API et facteurs de forme. Le niveau de personnalisation élevé de l'OS pour l'utilisateur signifie que votre application peut être affichée de manière incorrecte ou même planter sur certains appareils.

Les tests d'interface utilisateur vous permettent d'effectuer des tests de compatibilité, en vérifiant le comportement d'une application dans différents contextes. Vous pouvez exécuter vos tests d'interface utilisateur sur des appareils qui présentent les différences suivantes:

  • Niveau d'API: 21, 25 et 30.
  • Langue: anglais, arabe et chinois
  • Orientation: portrait, paysage.

De plus, les applications doivent vérifier le comportement au-delà des téléphones. Vous devez effectuer des tests sur des tablettes, des appareils pliables et d'autres appareils. En savoir plus sur le test de différentes tailles d'écran

Types de tests d'interface utilisateur

Cette section décrit deux types de tests d'interface utilisateur:

  • Les tests de comportement analysent la hiérarchie de l'UI pour émettre des assertions sur les propriétés des éléments de l'UI.
  • Les tests de capture d'écran prennent des captures d'écran d'une UI et les comparent à des images précédemment approuvées.