Middle
რომელი კონტროლის თვისებები (Quality Gates) იცით?
sobes.tech AI
პასუხი AI-სგან
ხარისხის კარიბჭეები (Quality Gates) — ეს სერტიფიკატები პროგრამული უზრუნველყოფის განვითარების ციკლში, სადაც მიიღება გადაწყვეტილება პროდუქტის ან მისი ნაწილის საკმარისი ხარისხის შესახებ, რათა გადადგეს შემდეგი ეტაპზე.
ძირითადი ხარისხის კარიბჭეები მოიცავს:
- შენახვის სტაბილურობა: წარმატებული კომპილაცია და კრიტიკული შეცდომების არარსებობა შენახვაში.
- სტატიკური კოდის ანალიზის შედეგები: კოდირების სტანდარტებთან შესაბამისობა, კრიტიკული სუსტი წერტილები ან "code smells" არარსებობა.
- კოდის დაფარვა ტესტებით: საკმარისი დაფარვა ერთეულებით, ინტეგრაციით და სხვა ავტომატიზირებულ ტესტებით.
- ავტომატიზირებული ტესტების შედეგები: ყველა ან განსაზღვრული პროცენტული მაჩვენებელი ავტომატიზირებული ტესტების შესრულება.
- კრიტიკული დეფექტების არარსებობა: ბლოკირებელი ან კრიტიკული შეცდომების არარსებობა ტესტირების შედეგებით.
- ხელით ტესტირების შედეგები: დაგეგმილი ხელით ტესტის სცენარების წარმატებული გავლა და მიღება.
- მოთხოვნებთან შესაბამისობა: პროდუქტი ფუნქციონალურად პასუხობს სპეციფიკაციებს და მოთხოვნებს.
- შესრულება და მასშტაბურობა: დატვირთვის და სტრეს-ტესტების დასაკმაყოფილებელი შედეგები.
- უსაფრთხოება: უსაფრთხოების შემოწმებების წარმატებით გავლა, მათ შორის სტატიკური უსაფრთხოების ანალიზი (SAST), დინამიური უსაფრთხოების ანალიზი (DAST) და შეჭრის ტესტირება (Penetration Testing).
- დოკუმენტაცია: ტექნიკური და მომხმარებლის დოკუმენტაციის აქტუალობა და სრულიობა.
Quality Gates-ის მეტრიკების მაგალითები:
- კოდის დაფარვა ტესტებით >= 80%
- კრიტიკული შეცდომების რაოდენობა = 0
- ავტომატიზირებული ტესტების შესრულების შედეგი = 100% წარმატებული
- სტატიკური კოდის ანალიზის შეფასება >= A
Jenkins Pipeline-ის მაგალითი, Quality Gate-თან ერთად:
pipeline {
agent any
stages {
stage('Build') {
steps {
script {
echo 'Building...'
// მშენებლობის სკრიპტის გამოძახება
}
}
}
stage('Static Analysis') {
steps {
script {
echo 'Running static analysis...'
// ინტეგრაცია SonarQube ან სხვა ინსტრუმენტთან
}
}
}
stage('Unit Tests') {
steps {
script {
echo 'Running unit tests...'
// ერთეულების ტესტების გაშვება და ანგარიშების შეგროვება
}
}
}
stage('Quality Gate Check') {
steps {
script {
echo 'Checking Quality Gate...'
// მაგალითი შემოწმების SonarQube-ის გამოყენებით და Quality Gate-ის გამოყენებით
// wait-for-quality-gate abortPipeline: true
}
}
}
stage('Deploy to Staging') {
when {
// პირობა შემდეგი ეტაპზე გადასასვლელად, მაგალითად, თუ Quality Gate წარმატებით გაიარა
expression { return BUILD_STATUS == 'SUCCESS' }
}
steps {
script {
echo 'Deploying to Staging...'
// განთავსების ნაბიჯები
}
}
}
}
}