Sobes.tech
Middle

Quali qualità di controllo (Quality Gates) conosci?

sobes.tech AI

Risposta dell'AI

Le porte di qualità (Quality Gates) sono punti nel ciclo di vita dello sviluppo software in cui si decide se il prodotto o una sua parte ha qualità sufficiente per passare alla fase successiva.

Le principali porte di qualità includono:

  • Stabilità della compilazione: compilazione riuscita e assenza di errori critici.
  • Risultati dell'analisi statica del codice: conformità agli standard di codifica, assenza di vulnerabilità critiche o "code smells".
  • Copertura del codice con test: copertura sufficiente di test unitari, di integrazione e altri tipi di test automatizzati.
  • Risultati dei test automatizzati: superamento di tutti o di una percentuale stabilita di test automatizzati (unitari, di integrazione, funzionali, di regressione).
  • Assenza di difetti critici: assenza di bug bloccanti o critici rilevati durante i test.
  • Risultati dei test manuali: successo nell'esecuzione degli scenari di test manuali pianificati e dei test di accettazione.
  • Conformità ai requisiti: il prodotto soddisfa funzionalmente le specifiche e i requisiti.
  • Prestazioni e scalabilità: risultati soddisfacenti nei test di carico e stress.
  • Sicurezza: superamento delle verifiche di sicurezza, inclusi analisi statica di sicurezza (SAST), analisi dinamica di sicurezza (DAST) e test di penetrazione.
  • Documentazione: aggiornamento e completezza della documentazione tecnica e utente.

Esempi di metriche per le porte di qualità:

  • Copertura del codice con test >= 80%
  • Numero di bug critici = 0
  • Risultato dei test automatizzati = 100% con successo
  • Valutazione dell'analisi statica del codice >= A

Esempio di pipeline Jenkins con porta di qualità:

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                script {
                    echo 'Costruendo...'
                    // Chiamata allo script di build
                }
            }
        }
        stage('Analisi statica') {
            steps {
                script {
                    echo 'Esecuzione analisi statica...'
                    // Integrazione con SonarQube o altro strumento
                }
            }
        }
        stage('Test unitari') {
            steps {
                script {
                    echo 'Esecuzione test unitari...'
                    // Esecuzione test unitari e generazione report
                }
            }
        }
        stage('Controllo porta di qualità') {
            steps {
                script {
                    echo 'Controllo porta di qualità...'
                    // Esempio di verifica con SonarQube usando la porta di qualità
                    // wait-for-quality-gate abortPipeline: true
                }
            }
        }
        stage('Deploy in staging') {
             when {
                // Condizione per passare alla fase successiva, ad esempio, se la porta di qualità è superata con successo
                expression { return BUILD_STATUS == 'SUCCESS' }
             }
             steps {
                script {
                    echo 'Deploy in staging...'
                    // Passaggi per il deployment
                }
             }
        }
    }
}