Sobes.tech
Middle

Koje kvalitete kontrole (Quality Gates) poznajete?

sobes.tech АИ

Одговор од АИ

Кvalitetne kapije (Quality Gates) — to su tačke u životnom ciklusu razvoja softvera gde se donosi odluka da li proizvod ili njegov deo imaju dovoljan kvalitet da pređu na sledeći korak.

Ključne kvalitete kapija uključuju:

  • Stabilnost sklopa: Uspešna kompilacija i odsustvo kritičnih grešaka u sklopu.
  • Rezultati statičke analize koda: Usklađenost sa standardima kodiranja, odsustvo kritičnih ranjivosti ili "code smells".
  • Pokriće koda testovima: Dovoljno pokriće jedinicama, integracionim i drugim vrstama automatizovanih testova.
  • Rezultati automatizovanih testova: Izvođenje svih ili zadatog procenta automatizovanih testova (jediničnih, integracionih, funkcionalnih, regresionih).
  • Odsustvo kritičnih defekata: Odsustvo blokirajućih ili kritičnih grešaka otkrivenih tokom testiranja.
  • Rezultati ručnog testiranja: Uspešno završavanje planiranih scenarija ručnog testiranja i prihvatanja.
  • Usklađenost sa zahtevima: Proizvod funkcionalno odgovara specifikacijama i zahtevima.
  • Performanse i skalabilnost: Zadovoljavajući rezultati opterećenja i stres testova.
  • Bezbednost: Uspešno završavanje bezbednosnih provera, uključujući statičku analizu bezbednosti (SAST), dinamičku analizu bezbednosti (DAST) i testiranje penetracijom.
  • Dokumentacija: Ažurnost i potpunost tehničke i korisničke dokumentacije.

Primeri metrika za Quality Gates:

  • Pokrivenost koda testovima >= 80%
  • Broj kritičnih grešaka = 0
  • Rezultat automatizovanih testova = 100% uspešnih
  • Ocena statičke analize koda >= A

Primer Jenkins Pipeline sa Quality Gate:

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                script {
                    echo 'Building...'
                    // Poziv skripte za izgradnju
                }
            }
        }
        stage('Static Analysis') {
            steps {
                script {
                    echo 'Running static analysis...'
                    // Integracija sa SonarQube ili drugim alatom
                }
            }
        }
        stage('Unit Tests') {
            steps {
                script {
                    echo 'Running unit tests...'
                    // Pokretanje jedinicnih testova i prikupljanje izveštaja
                }
            }
        }
        stage('Quality Gate Check') {
            steps {
                script {
                    echo 'Checking Quality Gate...'
                    // Primer provere sa SonarQube koristeći Quality Gate
                    // wait-for-quality-gate abortPipeline: true
                }
            }
        }
        stage('Deploy to Staging') {
             when {
                // Uslov za prelazak na sledeći korak, npr. ako je Quality Gate uspešno prošao
                expression { return BUILD_STATUS == 'SUCCESS' }
             }
             steps {
                script {
                    echo 'Deploying to Staging...'
                    // Koraci za deployment
                }
             }
        }
    }
}