Quality Control & Assurance

Lernhilfe zum Thema Qualitätsmanagement in der Softwaretechnik

1. Grundlagen des Qualitätsmanagements (QM)

Qualitätsmanagement umfasst alle Tätigkeiten, die darauf abzielen, die Qualität von Software zu planen, zu steuern und zu verbessern. Es besteht aus zwei Hauptbereichen: der konstruktiven und der analytischen Qualitätssicherung.

Konstruktive Qualitätssicherung

Fokussiert sich auf die Prävention von Fehlern. Sie stellt sicher, dass die Entwicklungsprozesse von Anfang an auf Qualität ausgerichtet sind.

  • Technische Maßnahmen: Auswahl geeigneter Methoden, Sprachen und Werkzeuge (z.B. Objektorientierung, Typisierung, Versionsmanagement).
  • Organisatorische Maßnahmen: Vorgaben und Richtlinien für Entwicklungsabläufe.

Analytische Qualitätssicherung

Fokussiert sich auf das Finden von Fehlern, nachdem sie entstanden sind. Sie überprüft die entwickelten Artefakte systematisch.

  • Analysierende Verfahren: Untersuchung ohne Ausführung (z.B. Reviews, statische Analysen).
  • Testende Verfahren: Ausführung von Systemkomponenten (z.B. Black-Box- und White-Box-Tests).

2. Analytische Verfahren: Testen

Testen ist die systematische Ausführung eines Programms, um möglichst viele Fehler zu finden. Ein Test besteht aus Eingabedaten und dem erwarteten Ergebnis.

Black-Box-Tests

Diese Tests werden basierend auf den Spezifikationen durchgeführt, ohne Kenntnis der internen Implementierung.

  • Funktionsorientierter Test: Testet jede Funktion isoliert für Standardeingaben. Einfach, aber nicht besonders leistungsfähig.
  • Äquivalenzklassenbildung: Reduziert die Anzahl der möglichen Tests, indem der Definitionsbereich der Variablen in Klassen partitioniert wird. Randwertanalysen sind hier besonders wichtig.
  • Regressionstests: Wiederholung von Tests nach Änderungen am Code, um sicherzustellen, dass keine neuen Fehler entstanden sind.

White-Box-Tests (Glass-Box)

Diese Tests nutzen das Wissen über die interne Struktur der Software, um Testfälle zu entwerfen.

  • Kontrollflusstests: Zielen darauf ab, den Kontrollflussgraphen des Programms abzudecken. Kriterien sind Anweisungs-, Zweig-, Bedingungs- oder Pfadüberdeckung.
  • Datenflusstests: Überprüfen die Nutzung von Daten über den Programmablauf hinweg.
  • Mutationstests: Erzeugt absichtlich kleine Fehler im Code und überprüft, ob die Tests diese Mutationen erkennen.

Teststufen und die Testpyramide

Tests werden in verschiedenen Stufen durchgeführt. Die Testpyramide beschreibt die ideale Verteilung von Tests:

  • Unit Tests (Basis): Testen einzelne Komponenten isoliert. Viele automatisierte, kostengünstige Tests.
  • Integrationstests (Mitte): Testen die Interaktion zwischen Komponenten. Weniger Tests als Unit Tests.
  • Systemtests (Spitze): Testen das gesamte System im Zusammenspiel. Am aufwändigsten und daher am wenigsten Tests.

In agilen Projekten ist diese Pyramidenform das Ziel. Klassische Projekte haben oft eine umgekehrte Pyramide, mit vielen manuellen Systemtests.

Continuous Integration (CI)

CI bedeutet, dass bei jeder Code-Änderung in das zentrale Repository automatisch eine neue Version des Systems erstellt und getestet wird.

  • Eine CI-Pipeline führt automatisch Bau-, Linting- und Testschritte aus, um Fehler frühzeitig zu erkennen.
  • Das verhindert, dass fehlerhafter Code die Arbeit anderer Teammitglieder blockiert.
  • Oft wird eine "doppelte Integration" praktiziert: Zuerst lokal testen, dann erst in das Haupt-Repository hochladen.

3. Agiles Vorgehen beim Testen

Testmanagement in Scrum

In Scrum ist das Testen die Verantwortung des gesamten Teams.

  • Der Scrum Master sorgt für die notwendige Testinfrastruktur und die Ausbildung.
  • Testaufgaben werden explizit in der Sprintplanung berücksichtigt oder sind Teil der "Definition of Done".
  • Das Team legt die Teststrategie fest und plant die Testinhalte.

Test-Ende-Kriterien

Die Frage, wann genug getestet wurde, ist entscheidend. Mögliche Kriterien sind:

  • Auslaufen der Ressourcen (Zeit/Geld).
  • Vollständige Umsetzung des Testplans.
  • Erreichen einer bestimmten Testabdeckung (z.B. Anweisungsüberdeckung von 100%).
  • Abnahmetests (Akzeptanztests) bestehen, die oft Teil der "Definition of Done" sind.