BLOG COVER: Doit-on automatiser ses tests exploratoires?

Doit on automatiser ses tests exploratoires ?

par Christophe Cressend | 4 novembre 2020

Les tests exploratoires sont par définition des tests toujours différents, qui sont conçus et exécutés de manière simultanée. Si on s’en tient à cette définition, leur automatisation peut sembler contre nature. Et pourtant, il y a un cas de figure pour lequel nous préconisons leur automatisation: celui du bug métier. 

Les tests exploratoires: des tests logiciels “métier” de haut niveau

Le principe du test exploratoire est simple mais requiert d’être au calme et d’avoir du temps devant soi : un utilisateur qui est généralement un expert métier du domaine implémenté par le logiciel décide d’explorer une partie du logiciel en réalisant un scénario métier complet qu’il juge pertinent.

Dans la typologie des tests logiciels, les tests exploratoires sont souvent associés aux tests fonctionnels car ils constituent une famille de tests logiciels qualifiés de « métier » de haut niveau: leur objectif est de vérifier la capacité qu’a un logiciel de réaliser les procédures complètes pour lesquelles il a été prévu. Ces procédures peuvent faire intervenir plusieurs entités organisationnelles de l’entreprise, plusieurs systèmes d’informations et des procédures variées, d’où l’intérêt de tester des scénarios sur lesquels les tests de validation ne se sont pas forcément penchés. 

En terme d’organisation, avoir une politique de tests exploratoires est très bénéfique :  l’équipe de validation est une mine d’informations et de connaissances, et la faire travailler sur des scénarios de haut niveau leur permet de traiter un cas client propice aux nouvelles idées : évolution des fonctions, de l’IHM.

L’automatisation des tests métiers de haut niveau

Il faut reconnaître que dans certains cas, l’automatisation de tests métiers de haut niveau est assez complexe : la combinatoire des différentes fonctions implémentées peut générer des multitudes de cas, tous complémentaires, et ayant tous la possibilité d’être reproduits par un utilisateur final.

Par ailleurs, la multiplication des environnements d’exécutions pourrait imposer d’être en mesure de reproduire ces scénarios sur des plateformes toutes différentes, mais implémentant les mêmes fonctions.

Pour pallier à ces deux difficultés, nous avons basé notre solution Agilitest sur deux fondations très importantes : la capacité de réaliser de tests mutli-canaux et la possibilité de variabiliser les tests, notamment par l’utilisation de fichiers CSV.

Ces deux capacités permettent à elles seules de répondre à cette problématique, en permettant de rejouer le même test sur plusieurs environnements ou en gérant la complexité combinatoire des tests par l’intermédiaire de fichiers de données.

Les tests exploratoires: le moyen de découvrir les bugs métier

Les tests exploratoires sont malheureusement bien souvent les parents pauvres des tests logiciels car les équipes n’ont souvent pas trop de temps à y consacrer, et ils sont pourtant très importants et très complémentaires aux tests fonctionnels.

Dans certains cas, ils conduisent même à la découverte de bugs fonctionnels : problèmes d’affichages, problèmes liés aux données, fonctions bloquées, etc.. et dans d’autres cas, il est aussi possible de réussir à réaliser un scénario métier impossible dans la réalité, ou l’inverse, ne pas réussir à reproduire un scénario qui devrait être possible.

Dans ce cas, nous sommes en présence d’un bug « métier ».

Que faire face à un bug métier?

Face à un bug métier, deux possibilités :

  1. Le logiciel n’est pas conforme à ce qui a été spécifié, nous avons un bug qui se reproduit dans des conditions particulières qui ne sont pas celles qui sont testées dans nos plans, qu’ils soient manuels ou automatisés.
  2. Le logiciel est conforme à ce qui a été spécifié, mais correspond à une combinatoire qui n’a pas été définie : il est toujours très difficile de spécifier toutes les combinatoires… et nous sommes tombés dans une zone grise. Mais les testeurs connaissant bien le métier sous-jacent savent définir le comportement attendu de l’application qui n’est pas celui qu’ils viennent de constater. Cela pose la question de faire travailler les équipes de tests très en amont du développement, directement avec les architectes fonctionnels, product owers, etc, pour éviter que cette situation se reproduise, et c’est généralement une bonne pratique car elle peut éviter des développements non désirés.

Dans les deux cas,  la correction du bug alliée à la production d’un nouveau cas de test vous permettra d’enrichir vos plans, de clarifier le fonctionnement attendu de l’application, et de conforter l’équipe de validation dans la capacité de l’outil testé à réaliser un scénario plus complexe.

Et l’automatisation dans tout ça?

Chez Agilitest, ce que nous préconisons, c’est la correction du « bug métier » par l’adjonction de contrôles lors de la réalisation des différentes fonctions.

Nous proposons aussi de réaliser un test automatisé qui reproduit le « bug métier » et contrôle que celui-ci ne se reproduira pas. Nous sommes ici dans le cœur de métier de ce que sait faire Agilitest et vous pourrez gérer la complexité et la combinatoire en utilisant des sous-scripts réalisant des fonctions de haut-niveau et des fichiers de données pour variabiliser complètement les scénarios rejoués.

D’une manière générale, il est important de toujours couvrir les corrections de bugs par des tests automatisés de non régression liés aux bugs, assurant que ceux-ci ne pourront se reproduire : il est très pénible pour un client ayant déclaré un bug dans une version N de voir celui-ci corrigé dans la version N+1 puis réapparaître dans la version N+2.


En conclusion, lors d’un test exploratoire conduit à la découverte d’un bug métier, il est utile d’automatiser le scénario afin de l’ajouter à sa batterie de tests fonctionnels. Et si l’automatisation d’un test exploratoire peut sembler trop complexe du fait de la combinatoire, c’est sans compter sur Agilitest qui a justement été conçu pour gérer cette complexité.


Crédit photo: Photo by Agence Olloweb on Unsplash