Effervescence du logiciel - mise en contexte :
Dans de nombreux domaines, le test est une activité courante. Que ce soit pour des produits matériel tel que de petits appareils ménagers (les robots de cuisine et les cafetières) ou pour des systèmes plus complexes (comme les avions, les fusées et les centrales nucléaires), tous passent par des essais à différents stades de leur développement, avant d'être mis sur le marché. Les applications logicielles, omniprésentes dans notre quotidien, suivent également cette règle. L'essor des objets connectés et l'intégration croissante des logiciels dans ces systèmes font que les tests sont désormais plus importants que jamais.
Pour tous projets informatiques tels que le développement d'un nouveau produit ou l'évolution d'un système informatique, l'activité de test suit des principes communs : elle implique généralement la stimulation du système/produit sous essai, l'observation de son comportement et/ou de ses propriétés, et implique une comparaison avec un système de référence idéal. Le but est de détecter des erreurs et de valider les fonctionnalités.
Il devient donc évident que la gestion des tests représente un enjeu majeur pour les organisations, impactant directement la réussite des projets et la qualité des livraisons. La mise en place d'un programme qualité qui s'appuie sur les bonnes pratiques de test, y compris l'automatisation, font partie intégrante de cette approche.
Voici une définition du test logiciel selon « American Society for Quality » (ASQ) : « Le test est l’exécution ou l’évaluation d’un système ou d’une composante, par des moyens automatiques ou manuels, pour vérifier qu’il répond à ses spécifications ou pour identifier les différences entre les résultats attendus et les résultats obtenus ».
Pourquoi des tests logiciels ?
On réalise des tests, car on ne fait pas bien notre travail du premier coup ! En moyenne dans l’industrie, environ 40 % du budget de développement est consacré à réaliser des vérifications (refaire le travail). Une des raisons d’avoir un groupe qualité c’est pour mettre en place un processus d’assurance qualité logicielle (AQL) afin de réduire le temps de correction (temps de tests). Le fait d’avoir une équipe de test dédiée, oblige l’équipe de projet à mieux développer son produit puisqu’il n’est plus exclusivement le vérificateur et le responsable des tests. Le groupe qualité lui, accompagne les équipes de projet et l’équipe de test pour s’assurer du respect du plan qualité logicielle établi. De plus, il fait évoluer le programme de test et le coffre à outils qualité (processus, gabarits, outils, guides, etc.) et s’assure que l’amélioration continue (rétrospective) est réalisée adéquatement afin d’en faire bénéficier l’ensemble des équipes dans l’organisation (mise à l’échelle).
Indépendance des équipes :
La structure organisationnelle devrait tendre vers un découpage distinct pour une bonne gouvernance avec :
- La gestion de la qualité dans l’organisation
- La gestion des tests
- La gestion des projets de réalisation informatique
Pourquoi trois groupes distincts ?
Ce modèle assure l’indépendance entre le « réalisateur » et le « vérificateur » au même titre qu’un bureau de qualité est indépendant de l’équipe de projet. Ce découpage assure une meilleure gestion des tests au cours de la totalité du cycle de vie du logiciel.
En gros, voici l’interaction entre les trois (3) groupes :
- L’équipe de projet construit un produit selon une méthode
- L’équipe de test vérifie le produit et constate les faiblesses
- L’équipe qualité contrôle et améliore les façons de faire au sein de l’organisation
Sommaire des rôles et responsabilités
L’équipe de test et l’équipe d’assurance qualité sont au service de l’équipe de projet et disposent de leur propre gestion et budget.
Équipe de projet :
- Planifier la réalisation du produit (calendrier, coûts, ressources, etc.)
- Suivre l’avancement du développement des releases du produit
- Développer le produit (analyse, conception, programmation)
- Exécuter les tests unitaires
- Effectuer les déploiements et mises en production
Équipe de test :
- Planifier, concevoir, exécuter, observer (analyse des résultats) et suivre les corrections (gestion des anomalies) des tests intégrés et des tests de système
- Automatiser les cas de test
- Produire les preuves de tests unitaires
- Supporter les tests d’acceptation
- Produire les métriques de test
Équipe d’assurance qualité :
- Planifier les activités d’assurance qualité (AQ) et de contrôle qualité (CQ)
- Mettre en place le programme qualité (processus, procédures, normes, etc.)
- Effectuer les activités de contrôles qualité
- Rapporter les non-conformités
- Collecter et produire les métriques qualité
- Former les ressources aux méthodes applicables
- Communiquer les résultats qualité
- Réaliser l’amélioration continue sur les façons de faire
- Gérer les archives et les risques en fonction des non-conformités observées sur les différentes versions du produit
Bénéfices
Bénéfices monétaires
La réorganisation des groupes permet d’obtenir des économies substantielles lors de la réalisation des projets.
- Un investissement de 6% des efforts d’un projet en assurance qualité logicielle (AQL) avec la mise en place de bonnes pratiques de test par l’équipe de test permet de réduire d’au moins 50% les efforts de tests et de 30% les efforts d’un projet. (Source : American Society for Quality)
NOTE : La vitesse de transition dépend de l’implication de la direction et de la prise au sérieux du programme qualité.
- La qualité est gratuite, après un certain temps, s’il y a des boucles d’amélioration. Normalement trois (3) boucles sont requises avant d’obtenir un bénéfice monétaire pour l’organisation. Toutefois, on peut constater une qualité accrue dès la première boucle.
NOTE : Une boucle signifie ;
- Qu’un projet ou une évolution a traversé l’ensemble du processus de développement en appliquant de l’assurance et du contrôle qualité à chaque étape.
- Que l’équipe de test ait participé, dès le début, au projet et qu’elle a réalisé ses tests en respectant les bonnes pratiques de test.
- Que l’assurance qualité apporte des mesures correctives au processus de développement et au processus de test, pour donner suite au post-mortem et aux anomalies documentées, par l’équipe de test.
Bénéfices lors des réunions de revue
Un des avantages de la séparation de l’équipe de test de celle du projet est d’obtenir deux (2) points de vue différents sur l’avancement d’un projet.
Un chargé de projet peut indiquer à la Direction que le projet est sous contrôle, que les coûts et le temps sont respectés, mais qu’en est-il de la qualité ?
- A-t-il coupé sur la qualité pour arriver à ses fins ?
- Est-ce que les phases de test sont escamotées pour respecter les délais et le budget ?
- A-t-il livré un niveau de qualité acceptable à l’équipe de test ?
- Les tests unitaires ont-ils été réalisés ?
- Un projet peut être « rouge » en qualité, mais « vert » en gestion et vice versa.
Conclusion
L’assurance qualité logicielle (AQL) apporte une maturité à l’organisation en innovant, normalisant les processus, les outils et les façons de faire. L’équipe de test dédiée vient compléter vos méthodologies de développement peu importe votre approche (Agile, DevOps, Hybride ou même traditionnelle).
Une bonne gestion de la qualité et une équipe de test sont des atouts stratégiques pour toute organisation cherchant à améliorer la qualité de ses produits, à optimiser ses processus et à rester compétitive sur le marché. La centralisation des connaissances, l'innovation, et l'amélioration continue des processus en sont les piliers.
Pour aller plus loin :
Qualité : bases et bonnes pratiques des tests logicielsAinsi que :
Qualité : planifier et exécuter vos activités de tests logiciels
Tests logiciels : implanter une équipe dans l'organisation
Tests logiciels : appliquer les bonnes pratiques en mode agile
Assurance qualité : implanter un bureau qualité
Photo de John Schnobrich sur Unsplash