Sobes.tech
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...'
                    // განთავსების ნაბიჯები
                }
             }
        }
    }
}