« Accident mortel de voiture autonome : le logiciel ne pouvait pas reconnaître un piéton hors des clous. »

Nov. 2019

« Ces petits bugs qui ont ruiné la sortie de gros jeux vidéo ! »

Août 2019

« Écoles de commerce : gros bug lors d’un concours en ligne pour les admissions parallèles… »

Avril 2020

Vous souvenez-vous de ces gros titres dans les journaux ? À ce stade, on peut difficilement se dire « Oups, on fera mieux la prochaine fois. » Bien sur, un logiciel sans aucune anomalie n’existe pas, il existe toujours des comportements utilisateurs non prévus, des failles, des incidents dans des environnements atypiques. Néanmoins, le contrôle qualité est là pour diminuer les risques de gros dérapages. Voyons plus précisément pourquoi il est indispensable d’élaborer une stratégie d’assurance qualité et de gestion des tests.

Sommaire

Un plan d’assurance qualité logiciel (PAQ), c’est quoi ?

Le Plan Assurance Qualité c’est en quelque sorte les « règles » de fonctionnement du projet. Dès le lancement, il consiste à définir les dispositions prises par l’équipe du projet et potentiellement les partenaires, pour garantir la conformité des produits livrés avec les exigences spécifiées.

Si on prend la définition de l’association ISTQB® (International Software Testing Qualifications Board), le Comité international de qualification du test logiciel, on différencie deux types de plans:

  • Plan de test projet qui décrit l’implémentation de la stratégie de test sur un projet dans son ensemble.
  • Plan de test de niveau qui décrit les activités précises à mettre en œuvre pour chaque niveau de test.

Le plan d’assurance qualité logiciel permet de définir l’ordre dans lequel chaque composant est complété, testé individuellement, et intégré aux autres composants du système.

  • Ce qui sera testé : dans le plan de test, on doit retrouver le périmètre d’intervention de l’activité de recette associé au projet. Il faut lister les éléments du produit/ logiciel qui seront testés et définir les éléments qui sont exclus de la stratégie.
  • Pourquoi tester : les plans de test logiciel répertorient les objectifs à atteindre (définition des étapes du processus de test, identification des problèmes ou des risques, détecter le maximum d’anomalies…),
  • Comment les tests s’effectueront, quand, qui teste: on mentionne l’approche globale des tests puis, en fonction des objectifs, on spécifie les niveaux de test, les types de test (tests unitaires, tests d’intégration, tests système, tests d’acceptance) et les méthodes.
  • Livrables : utiles pour les processus d’audits, ils comprennent le plan de test, les différents cas de test, les scripts de test et les rapports de test.

Les enjeux business derrière le plan d’Assurance Qualité logiciel

Dans le premier exemple ci-dessus, le manque de qualité logicielle est ici poussée à son extrême avec des conséquences graves. Sans en arriver jusque-là, il est des cas plus classiques qui peuvent tout de même avoir des conséquences financières lourdes et durables sur votre business comme par exemple entacher l’image de marque de vos produits.

De façon synthétique, on peut identifier 3 enjeux majeurs de la qualité logicielle :

  • Image : Atteindre voire surpasser les attentes des clients et partenaires
  • Coût : Assurer la maintenabilité des applications dans le temps, moins couteuse si anticipée et sous contrôle.
  • Conformité aux normes : dans beaucoup de secteurs industries, les produits ou services logiciels sont cadrés par des normes, des standards, des processus qualité (i.e. ISO 26262 pour la sécurité fonctionnelle automobile, ASPICE, ISO 13485, IEC 62304…). L’assurance qualité logicielle est indispensable pour obtenir ses pass, dont il faut pouvoir apporter les preuves de traçabilité et de gestion des tests.

En moyenne, le coût d’un bug bloquant (celui qui rend le système non opérant) est de 5.600 euros par minute d’indisponibilité.

Andrew Lerner, analyste Gartner

Un enjeu de réputation

Les consommateurs le savent : le fonctionnement des produits ou services repose de plus en plus sur du logiciel, plus complexe, plus interconnecté. Ainsi le consommateur qui ne s’intéresse pas aux logiciels, mais aux produits et services qu’ils rendent possible, s’interroge, consciemment : est-ce que cette marque est fiable quant à l’utilisabilité et la durabilité de ces produits? 

En réponse à cette question, les entreprises doivent au plus vite travailler la réputation des produits et services qu’ils offrent, donc d’améliorer la qualité des logiciels qu’elles développent. Le cas échant, les clients n’hésitent plus à s’exprimer sur les réseaux sociaux et en cas de mauvaise expérience, ils n’hésiteront pas à le faire savoir.

Des conséquences sur le coût

Un logiciel mal pensé peut engendrer des coûts supplémentaires , par exemple, des problèmes de mises à jour coûteuses. La qualité est un des enjeux majeurs pour les ingénieurs logiciel. On estime aujourd’hui que pour certaines organisations, les conséquences d’un logiciel de moins bonne qualité peuvent engendrer des efforts de reprise de l’ordre de 40 % à 50 % du budget initial !

