Sobes.tech
Middle

Ce calități de control (Quality Gates) cunoști?

sobes.tech AI

Răspuns de la AI

Porțile de calitate (Quality Gates) sunt puncte din ciclul de viață al dezvoltării software unde se ia decizia dacă produsul sau o parte a acestuia are calitatea suficientă pentru a trece la etapa următoare.

Principalele porți de calitate includ:

  • Stabilitatea build-ului: compilare reușită și absența erorilor critice în build.
  • Rezultatele analizei statice a codului: conformitatea cu standardele de codare, absența vulnerabilităților critice sau "code smells".
  • Acoperirea codului cu teste: acoperire suficientă prin teste unitare, de integrare și alte tipuri de teste automatizate.
  • Rezultatele testelor automatizate: trecerea tuturor sau a unui procent stabilit de teste automatizate (unitare, de integrare, funcționale, de regresie).
  • Absența defectelor critice: lipsa bug-urilor blocante sau critice detectate în timpul testelor.
  • Rezultatele testelor manuale: succes în executarea scenariilor de test manual planificate și a testelor de acceptare.
  • Conformitatea cu cerințele: produsul corespunde funcțional specificațiilor și cerințelor.
  • Performanța și scalabilitatea: rezultate satisfăcătoare în testele de încărcare și stres.
  • Securitatea: trecerea verificărilor de securitate, inclusiv analiza statică de securitate (SAST), analiza dinamică de securitate (DAST) și testele de penetrare.
  • Documentația: actualitatea și completitudinea documentației tehnice și a utilizatorului.

Exemple de metrici pentru porțile de calitate:

  • Acoperirea codului cu teste >= 80%
  • Numărul de bug-uri critice = 0
  • Rezultatul testelor automatizate = 100% cu succes
  • Evaluarea analizei statice a codului >= A

Exemplu de pipeline Jenkins cu poarta de calitate:

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                script {
                    echo 'Construind...'
                    // Apelarea scriptului de build
                }
            }
        }
        stage('Analiza statică') {
            steps {
                script {
                    echo 'Executarea analizei statice...'
                    // Integrare cu SonarQube sau alt instrument
                }
            }
        }
        stage('Teste unitare') {
            steps {
                script {
                    echo 'Executarea testelor unitare...'
                    // Rulare teste unitare și generare rapoarte
                }
            }
        }
        stage('Verificarea porții de calitate') {
            steps {
                script {
                    echo 'Verificarea porții de calitate...'
                    // Exemplu de verificare cu SonarQube folosind poarta de calitate
                    // wait-for-quality-gate abortPipeline: true
                }
            }
        }
        stage('Deploy în staging') {
             when {
                // Condiție pentru a trece la etapa următoare, de exemplu, dacă poarta de calitate a fost trecută cu succes
                expression { return BUILD_STATUS == 'SUCCESS' }
             }
             steps {
                script {
                    echo 'Deplasează în staging...'
                    // Pași pentru deployment
                }
             }
        }
    }
}