Résumé

Des tests logiciels efficaces peuvent permettre d'économiser de l'argent et des efforts en attrapant les problèmes avant qu'ils n'arrivent très loin dans le processus de développement du logiciel. Il est connu que plus longtemps un défaut reste non détecté, plus il est coûteux à réparer. Les tests constituent donc une partie essentielle du processus de développement. Ils peuvent également être coûteux et exiger beaucoup de travail, en particulier lorsqu'ils sont effectués à la main. On estime que l'effort total de test d'un logiciel consomme au moins la moitié de la main-d'œuvre globale d'un projet. L'automatisation peut rendre la plupart des tests effectués par une organisation plus précis et moins coûteux que si l'on se contentait de mettre plusieurs personnes dans une pièce et de leur faire exécuter des tests à partir d'un script papier. Elle permet également au personnel chargé des tests d'effectuer des tests plus spécifiques et plus approfondis que ce qui serait possible autrement. Cet article se concentre principalement sur les techniques d'automatisation des tests logiciels et sur la manière dont l'automatisation peut améliorer l'efficacité d'une équipe logicielle ainsi que la qualité du produit final.

Conclusions

Bien que l'automatisation de certains types de tests logiciels puisse augmenter considérablement la productivité et l'efficacité des projets de développement logiciel, il est rare que 100% des exigences puissent être couvertes par des tests automatisés. Certains tests sont encore mieux réalisés à la main car les testeurs humains sont bien plus flexibles et créatifs que n'importe quel programme informatique. L'automatisation permet aux testeurs humains d'approfondir le système en les dispensant d'effectuer des tâches répétitives pour lesquelles l'utilisation de l'automatisation est plus appropriée.

Avec un peu de coopération entre les développeurs et les testeurs, le code logiciel peut être rendu plus testable. Le codage pour la testabilité est une considération clé pour les programmeurs travaillant dans un environnement de développement Agile. Par exemple, dans mon exercice pratique avec le programme Recipe Box, j'ai démontré comment les composants de l'interface graphique qui sont déclarés comme étant des membres de classe privés peuvent quand même être testés avec un script de test maison sans violer les principes clés de la programmation orientée objet ou recourir à des solutions de rechange douteuses.

Le test automatisé de logiciels est un projet de développement de logiciels à part entière, et devrait être traité comme tel, afin d'inclure tous les processus habituels de développement de logiciels, tels que le contrôle de version, les revues de code, les normes de codage, et ainsi de suite. Des suggestions ont également été faites dans ce document sur la façon dont les coûts associés aux efforts d'automatisation peuvent être minimisés.

Il existe de nombreux outils préemballés pour aider les testeurs à créer des scripts de test. Certains d'entre eux, proposés par des vendeurs commerciaux, peuvent être coûteux, tandis que d'autres outils sont à code source ouvert et donc gratuits. En fait, la communauté des logiciels libres est à peu près aussi capable que les vendeurs commerciaux de produire des outils de test de logiciels de haute qualité.

L'intégralité de la thèse de maîtrise peut être consultée ici (PDF en anglais).

Thèse de maîtrise : Améliorer l'efficacité de l'automatisation des tests logiciels, décembre 2015 - David Wayne Jansing, Department of Computer and Information Sciences, State University of New York Polytechnic Institute, Utica, New York, Etats-Unis.