Sobes.tech
Middle

Ի՞նչ որակների վերահսկում (Quality Gates) եք գիտեք։

sobes.tech AI

Պատասխան AI-ից

Որակության դարպասներ (Quality Gates) — դա ծրագրային ապահովման զարգացման կյանքի ցիկլի կետեր են, որտեղ ընդունվում է որոշում՝ արդյոք արտադրանքը կամ դրա մասնիկը բավարար որակ ունի հաջորդ փուլին անցնելու համար:

Հիմնական որակների դարպասները ներառում են՝

  • Կառուցման կայունություն: Հաջողակոմպիլացիա և критիկական սխալների բացակայություն կառուցման մեջ:
  • Կոդի ստատիկ վերլուծության արդյունքներ: Կոդավորման ստանդարտների համապատասխանություն, критիկական թերություններ կամ "code smells" բացակայություն:
  • Կոդի ծածկույթ թեստերով: Դատապարտված ծածկույթ միավորային, ինտեգրացիոն և այլ ավտոմատացված թեստերով:
  • Ավտոմատացված թեստերի արդյունքներ: Բոլոր կամ նշված տոկոսով ավտոմատացված թեստերի անցկացման արդյունքներ:
  • Կրիտիկական թերությունների բացակայություն: Թեստավորման արդյունքներով հայտնաբերված բլոկավորող կամ կրիտիկական սխալների բացակայություն:
  • Հատուկ թեստավորման արդյունքներ: Պլանավորված ձեռքով թեստային սցենարների հաջող անցում և ընդունում:
  • Անհրաժեշտությունների համապատասխանություն: Ապրանքը ֆունկցիոնալ առումով համապատասխանում է սպեցիֆիկացիաներին և պահանջներին:
  • Արդյունավետություն և մասշտաբայնություն: Լավ արդյունքներ բեռնում և սթրես-թեստավորումներից:
  • Անվտանգություն: Անվտանգության ստատիկ և դինամիկ վերլուծությունների, ինչպես նաև ներխուժման թեստերի հաջող անցում:
  • Փաստաթղթավորում: Տեխնիկական և օգտվողական փաստաթղթերի արդիականություն և լրում:

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...'
                    // Դեպլոյմենտի քայլեր
                }
             }
        }
    }
}