Sobes.tech
Middle

Quelles qualités de contrôle (Quality Gates) connaissez-vous?

sobes.tech IA

Réponse de l'IA

Les portes de qualité (Quality Gates) sont des points dans le cycle de vie du développement logiciel où une décision est prise pour savoir si le produit ou une de ses parties possède une qualité suffisante pour passer à l'étape suivante.

Les principales portes de qualité incluent :

  • Stabilité de la compilation : Compilation réussie et absence d'erreurs critiques dans la compilation.
  • Résultats de l'analyse statique du code : Conformité aux normes de codage, absence de vulnérabilités critiques ou de "code smells".
  • Couverture du code par des tests : Couverture suffisante par des tests unitaires, d'intégration et autres tests automatisés.
  • Résultats des tests automatisés : Passage de tous ou d'un pourcentage défini de tests automatisés (unitaires, d'intégration, fonctionnels, de régression).
  • Absence de défauts critiques : Absence de bugs bloquants ou critiques détectés lors des tests.
  • Résultats des tests manuels : Réussite lors de l'exécution des scénarios de test manuels planifiés et des tests d'acceptation.
  • Conformité aux exigences : Le produit répond fonctionnellement aux spécifications et exigences.
  • Performance et évolutivité : Résultats satisfaisants lors des tests de charge et de stress.
  • Sécurité : Passage des vérifications de sécurité, y compris l'analyse statique de sécurité (SAST), l'analyse dynamique de sécurité (DAST) et les tests d'intrusion (Penetration Testing).
  • Documentation : Actualité et exhaustivité de la documentation technique et utilisateur.

Exemples de métriques pour les portes de qualité :

  • Couverture du code par des tests >= 80%
  • Nombre de bugs critiques = 0
  • Résultat des tests automatisés = 100% réussis
  • Évaluation de l'analyse statique du code >= A

Exemple de pipeline Jenkins avec porte de qualité :

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                script {
                    echo 'Construction...'
                    // Appel du script de construction
                }
            }
        }
        stage('Analyse statique') {
            steps {
                script {
                    echo 'Exécution de l'analyse statique...'
                    // Intégration avec SonarQube ou un autre outil
                }
            }
        }
        stage('Tests unitaires') {
            steps {
                script {
                    echo 'Exécution des tests unitaires...'
                    // Lancement des tests unitaires et génération de rapports
                }
            }
        }
        stage('Vérification de la porte de qualité') {
            steps {
                script {
                    echo 'Vérification de la porte de qualité...'
                    // Exemple de vérification avec SonarQube utilisant la porte de qualité
                    // wait-for-quality-gate abortPipeline: true
                }
            }
        }
        stage('Déploiement en staging') {
             when {
                // Condition pour passer à l'étape suivante, par exemple si la porte de qualité est passée avec succès
                expression { return BUILD_STATUS == 'SUCCESS' }
             }
             steps {
                script {
                    echo 'Déploiement en staging...'
                    // Étapes pour le déploiement
                }
             }
        }
    }
}