Sobes.tech
Middle

Jakie cechy kontroli (Quality Gates) znasz?

sobes.tech AI

Odpowiedź od AI

Bramy jakości (Quality Gates) to punkty w cyklu życia rozwoju oprogramowania, w których podejmuje się decyzję, czy produkt lub jego część mają wystarczającą jakość, aby przejść do kolejnego etapu.

Kluczowe bramy jakości obejmują:

  • Stabilność kompilacji: Udana kompilacja i brak krytycznych błędów w kompilacji.
  • Wyniki analizy statycznej kodu: Zgodność ze standardami kodowania, brak krytycznych luk bezpieczeństwa lub "code smells".
  • Pokrycie kodu testami: Wystarczające pokrycie testami jednostkowymi, integracyjnymi i innymi testami automatycznymi.
  • Wyniki testów automatycznych: Przejście wszystkich lub ustalonego procentu testów automatycznych (jednostkowych, integracyjnych, funkcjonalnych, regresyjnych).
  • Brak krytycznych defektów: Brak blokujących lub krytycznych błędów wykrytych podczas testów.
  • Wyniki testów ręcznych: Udane wykonanie zaplanowanych scenariuszy testów ręcznych i testów akceptacyjnych.
  • Zgodność z wymaganiami: Produkt funkcjonalnie zgodny ze specyfikacjami i wymaganiami.
  • Wydajność i skalowalność: Zadowalające wyniki testów obciążeniowych i stresowych.
  • Bezpieczeństwo: Przejście testów bezpieczeństwa, w tym analiza statyczna bezpieczeństwa (SAST), analiza dynamiczna bezpieczeństwa (DAST) i testy penetracyjne.
  • Dokumentacja: Aktualność i kompletność dokumentacji technicznej i użytkowej.

Przykłady metryk dla bram jakości:

  • Pokrycie kodu testami >= 80%
  • Liczba krytycznych błędów = 0
  • Wynik testów automatycznych = 100% pomyślnych
  • Ocena analizy statycznej kodu >= A

Przykład pipeline Jenkins z bramą jakości:

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                script {
                    echo 'Budowanie...'
                    // Wywołanie skryptu budowania
                }
            }
        }
        stage('Analiza statyczna') {
            steps {
                script {
                    echo 'Przeprowadzanie analizy statycznej...'
                    // Integracja z SonarQube lub innym narzędziem
                }
            }
        }
        stage('Testy jednostkowe') {
            steps {
                script {
                    echo 'Uruchamianie testów jednostkowych...'
                    // Uruchomienie testów jednostkowych i generowanie raportów
                }
            }
        }
        stage('Sprawdzanie bramy jakości') {
            steps {
                script {
                    echo 'Sprawdzanie bramy jakości...'
                    // Przykład sprawdzenia z SonarQube z użyciem bramy jakości
                    // wait-for-quality-gate abortPipeline: true
                }
            }
        }
        stage('Deploy na staging') {
             when {
                // Warunek przejścia do następnego etapu, np. jeśli brama jakości została pomyślnie zaliczona
                expression { return BUILD_STATUS == 'SUCCESS' }
             }
             steps {
                script {
                    echo 'Deploy na staging...'
                    // Kroki wdrożeniowe
                }
             }
        }
    }
}