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
}
}
}
}
}