Des tests sinon rien !

Les tests sont autant de petites expériences que l'on fait subir à notre programme, de questions qu'on lui pose, de traces de nos essais passés que l'on peut rejouer à la demande. Ce sont des programmes qui vérifient d'autres programmes, qui les utilisent d'une certaine manière et qui nous informent lorsqu'ils n'y arrivent pas. Les tests nous rendent plus robuste mais aussi plus souple. Ce qui est testé ne changera pas, et ce qui ne l'est pas le pourra.

Si les tests sont là pour vérifier notre programme, qui vérifie nos tests ? Et bien, c'est compliqué. Tout ce que l'on sait, c'est si un test passe ou bien échoue. On ne peut jamais être sûr de ce qu'il vérifie. Autrement dit, nous connaissons la réponse sans connaître réellement la question.

Est-ce grave ? Pas vraiment, car l'intérêt principal des tests réside dans leur capacité à détecter des changements de comportement, et non à prouver qu'un certain comportement n'a pas de problème. En nous indiquant qu'une réponse à l'une de nos questions a changé, ces détecteurs nous invitent à nous questionner sur la nature de ce changement, et en cela, nous donnent la possibilité de le contrôler. Ce faisant, ils nous permettent de garder de la vie et du mouvement dans un programme. De le faire évoluer sans crainte, sur des bases solides. De passer à l'échelle et d'entreprendre des projets plus ambitieux sans qu'ils ne s'effondrent sous leurs propres poids.

Écrire des tests est une activité qui devient très vite rentable, et même très vite indispensable.

Non seulement, on peut voir les tests comme une armée de faux utilisateurs dont le seul but est d'utiliser notre programme sans relâche, de répéter les même gestes encore et encore, tout cela pour nous avertir, un beau jour, en levant un petit drapeau rouge, qu'ils n'ont pas réussi à utiliser le programme comme ils le souhaitaient, que quelque chose avait changé et que l'on ferait mieux d'aller y jeter un coup d'oeil.

Mais on peut aussi, à bien y réfléchir, les voir comme l'incarnation même de la spécification et du cahier des charges de notre programme. Vivante, se vérifiant toute seule et sans équivoque ! Plus qu'un ensemble de récits utilisateur, c'est un véritable foisonnement de parcours utilisateur dont nous avons réellement besoins.

« Test is all you need ».