Sobes.tech
Middle

Kokias kontrolės savybes (Quality Gates) žinote?

sobes.tech AI

Atsakymas iš AI

Kokybės vartai (Quality Gates) — tai taškai programinės įrangos kūrimo gyvavimo cikle, kur priimamas sprendimas, ar produktas ar jo dalis turi pakankamą kokybę pereiti į kitą etapą.

Pagrindiniai kokybės vartai apima:

  • Sukūrimo stabilumas: Sėkminga kompiliacija ir kritinių klaidų nebuvimas.
  • Statinio kodo analizės rezultatai: Atitiktis kodavimo standartams, kritinių pažeidžiamumų ar "code smells" nebuvimas.
  • Kodo padengimas testais: Pakankamas vienetinių, integracinių ir kitų automatizuotų testų padengimas.
  • Automatizuotų testų rezultatai: Visų arba nustatyto procento automatizuotų testų vykdymas.
  • Kritinių trūkumų nebuvimas: Trūkumų, trukdančių ar kritinių klaidų nebuvimas, nustatytų testavimo metu.
  • Rankinio testavimo rezultatai: Sėkmingas planuotų rankinio testavimo scenarijų ir priėmimo testų įvykdymas.
  • Reikalavimų atitiktis: Produktas funkcionaliai atitinka specifikacijas ir reikalavimus.
  • Našumas ir mastelio keitimas: Patenkinami apkrovos ir streso testų rezultatai.
  • Saugumas: Sėkmingas saugumo patikrinimų, įskaitant statinį saugumo analizę (SAST), dinaminį saugumo analizę (DAST) ir įsilaužimo testavimą, įvykdymas.
  • Dokumentacija: Techninės ir vartotojo dokumentacijos aktualumas ir pilnumas.

Pavyzdžiai metrikų, skirtų kokybės vartams:

  • Kodo padengimas testais >= 80%
  • Kritinių klaidų skaičius = 0
  • Automatizuotų testų vykdymo rezultatas = 100% sėkmingas
  • Statinio kodo analizės įvertinimas >= A

Jenkins Pipeline pavyzdys su kokybės vartais:

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                script {
                    echo 'Building...'
                    // Kūrimo scenarijaus iškvietimas
                }
            }
        }
        stage('Static Analysis') {
            steps {
                script {
                    echo 'Running static analysis...'
                    // Integracija su SonarQube ar kitu įrankiu
                }
            }
        }
        stage('Unit Tests') {
            steps {
                script {
                    echo 'Running unit tests...'
                    // Vienetinių testų paleidimas ir ataskaitų rinkimas
                }
            }
        }
        stage('Quality Gate Check') {
            steps {
                script {
                    echo 'Checking Quality Gate...'
                    // Pavyzdys patikrinimo naudojant SonarQube ir kokybės vartus
                    // wait-for-quality-gate abortPipeline: true
                }
            }
        }
        stage('Deploy to Staging') {
             when {
                // Sąlyga pereiti į kitą etapą, pvz., jei kokybės vartai sėkmingai įvykdyti
                expression { return BUILD_STATUS == 'SUCCESS' }
             }
             steps {
                script {
                    echo 'Deploying to Staging...'
                    // Diegimo žingsniai
                }
             }
        }
    }
}