La qualité logicielle ne peut être garantie que par la production d’un code source de qualité et une stratégie de test bien étudiée et préparée, ceci se définit comme étant le Quality by Design.

Très souvent, un projet de développement logiciel rencontre des problèmes en cours de réalisation et la qualité n’est pas au rendez-vous en raison des bugs récurrents. Cela impacte les livrables et cause des dépassements budgétaires conséquents et peut impacter l’image de la société.

Histoire du développement logiciel

Sur les 30 dernières années, le développement logiciel a connu une évolution fulgurante et a permis d’industrialiser le travail des équipes à travers des outils, des méthodes, des règles et procédures. Cette industrialisation a pour objectif d’accélérer le temps de développement et la fréquence de livraison et d’ainsi être en mesure de livrer régulièrement au client augmentant ainsi sa satisfaction.

Cette accélération ne doit pas impacter la qualité globale d’un logiciel et limiter les bugs et régressions après déploiement en production.

La question principale à se poser dans ce cas est la suivante : comment assurer un niveau minimum de qualité du logiciel et en même temps  réduire le cycle de développement et augmenter la fréquence de livraison ?

La première réponse peut être apportée par l’automatisation des tests. Avec un bon niveau de couverture des tests, l’exécution des tests automatisés permet d’avoir une idée claire sur le niveau de stabilité du logiciel et remonter les potentielles régressions et bugs.

Cette réponse est partielle car si le niveau d’échec des tests automatiques est élevé, la livraison est décalée et l’équipe projet se trouve dans un nouveau cycle de développement sans pouvoir faire de livraison.

Les logiciels permettent de répondre aux besoins des utilisateurs. Une équipe projet livre donc de la valeur. Il est donc plus judicieux de s’assurer de la livraison de la valeur.

Par ailleurs, la vitesse et la fréquence de livraison dépendent du  processus et du pipeline de livraison.

La qualité d’un processus de réalisation d’un logiciel doit garantir une livraison régulière de valeur sans impacter la qualité et la stabilité du logiciel.

Pour résoudre cette problématique, la qualité doit être présente à toutes les étapes dans la chaîne de réalisation du logiciel. Cette approche s’appelle “Quality by Design” et représente un enchaînement de règles assurant la qualité dans la conception d’un logiciel.

Le “Quality by Design” se caractérise par l’intégration de la qualité dans ces trois étapes importantes:

  1. Smart Design
  2. Smart Development
  3. Smart Test

Smart Design

La communication entre les 3 amigos (Product Owner, Développeur, Testeur) est un élément important pour pouvoir atteindre un niveau de maturité suffisant sur la conception du produit à développer. Le “Definition of Ready”  et le “definition of done”  sont bien définis en amont et les critères d’acceptations sont validés par les 3 amigos dans chaque story.

Ce concept se base sur un niveau de sensibilité élevé  aux principes du Test Driven Development et/ou du Behavion Driven Development des équipes métiers et marketings. 

Sur un projet géré par nos consultants récemment, le “ Smart Design” a été un axe d’amélioration majeur pour pouvoir intégrer le Quality by Design dans le projet.

Smart development

Une étude récente a montré que la proportion du temps passé par un développeur sur la correction des bugs ou re-développement de fonctionnalité peut atteindre les 50% en raison de mauvaises interprétations des spécifications techniques et/ou fonctionnelles. Au fur et à mesure que le projet avance, les fonctionnalités s’ajoutent et le code devient de plus en plus complexe et la maintenance devient moins évidente. 

Afin de mieux accompagner les développeurs sur l’amélioration de la qualité du code, la mise en place de méthodes de conception pilotée par le test type TDD ou BDD permet d’améliorer la qualité du livrable et d’anticiper d’éventuels bugs.  L’accompagnement peut se faire avec un Coach QA qui permet de sensibiliser les équipes et surveiller le respect des règles associées. Les tests unitaires et le partage des bonnes pratiques entre les développeurs permet de réduire la dette technique sur chaque livraison.

Smart test

Le monde de la QA s’articule aujourd’hui autour : 

  • des tests manuels avec les rôles du test analyst 
  • des tests automatisés avec l’Automation engineer
  • de QA manager pour la défintion de la stratégie de test par projet, le suivi de l’activité de squad QA.

Nos collaborateurs, chez “Expert du Test” contribuent chaque jour à l’amélioration continue de la qualité des logiciels de nos clients.

L’utilisation d’un référentiel de test permet d’organiser le travail de l’équipe QA. Notre société “Experts du Test” propose la plateforme “QACoverage” une solution complète pour “driver” les activités QA en mode Agile.

Dans le cadre du “Smart Test” l’équipe QA travaille sur deux flux séparés :

  1. Sprint en cours : sur la base des acceptance criteria, la QA peut rédiger les cas de test et préparer le jeu de données.  Une fois la story intégrée sur l’environnement d’intégration, le testeur peut alors lancer une campagne de test manuelle pour vérifier la bonne intégration de la fonctionnalité associée à la story
  2. Sprint livrée : La QA dispose de la liste des cas de tests déjà vérifiés sur le sprint précédent. Le livrable est disponible  en environnement de test. La QA peut lancer deux actions:
    • Développement des scripts afin d’automatiser les nouveaux  tests
    • Exécution des tests de non régression en exécutant les tests automatisés.

Cet article permet de donner un aperçu sur un concept important pour pouvoir gérer au mieux la qualité du travail de l’équipe projet. La prochaine étape étant de bien étudier et définir le definition of ready