39 Integrierte Qualitätssicherung: Einführung in Quality Gates

Quality Gates sind eine Methode der integrierten Qualitätssicherung, die darauf abzielt, sicherzustellen, dass der Code bestimmte festgelegte Qualitätskriterien erfüllt, bevor er in den Haupt-Branch integriert oder in die Produktionsumgebung bereitgestellt wird. Sie dienen als automatische Kontrollpunkte in einer CI/CD-Pipeline und können verschiedene Aspekte der Code-Qualität, wie Tests, Sicherheitslücken oder statische Code-Analyse-Ergebnisse, überwachen.

39.1 Funktionsweise von Quality Gates

Ein Quality Gate definiert eine Reihe von Metriken oder Kriterien, die der Code erfüllen muss, um als qualitativ hochwertig betrachtet zu werden. Diese Kriterien können flexibel an die Anforderungen des jeweiligen Projekts angepasst werden. Sobald ein Quality Gate in einer Pipeline eingerichtet ist, blockiert es den Fortschritt der Pipeline, falls eine oder mehrere Bedingungen nicht erfüllt werden.

Beispiele für typische Kriterien in einem Quality Gate: - Eine festgelegte Testabdeckung (z. B. mindestens 80 % der Codezeilen durch Unit-Tests abgedeckt) - Keine neuen Sicherheitslücken oder Schwachstellen - Einhaltung von Codierungsstandards und -konventionen - Minimale Anzahl von Code-Duplikaten - Keine neuen kritischen Bugs oder Code-Smells in der statischen Analyse

39.2 Integration von Quality Gates in GitLab

In GitLab CI/CD-Pipelines lassen sich Quality Gates mithilfe von Tests, statischen Code-Analyse-Tools und Sicherheitsüberprüfungen integrieren. Diese Mechanismen lassen sich so konfigurieren, dass sie die Pipeline nur fortsetzen, wenn die zuvor definierten Qualitätskriterien erfüllt sind. GitLab bietet verschiedene Möglichkeiten, Quality Gates umzusetzen, von automatisierten Tests bis hin zur Integration externer Tools.

39.3 Rolle von automatisierten Tests und Linting

Automatisierte Tests und Linting sind wesentliche Bestandteile eines Quality Gates. Tests, wie Unit-Tests, Integrationstests und End-to-End-Tests, gewährleisten, dass der Code funktional korrekt ist und keine ungewollten Seiteneffekte auftreten. Linting überprüft den Code auf Einhaltung von Codierungsstandards und potenzielle Fehlerquellen, die während der Entwicklung eingeführt wurden.

Beispiel für ein Quality Gate in einer GitLab-Pipeline:

stages:
  - test
  - lint
  - quality_gate

test_job:
  stage: test
  script:
    - npm test

lint_job:
  stage: lint
  script:
    - eslint src/

quality_gate_job:
  stage: quality_gate
  script:
    - echo "Quality Gate: Ensure all metrics are passed"
  allow_failure: false

Hier wird sichergestellt, dass der Test- und Lint-Prozess erfolgreich abgeschlossen ist, bevor die Pipeline fortgesetzt wird. Falls eines dieser Kriterien nicht erfüllt ist, wird die Pipeline blockiert.

39.4 Vorteile von Quality Gates


Weitere Informationen finden sich in der GitLab-Dokumentation.