Quality Gate

La notion de Quality Gate est incontournable lorsqu'il s'agit de garantir la qualité d'un code source. Ces outils permettent de définir des critères précis pour évaluer et maintenir un haut niveau de qualité. Mais qu'est-ce qu'un Quality Gate exactement, et comment le mettre en place efficacement ? Dans cet article, on vous explique tout ce qu'il y a à savoir concernant les Quality Gates et leurs mises en œuvre. Bonne lecture !
Philippe.jpg
Philippe AUBERTIN, Javaman aigriMis à jour le 9 Juil 2024
Quality Gate : Définition et bonnes pratiques

Qu'est-ce qu'un Quality Gate ?

En développement informatique, un « quality gate » (ou portail de qualité) est un point de contrôle dans le processus de développement logiciel qui permet de s'assurer que le code répond à un ensemble prédéfini de critères de qualité.

À quoi servent les Quality Gates ?

Les Quality Gates évaluent le code sur la base de critères spécifiques, tels que la couverture de test, les conventions de codage, la complexité du code, les vulnérabilités de sécurité, et d'autres métriques de qualité du code.

Ils fournissent un retour d'information continu aux développeurs sur la qualité de leur code, ce qui favorise l'apprentissage et l'amélioration des pratiques de codage.

La qualité de code et les Quality Gates

Il faut considérer le code source comme un patrimoine immobilier qui a une histoire. Il ne peut être parfait, et dès qu'il est écrit, il est nécessaire de le corriger, de le maintenir et de l'améliorer.

Souvent, quand on arrive sur un nouveau contexte, on s'aperçoit que la qualité de code et mauvaise et que, même si des outils sont mis en place pour y remédier, la qualité de code ne s'améliore pas. A l'inverse, on constate parfois des contextes dans lesquels la qualité de code est bonne, mais rien n'est produit par les équipes de développements. Il faut savoir jouer avec la qualité de code, pour continuer à être en mesure de délivrer des fonctionnalités tout en assurant une qualité de code raisonnable. Pour trouver la bonne stratégie à adopter, il convient de travailler avec son équipe Génie Logiciel, ou les responsables de la qualité pour trouver le juste milieu et définir une quality gate acceptable.

Petite astuce : si vous démarrez avec une mauvaise qualité de code, au lieu d'essayer de tout corriger d'un coup (ce qui épuisera à coup sûr vos équipes), prenez comme principe de passer uniquement le nouveau code produit à la quality gate. Ainsi, vous pouvez forcer les développeurs à passer la quality gate à chaque nouvelle MR. Au début, les effets sont assez faibles, mais très rapidement, la qualité de code globale va s'améliorer. Et bonus, avec cette stratégie, vous embarquerez bien plus facilement vos équipes de développeurs !

Comment définir une bonne quality gate ?

Pour définir une bonne quality gate, il faut d'abord réfléchir à identifier quels sont les problèmes de votre code base. Dire « j'ai des bugs » et en conclure que la qualité du code est mauvaise, ce n'est pas tout à fait exact et cela ne permet pas d'agir correctement. Pourquoi ? Parce qu'il n'y a pas nécessairement un lien évident entre un bug et la qualité de code. La plupart des bugs des applications sont des bugs dit « métier » qui correspondent plus à des cas non pensés par les développeurs ou les équipes de recette.

Certaines applications souffrent de régression, ou d'autres encore, de problèmes qui ne se produisent qu'en production, de problèmes de performances, ou de problèmes que l'on qualifie faussement d'aléatoires. D'autres applications ont plutôt des difficultés à livrer de nouvelles fonctionnalités, à limiter les risques de sécurité, etc. La liste des problèmes est presque aussi longue que le nombre d'applications ! Il convient donc de réfléchir et d'identifier le problème pour y apporter une saine solution.

  Type de problème Symptômes   Solutions 
Problème de régression      
Problème de vitesse de livraison (célérité)      
Problème de performance      
Problème d'instabilité      
Problème ne se produisant qu'en production      
Problème de sécurité      

Contrôle des quality gates : les outils !

Quand on parle de qualité de code, on a tout de suite tendance à essayer de s'outiller avec des logiciels permettant d'automatiser le contrôle. C'est évidemment une question de gain de temps, mais ces outils ne permettent pas de garantir la meilleure qualité pour votre projet. Ils peuvent être une aide qui accompagne un mouvement plus vaste de correction des bugs, de respect des guidelines des langages et frameworks et plus simplement, pour avoir un code de qualité et optimisé pour le besoin métier qu'il doit remplir.

Parmi ces outils, on retrouve d'abord SonarQube qui est un outil d'analyse statique de code, conçu pour soutenir le maintien de la qualité du code.

Ses avantages sont multiples : il excelle dans la détection des bugs et des vulnérabilités, ce qui contribue à renforcer la robustesse des applications. Son intégration fluide dans les pipelines CI/CDProcessus d'automatisation : Intégration Continue et Déploiement Continu en fait un choix privilégié pour les processus de développement modernes, offrant ainsi une approche cohérente de l'assurance qualité tout au long du cycle de vie du logiciel. De plus, SonarQube fournit des métriques précieuses sur la qualité du code, permettant aux équipes de suivre leur progression et de prendre des décisions éclairées pour améliorer leurs pratiques de développement. Cependant, malgré ses nombreux avantages, cet outil présente quelques inconvénients à prendre en compte. Notamment, il ne couvre pas les tests de pénétration, ce qui limite sa capacité à identifier les vulnérabilités de sécurité plus profondes. De plus, certaines limitations dans l'analyse peuvent parfois restreindre sa pertinence dans des contextes spécifiques, nécessitant ainsi une évaluation minutieuse de son utilisation en fonction des besoins spécifiques du projet.

Ensuite, nous pouvons retrouver un autre type de logiciel, permettant de vérifier l'intégrité du livrable face aux failles de sécurités. Nous pouvons citer 2 outils : Dependency Track, qui répertorie les CVE liés aux librairies d'un projet et Snyk, qui permet de faire la même chose que Dependency Track en ajoutant des vérifications supplémentaires sur les fichiers de description d'Infrastructure as a Code et sur les failles de sécurité des conteneurs et leur registry.

A ce sujet, notre conviction est qu'il faut utiliser ces outils comme une aide à la revue de code au quotidien car l'utilisation de tels outils en "One-Shot" est quelque chose d'assez anxiogène au vu du nombre de retours qu'il est facile d'imaginer à traiter. De plus, il ne faut pas oublier que ces outils ne permettent pas d'avoir le recul métier nécessaire à la bonne compréhension du code et parfois, il est compliqué de corriger certaines remontées car ces outils ne prennent pas en compte les contraintes métiers du projet en développement.

Au-delà des quality gates, d'autres techniques pour améliorer la qualité du code ?

La mise en place des Quality Gates reste une étape incontournable et un bon garde fou pour améliorer la qualité de vos livrables ! Cela dit, il existe également d'autres techniques pour améliorer la qualité de code : l'audit humain, le DevOps, l'IA...

Si vous avez besoin de conseils pour mettre en place des quality gates, ou simplement avoir un retour d'expérience, n'hésitez pas à nous contacter directement ! Au plaisir de vous lire.