
On parle de tests automatisés mais ce terme prête à confusion. Ce que l’on automatise, ce sont des vérifications : des contrôles qui sont faits d’une manière algorithmique.
Le test, quant à lui, consiste en l’évaluation d’un produit par l’exploration et l’expérimentation. C’est une investigation qui peut impliquer, entre autres, l’analyse de risques, la créativité, le questionnement, l’esprit critique, l’adaptation, l’empathie, l’intuition ou encore la modélisation. Il nous permet de mieux connaître le produit et de capter de l’information pour aider à prendre des décisions quant aux améliorations à faire et ainsi amener le produit dans la bonne direction. Le testeur se construit un modèle mental du logiciel et il va confronter ce modèle au réel pour le réfuter et l’enrichir. Ce modèle mental va aussi permettre au testeur d’améliorer son intuition lorsqu’il teste puisqu’il sera en mesure de mieux reconnaître les patterns à l’œuvre.
Un test automatisé est un script qui va suivre un scénario précis avec un jeu de données connu. Ce script ne nous apprend rien de nouveau mais il permet de protéger la valeur produite. Son objectif est de vérifier qu’un comportement attendu est toujours présent dans l’application d’une version à une autre. Pour construire ces contrôles le testeur se base sur une fraction du modèle mental qu’il a du produit à un instant T. Un script ne nous dit pas si on fait le bon logiciel mais permet de faire du fact-checking. Il faut prendre garde à ce que les outils ne nous détournent pas du travail d’enquête qu’est le test car empiler des scripts qui contrôlent des comportements plus ou moins à coté de la plaque est contre productif.
Les tests automatisés sont d’une aide précieuse pour maintenir dans le temps la stabilité du produit. Ils aident à protéger la valeur produite. Cependant, à eux seuls, ils ne sont pas suffisants pour concevoir un produit fiable et pertinent pour ses utilisateurs.
Il n’est pas question d’opposer l’automatisation et le test : l’automatisation est nécessaire et vient en support des activités de test. A mon sens, associer le test exploratoire aux tests automatisés est un combo gagnant.