Lors d’un précédent post, j’avais mentionné un principe Kanban qui me semblait très pertinent :
Le processus en amont doit éviter de fournir des produits défectueux au processus en aval.
Dans notre cas, le processus en amont est le développement, et le processus en aval est le service qualité. Le produit, c’est la nouvelle fonctionnalité qui vient d’être développée. Donc le produit défectueux, c’est une fonctionnalité buggée !
Plus il y a de bugs, et plus le temps passé au service qualité est long. Pour être plus précis, le problème est surtout qu’une même fonctionnalité passe plusieurs fois par le service qualité, et retourne autant de fois au développement.
Le point de vue des développeurs à ce sujet est souvent désemparant : "Ben, c’est le boulot des testeurs de trouver des bugs ! C’est normal qu’ils en trouvent !"
C’est vrai que chez nous, l’équipe qualité a une image de "trouveur de bugs".
On pourrait trouver ça logique, et mon article s’arrêterait là. Mais ce n’est pas très agile comme réaction, non ?
Comme le Kanban vient du monde industriel, c’est important de faire le parallèle entre l’industrie et le développement logiciel. Dans l’industrie, le service qualité est là pour vérifier, contrôler, mais n’est pas censé trouver des défauts à chaque fois. S’il en trouve, c’est qu’il y a une anomalie dans le processus amont, et cela doit rester exceptionnel. Or, dans notre équipe, pendant longtemps, si les "trouveurs de bugs" ne trouvaient rien, on se posait des questions…
Bref, pour en revenir au principe Kanban cité plus haut, j’ai imaginé ce qu’on pouvait faire dans notre équipe pour réduire le nombre de bugs détectés par l’équipe qualité. Pour trouver une solution, je suis reparti du problème de base qui est le suivant : quand les développeurs mettent au point une nouvelle fonctionnalité, ils finissent pas se focaliser sur les quelques points qui leur posent problème en phase de finalisation. Et bien souvent, une fois que ces derniers problèmes sont résolus, ils ont du mal à revoir la fonctionnalité dans sa globalité, surtout quand on parle de fonctionnalités complexes, ce qui est notre cas. Donc, au lieu de leur demander de refaire une passe globale, qui risque de ne pas être aussi globale que ça, nous avons mis en place des tests croisés. Un développeur qui n’a pas participé à ce développement va se charger de faire une passe de test globale avant de transmettre le projet à l’équipe qualité. Ce développeur, pas forcément très motivé au début se fixe progressivement deux objectifs :
- trouver des bugs dans le développement de son collègue (et vu que ça tourne, cela devient un jeu)
- fournir à l’équipe qualité un développement sans défaut
La somme des deux fait que cette passe est généralement plus approfondie qu’aurait pu l’être celle de l’équipe qualité.
Et ça marche ! Nous venons de finir une release de trois sprints et le volume d’anomalies détectées par l’équipe qualité est pratiquement tombé à zéro. Et le service qualité reprend sa fonction initiale, à savoir vérifier que ce qui est produit est conforme à ce qui a été demandé.
Pour formaliser tout ça, nous avons mis en place dans iceScrum une étiquette supplémentaire pour chaque story. Cette étiquette porte le libellé "Test DEV". Elle vient donc compléter les étiquettes "Test QA" et "Doc" qui nous permettent de garantir que notre processus est bien respecté. Et voilà comment dans notre équipe, nous sommes devenus tous testeurs !




