Sobes.tech
Middle

Qaysi sifatlar nazorat qilish (Quality Gates) haqida bilasiz?

sobes.tech AI

AIdan javob

Sifat darvozalar (Quality Gates) dasturiy ta'minotni ishlab chiqishning hayot tsiklidagi nuqtalar bo'lib, u yerda mahsulot yoki uning bir qismi keyingi bosqichga o'tish uchun etarli sifatga ega ekanligi haqida qaror qabul qilinadi.

Asosiy sifat darvozalariga quyidagilar kiradi:

  • Yig'ish barqarorligi: muvaffaqiyatli yig'ish va yig'ishda kritik xatoliklarning bo'lmasligi.
  • Statik kod tahlilining natijalari: kodlash standartlariga muvofiqlik, kritik xavfsizlik zaifliklari yoki "code smells" ning bo'lmasligi.
  • Kodni test qilish bilan qamrov: birlik, integratsiya va boshqa avtomatlashtirilgan testlar bilan etarli qamrov.
  • Avtomatlashtirilgan testlarning natijalari: barcha yoki belgilangan foizdagi avtomatlashtirilgan testlar muvaffaqiyatli o'tkazilishi.
  • Kritik xatoliklarning bo'lmasligi: testlar davomida aniqlangan bloklovchi yoki kritik xatoliklarning bo'lmasligi.
  • Qo'lda test natijalari: rejalashtirilgan qo'lda test ssenariylarini va qabul qilish testlarini muvaffaqiyatli o'tkazish.
  • Talablarga moslik: mahsulot funksional ravishda spetsifikatsiyalar va talablar bilan mos keladi.
  • Ishlash va kengaytirish imkoniyati: yuk va stress testlarida qoniqarli natijalar.
  • Xavfsizlik: xavfsizlik tekshiruvlaridan o'tish, jumladan, statik xavfsizlik tahlili (SAST), dinamik xavfsizlik tahlili (DAST) va hujumga qarshi testlar (Penetration Testing).
  • Hujjatlar: texnik va foydalanuvchi hujjatlarning yangiligi va to'liqligi.

Sifat darvozalariga misollar:

  • Kodni testlar bilan qamrov >= 80%
  • Kritik xatoliklar soni = 0
  • Avtomatlashtirilgan testlarning natijasi = 100% muvaffaqiyatli
  • Statik kod tahlilining bahosi >= A

Jenkins pipeline bilan sifat darvozasining misoli:

pipeline {
    agent any
    stages {
        stage('Yig'ish') {
            steps {
                script {
                    echo 'Yig'ish...'
                    // Yig'ish skriptini chaqirish
                }
            }
        }
        stage('Statik tahlil') {
            steps {
                script {
                    echo 'Statik tahlil o'tkazilmoqda...'
                    // SonarQube yoki boshqa vosita bilan integratsiya
                }
            }
        }
        stage('Birinchi testlar') {
            steps {
                script {
                    echo 'Birinchi testlar o'tkazilmoqda...'
                    // Birlik testlarini ishga tushirish va hisobotlarni yaratish
                }
            }
        }
        stage('Sifat darvozasini tekshirish') {
            steps {
                script {
                    echo 'Sifat darvozasini tekshirish...'
                    // SonarQube bilan Quality Gate ni tekshirish misoli
                    // wait-for-quality-gate abortPipeline: true
                }
            }
        }
        stage('Stagingga joylash') {
             when {
                // Keyingi bosqichga o'tish sharti, masalan, agar Quality Gate muvaffaqiyatli o'tgan bo'lsa
                expression { return BUILD_STATUS == 'SUCCESS' }
             }
             steps {
                script {
                    echo 'Stagingga joylash...'
                    // Joylash uchun qadamlar
                }
             }
        }
    }
}