Il serait illusoire de vouloir tester complètement une application. Cela serait une perte de temps considérable, n’a pas d’intérêt réel et offre un retour sur investissement négatif. L’efficacité des tests dépend plutôt de la précocité de leur mise en oeuvre. Plus une anomalie est détectée tôt, plus elle sera facile à corriger et moins couteuse. Ce graphique illustre bien ce constat. Il représente le coût relatif d’une anomalie en fonction de la phase de développement durant laquelle elle a été découverte. Regardez, une fois une production, corriger un bug peut couter entre 30 et 100 fois plus cher. C’est énorme.

Conformité aux normes

Dans de très nombreux secteurs d’activités, avant le succès du produit auprès des utilisateurs, c’est la sortie même du produit (le go-to- market) qui est conditionnée au fait de répondre à des normes. Il est des industries avec des systèmes complexes et sécuritaires où la gestion des tests logiciels est absolument critique : avionique, médical, transports…

L’assurance qualité logicielle est le moyen de répondre aux normes à la condition qu’elle arrive à démontrer une traçabilité complète. Dans le domaine du test logiciel, nombreux sont les liens de traçabilité : lien « besoin ← → exigence métier », « exigence produit ← → code », « code ← → tests », « résultat de test ← → anomalie….

Chaque lien présente un intérêt mais lorsque tous ces liens sont tracés, l’intérêt est décuplé ! Une traçabilité « Exigence Métier – Exigence Produit – Test – Instance de Test – Résultat de Test – Anomalies » , comme il est possible de le faire avec Tuleap, permettra de connaître à tout instant le statut de la couverture de l’exigence par rapport aux tests et de répondre aux questions : a-t-elle été testée ? Si oui, quel est le résultat ? Si le résultat est négatif, quelle est l’anomalie associée ? 

L’assurance qualité logicielle : des méthodes, une culture, des outils

L’assurance qualité d’un processus ou d’un produit, a pour but de s’assurer que le niveau de qualité nécessaire des développements logiciels est atteint et que les standards, normes et procédures sont respectés. Une bonne qualité logicielle est un appréciation relative qui dépend de plusieurs aspects (technique, fonctionnel…) et des points de vue (utilisateur, fournisseur, marketing…). Afin de garantir cette qualité et de fournir une évaluation précise, il existe plusieurs techniques et méthodologies : l’assurance qualité (QA), le contrôle qualité (CQ) et la gestion des tests logiciels.

Pour être vraiment efficace, la qualité logicielle doit être au coeur de la stratégie d’entreprise en mettant la satisfaction du client au coeur de tout nouveau produit. Elle passe par une culture qualité dans les équipes de développement afin de les responsabiliser et qu’elles aient conscience que la qualité est l’affaire de tous.

Car la satisfaction des utilisateurs finaux conditionne directement les résultats de l’entreprise. La qualité des produits, biens matériels ou services est pour toute entreprise un facteur essentiel de compétitivité.

La qualité logicielle, une affaire de culture

Produire du code de qualité est aussi une question de culture. Si de « bonnes façons de coder » ne sont pas acquises de fait ou non révélées au sein des équipes, faire émerger cette culture du code de qualité peut demander prend du temps, car elle implique non seulement le développeur en tant qu’individu, mais aussi l’équipe et l’organisation dans son ensemble. Construire du code de qualité repose sur des pratiques de développement qui s’apprennent (TDD, pair-programming, revue de code…), mais également de l’environnement de l’entreprise qui favorise ces apprentissages (temps dédié à la formation, acceptation de l’amélioration par l’échec).

Un logiciel est un travail d’ équipe. La manière dont les individus collaborent influe donc sur la qualité de ces logiciels. Parmi les mouvements qui mettent en avant la qualité logicielle et la gestion des tests, le Software Craftsmanship, l’artisanat du code mais aussi toutes les approches agiles indirectement puisqu’elles placent la satisfaction de l’utilisateur au centre du projet. En effet, être agile et conforme aux normes est non seulement possible mais avantageux.

Manifeste Software Craftmanship

La place des outils de QA et de gestion des tests

Pour appuyer la stratégie de testing et accélérer les efforts des équipes, les outils à leur disposition vont jouer en rôle clé. Test unitaires, tests d’intégration, tests du système, tests d’acceptation, tests de non-régression, il existe tout une panoplie de tests. Pour gérer cela de façon efficace, acquérir et se former sur les logiciels de tests apporte des bénéfices de taille, notamment augmenter la productivité des équipes en automatisant tout ce qui est possible, et assurer la traçabilité des tests aux exigences. Enfin, un outil ALM permet de développer des logiciels conformes aux normes industrielles, en répondant à toutes les exigences d’assurance qualité et de traçabilité.

test management tool
Outil de gestion des tests manuels et automatisés : Tuleap Test Management®

En fonction de la stratégie d’assurance qualité que vous souhaitez/devez appliquer, vous devrez choisir les outils tels que Jenkins, l’outil le plus utilisé pour l’intégration continue et Tuleap Test Management® (TTM) pour le pilotage des plans de tests automatisés et manuels. TTM est le module de QA de Tuleap qui vous permet de vérifier que les applications développées sont répondent aux exigences initiales. Tuleap Test Management permet de mettre en place des plans de tests sous forme de processus uniforme, reproductible pour regrouper les exigences, planifier et établir le calendrier des tests, analyser les résultats et gérer des incidents.

Aller plus loin