Une assurance de qualité efficace est favorisée lorsqu’on combine le développement agile, l’intégration continue et l’automatisation des tests.
Atteindre une qualité logicielle adéquate constitue un défi important dans tous les secteurs d’activités. Une étude d’IBM révèle que la piètre qualité des logiciels est devenue l’un des problèmes les plus onéreux de l’histoire humaine, sa valeur s’élevant à plus de 500 millions de dollars par année à l’échelle mondiale.
Le succès d’un projet de développement de logiciel est un équilibre entre ses trois éléments fondamentaux : échéancier, budget et qualité. Souvent, les organisations ont à choisir deux de ces trois éléments, devant composer avec le dilemme suivant : livrer un produit de qualité dans les délais prévus s’avèrerait trop onéreux, alors que livrer un produit de qualité dans les limites budgétaires équivaudrait à ne pas respecter l’échéance. La phase d’assurance de qualité étant normalement reléguée à la fin du projet, c’est ce secteur qui écope en cas de retard dans les travaux ou de hausse des coûts prévus.
En général, l’assurance de qualité est planifiée de façon optimiste : le temps qu’on y alloue est déterminé en fonction d’un scénario exempt de problèmes. Lorsqu’un bogue est découvert, cependant, les développeurs sont appelés à revoir leur travail et, en bout de piste, les tests de qualité pertinents doivent être refaits tant et aussi longtemps que l’erreur n’a pas été corrigée. Dans pareil cas, le scénario de départ n’est plus le même et, pour livrer un produit de qualité, il devient nécessaire de repousser l’échéance et les limites budgétaires du projet.
Selon une étude d’IBM, il en coûte 6,5 fois plus cher de rectifier une erreur découverte durant l’installation du logiciel plutôt qu’en cours de développement; 15 fois plus lorsqu’elle est découverte durant les tests; et 100 fois plus en phase de production. Dans cette optique, il est permis de croire que les méthodes traditionnelles de développement sont conçues de façon à rendre les projets plus onéreux puisque l’assurance de qualité est systématiquement effectuée à la fin.
Développement agile
Au contraire, l’approche de développement agile suggère une livraison en « qualité production » à chaque sprint. En d’autres mots, il est nécessaire chaque fois de contrôler la qualité aussi rigoureusement que si on allait en production. On doit donc prévoir un ensemble complet de tests tôt dans le processus et les réexécuter à chaque fin de sprint. Dans ce contexte, il apparaît naturel d’intégrer des ressources affectées à l’assurance de qualité dès le début du projet et jusqu’à la fin. Ainsi, chaque fonction est testée en profondeur dès qu’elle est programmée. Cet ajustement à l’organisation du travail permet de réaliser des économies substantielles.
Puisque de nombreuses études en démontrent clairement les avantages, il est difficile de saisir pourquoi les organisations continuent à bouder ce type d’approche, d’autant plus qu’elle n’exige généralement pas de changements organisationnels profonds.
Nécessaire automatisation
Une fois les changements nécessaires effectués, tout n’est pas réglé pour autant. Chaque fois que survient une livraison, on doit vérifier les nouvelles exigences, mettre en œuvre les nouvelles fonctions et s’assurer que ce qui a été créé et testé antérieurement fonctionne toujours correctement. Pour obtenir un produit de qualité, l’équipe de projet n’a d’autre choix que de recommencer les tests antérieurs – c’est ce que l’on appelle les tests de non-régression.
Cette obligation constitue un plaidoyer convaincant en faveur de l’automatisation des tests. Pour que les coûts de test soient linéaires et non exponentiels, l’automatisation demeure la seule avenue possible. Dès qu’un projet comporte de 3 à 4,2 itérations testées manuellement, on estime qu’il est plus rentable d’investir dans l’automatisation. Or, la grande majorité des projets comportent plus de 4 itérations.
La correction des défauts impose une charge considérable aux équipes de développement et aux entreprises. En fait, les organisations cherchent à créer une valeur d’affaires, et non pas à corriger des bogues. Une réponse en deux volets s’offre aux entreprises qui souhaitent augmenter la qualité des livraisons et réduire les coûts afin de dégager cette précieuse marge de manœuvre. Il s’agit d’une recette claire et simple, mais peu appliquée : engager la participation des spécialistes en assurance de qualité dès le début du projet et automatiser les tests.
Pour relever efficacement le défi posé par l’atteinte de la qualité logicielle, les entreprises ont tout intérêt à mettre cette formule en pratique.