Travaillant dans le contexte de projets de développment depuis 35 ans, j'ai croisé plusieurs "générations" de développeurs et de managers. Leurs positions à propos des tests varie d'une génération à l'autre, avec quelques constantes :
🏝 le test est une activité mal connue, mal comprise, peu pratiquée, et très peu maîtrisée
🔧 on croit que l'essentiel de l'activité de test consiste à exécuter des tests
⛏ pour beaucoup, test = test manuel, un labeur réalisé par d'autres personnes moins qualifiées que les développeurs, qui eux, créent de la valeur
🤖 on place ainsi de l'espoir (et du budget) dans des outils permettant soi disant "d'automatiser les tests" mais qui n'automatisent que l'exécution des tests
🦾 cette confusion, pour des gens qui passent leur carrière à automatiser des traitements, fait sens
🦄 chaque génération arrive avec des raisons nouvelles de ne pas investir dans le test : progrès des langages, internet c'est différent, bientôt l'IA etc.
En lisant l'introduction de Software Testing Technique de Boris Beizer, publié il y a 40 ans, j'ai glané quelques idées intéressantes en regard de ces préjugés.
📖 Extrait 1 (sur le thème : à quoi servent les tests ?)
Le test et la conception des tests, comme composante de l'assurance qualité, devraient également traiter de la prévention des bugs. Pour autant que le test et la conception des tests ne prémunissent pas contre les bugs, ils devraient découvrir les symptômes causés par les bugs. Enfin, les tests deraient fournir des diagnostics clairs permettant de corriger facilement les bugs. La prévention des bugs est le but primordial du test. Un bug empêché est plus désirable qu'un bug détecté et corrigé, parce qu'alors il n'y a pas de code a corriger, ni de test à rejouer pour confirmer que la correction était valide, personne n'est embarrassé, il n'y a pas de consommation de ressources, et les bugs empêchés ne peuvent pas impacter négativement le calendrier. Plus que l'acte de tester, l'acte de concevoir les tests est un des meilleurs moyens connus de prévenir les bugs. La réflexion et l'analyse qui entrent dans la création d'un test utile peuvent identifier et éliminer les bugs avant qu'ils soient codés. En fait, la conception des tests permet de découvrir et d'éliminer les bugs à toutes les phases de la création d'un logiciel, depuis la conception, en passant par la spécification, la conception détaillée, le code, et le reste. À ce stade une activité idéale de conception des tests serait tellement fructueuse qu'il ne serait même pas nécessaire de lancer les tests, parce que tous les bugs auraient été trouvés et résolus pendant la conception des tests.
Malheureusement, cet idéal ne peut être atteint. En dépit de nos efforts, parce que nous sommes humains, il y aura des bugs. Pour autant que le test échoue dans son but primaire de prévenir les bugs, il doit atteindre son but secondaire qui est d'identifier clairement qu'il y a un bug.
Publié sur Linked In le 30/09/2023