Au sein d’un projet Agile, la QA (Quality Assurance) a souvent une place assez floue. D’ailleurs, si l’on s’intéresse aux références Agiles comme les méthodes Scrum ou Kanban, elle est souvent peu présente, voire inexistante.
A l’heure de l’hyper digitalisation et de la forte utilisation de produits numériques, la qualité du produit est un pilier de l’expérience utilisateur.
En effet, comment répondre à ce besoin de création de valeur sans s’assurer que le produit est bien fonctionnel et utilisable par ces utilisateurs ? L’intégration de la QA au sein des organisations Agiles prend alors tout son sens en permettant notamment de valider des critères essentiels de la Definition of Done (DoD) du projet.
Pour déterminer le rôle de la QA au sein d’un contexte Agile, il est nécessaire de définir la notion “Agile”. S’il existe de nombreuses définitions, nous pouvons globalement définir l'Agilité avec les points clés suivants :
Cette dernière valeur de l’Agilité donne toute sa place à la QA dans une organisation Agile puisque dans tout projet, on peut tous facilement s’accorder sur ce constat : le QA est le premier utilisateur du produit. Son feedback est donc essentiel à la réactivité des partie prenantes du projet et à la maitrise des coûts. En effet, plus tôt un ajustement est identifié dans la chaine de production, moins il sera coûteux en termes de temps, de budget et d'image.
Le rôle de la QA (Quality Assurance) est donc triple :
Nous avons donc vu l’intérêt d’intégrer la QA au sein d’une organisation Agile puisqu’il permet d'assurer la qualité du produit et d’obtenir un premier feedback sur le produit en tant que premier utilisateur. Toutefois, nous n’avons pas répondu à la question essentielle : comment l’intégrer au sein des processus Agiles ?
La QA est souvent en bout de chaîne et subit tous les retards engendrés lors des autres process mis en place sur le projet. Cette situation aboutit généralement à une QA en retard ou surchargées, incapable de tester à temps le périmètre défini en amont. De ce fait, la QA doit à nouveau s’adapter et prioriser les tests à exécuter pour valider les nouvelles fonctionnalités/use cases :
L’intégration de la QA en bout de chaîne ne semble donc pas l’organisation la plus optimale dans un contexte Agile.
Pour résoudre cette équation, revenons au principe même de l’Agilité et de la vision produit : livrer régulièrement de la valeur à un produit via le feedback de ses utilisateurs. Et comme nous l’avons vu précédemment, le premier utilisateur du produit, c’est le QA ! Pour rapprocher l’utilisateur au plus près du backlog, il faut donc intégrer la QA le plus en amont possible et ne plus la laisser en fin de phase. On parle alors de Shift Left Testing. Le principe du Shift Left Testing, c’est de tester plus tôt, plus souvent afin de réduire le nombre de bugs tardifs et d’améliorer ainsi la qualité du code.
Pour mettre cela en pratique, nous allons donc incorporer la QA dès la phase de conception en la combinant avec une approche Behaviour-Driven Development (BDD). Les avantages de cette organisation sont multiples :
En effet, on constate que la grande majorité des bugs sont introduits lors de la phase de codage. Si l’on attend la fin du cycle de développement pour tester, il devient de plus en plus complexe et coûteux de corriger proprement tous les bugs en même temps.
Pour mettre en place cette organisation, il est toutefois nécessaire de respecter des étapes :
Pour conclure, l’Agilité ne peut fonctionner que si la qualité reste l’affaire de tous !
Il est primordial de consacrer du temps à la QA mais aussi de l’intégrer le plus en amont possible tes et donc impliquer tes équipes QA dans le processus de développement. L'objectif ne consiste plus seulement à trouver des bugs et des défauts, mais à les prévenir dès le début du cycle afin d’optimiser le testing, contrôler tes coûts et livrer un produit de qualité qui réponds au mieux au besoin de tes utilisateurs.
Pour cela, nous proposons d'associer la mise en place des deux méthodes :
Ce qu'il faut retenir d'intégrer la QA dans une organisation Agile :