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
}
}
}
}
}