L’un des principaux enjeux de l’automatisation des tests est la maintenance des différents scenarios. Dans un article, l’éditeur Ranorex fait le point sur les bonnes pratiques pour créer des tests aisés à maintenir et à optimiser.

Concevoir des tests facilement maintenables se joue à plusieurs niveaux : cela commence dès la phase de design et se poursuit au moment de l’écriture des cas de tests. Même en phase d’exécution, certaines pratiques permettent d’optimiser la gestion des tests afin de faciliter la maintenance.

Bonnes pratiques lors de la conception des tests

  • Décider de ce qu’on va tester avant de décider comment on va le tester
Avant de déterminer quels tests doivent être effectués manuellement et lesquels doivent être automatisés, il faut d’abord identifier l’ensemble des fonctionnalités à tester, puis pour chacune d’entre elle établir des séquences à tester avec une description claire des résultats attendus.
  • Documenter les cas de tests
Cette étape de documentation permet de vérifier que tous les éléments nécessaires sont bien fournis pour chaque test : préconditions, séquence de test, description du comportement attendu.
  • Rester simple
Dans l’idéal, chaque test doit se limiter à une seule fonctionnalité et ne doit échouer que dans un cas. Plus un test est complexe, plus il est susceptible de comporter des failles et défauts qui devront ensuite être corrigés.
  • Utiliser des standards de nommage
Les noms des composants d’interface et des objets de tests doivent être suffisamment explicites. Si des commentaires sont nécessaires, c’est un signe que le test est peut-être trop complexe.

Bonnes pratiques lors de l’écriture des tests

  • Utiliser une structure modulaire
Un cas de test doit pouvoir être exécuté séparément des autres. Il faut veiller à limiter au maximum les dépendances entre différents cas de tests. Si c’est néanmoins nécessaire, le framework de tests doit permettre de s’assurer que les cas de tests sont toujours exécutés dans le bon ordre.
  • Créer des tests faiblement couplés aux interfaces graphiques
Pour éviter qu’un changement sur l’interface oblige à réécrire un test, il faut coder ce dernier de manière à le rendre le plus indépendant possible de l’UI. Mieux vaut utiliser des identifiants uniques pour chaque composant de l’interface graphique plutôt que des coordonnées ou des éléments HTML codés en dur.
  • Grouper les tests par domaine fonctionnel
Cela facilite la mise à jour des tests si un changement intervient sur ce domaine.
  • Éviter les copier-coller de code
Mieux vaut créer des modules réutilisables que de recopier le même code dans plusieurs cas de tests. Si un changement intervient sur une séquence récurrente, il suffira de modifier le module associé plutôt que de revoir tous les cas de tests.
  • Séparer les étapes de test des données
De manière générale, dans les tests comme dans le développement il faut éviter de coder les données en dur. L’usage de variables et de paramètres rend la maintenance bien plus aisée.
  • Utiliser des outils de versioning
Ces outils facilitent la collaboration et permettent de revenir à une version antérieure du code en cas de problème. Ranorex conseille d’utiliser les mêmes outils pour gérer le code d’une application et les cas de tests associés.

Bonnes pratiques lors de l’exécution des tests

  • Vérifier que l’environnement de tests est stable
Des serveurs ou des connexions qui ne sont pas fiables peuvent faire échouer des tests parfaitement stables par ailleurs.
  • Utiliser des processus de lancement et de clôture
Un processus de lancement (setup) permet de s’assurer que l’environnement remplit bien toutes les conditions requises pour le bon déroulement des tests (application lancée, utilisateur connecté…) Un processus de clôture remet quant à lui l’environnement dans son état initial, notamment en nettoyant les données de test.
  • S’arrêter vite en cas de gros dysfonctionnement
En cas de problème sérieux (absence de réponse de l’application par exemple), il est inutile de poursuivre le test. Mieux vaut remonter le problème immédiatement plutôt que d’attendre.
  • N’arrêter le test que si c’est nécessaire
Interrompre un test à la moindre erreur isolée fait perdre du temps. Parfois, il faut mieux dérouler l’ensemble des cas de test, afin de vérifier si ceux-ci se passent bien malgré tout.
  • Séparer les tests qui visent à élucider un défaut des autres

Il est préférable d’exécuter les tests qui concernent des défauts non résolus ou les tests moins robustes séparément du reste. Ainsi, si les tests principaux ont des résultats anormaux, il sera plus facile de s’en assurer.

Source : Ranorex

AUCUN COMMENTAIRE