Software-Qualitätssicherung: Statische & Dynamische Prüfung
Eingeordnet in Informatik
Geschrieben am in
Deutsch mit einer Größe von 2,98 KB
Statische und dynamische Prüfung
Die Inspektion von Software umfasst zwei grundlegende Ansätze:
- Statische Prüfung: Analyse der statischen Systemdarstellungen zur Fehlererkennung, ohne das Programm auszuführen. Dies kann durch dokumentenbasierte Werkzeuge und Code-Analysen ergänzt werden.
- Dynamische Prüfung (Testen): Überprüfung des Verhaltens durch Ausführung des Systems mit Testdaten, um die operative Leistung zu beobachten.
Test-Programm
Tests können das Vorhandensein von Mängeln aufzeigen, jedoch nicht deren Abwesenheit beweisen. Sie sind das wichtigste Verfahren zur Validierung nicht-funktionaler Anforderungen. Für eine vollständige Abdeckung der Verification & Validation (V&V) sollten statische und dynamische Prüfungen kombiniert werden.
Test-Typen
- Validierungstest: Zeigt, dass die Software den Anforderungen entspricht. Ein erfolgreicher Test belegt die korrekte Umsetzung.
- Fehlertest: Entwickelt, um Mängel im System zu entdecken. Ein erfolgreicher Test zeigt hier das Vorhandensein eines Fehlers.
Hinweis: Testen und Debuggen sind unterschiedliche Prozesse (Fehler finden → Reparatur → Retest).
Inspektionsprozess
Der Prozess umfasst: Planung → Eigenschaften → Meeting → Rework → Monitoring.
Kontrollverfahren
Das Team prüft den Code und zugehörige Dokumente vor der Inspektion. Entdeckte Fehler werden dokumentiert, behoben und ggf. erneut geprüft.
Kontroll-Checklisten
Checklisten helfen bei der Identifikation häufiger Fehler, die oft von der Programmiersprache abhängen (z. B. Schleifenbedingungen, Vektorgrenzen, Konstanten).
Systemtests
Systemtests basieren auf Spezifikationen, die die Integration mehrerer Komponenten umfassen:
- Integrationstest: Das Testteam hat Zugriff auf den Quellcode.
- Releasetest: Das System wird als „Black Box“ getestet, um das Vertrauen in die Anforderungserfüllung zu stärken.
Spezielle Testverfahren
- Performance-Test: Prüfung von emergenten Eigenschaften wie Leistung und Zuverlässigkeit unter steigender Last.
- Stress-Test: Belastung des Systems über die Designvorgaben hinaus, um das Verhalten bei Fehlern und katastrophalen Ausfällen zu prüfen.
- White-Box-Test (Strukturtest): Zugriff auf den Quellcode; Ziel ist die Ausführung aller Programm-Anweisungen.
- Black-Box-Test (Funktionaler Test): Kein Zugriff auf den Quellcode; Fokus auf Ein- und Ausgänge sowie Funktionalität.
- Anforderungsbasierte Tests: Jede Anforderung wird durch eine spezifische Testreihe validiert.
- Regressionstest: Sicherstellung, dass Änderungen an der Software keine bestehenden Funktionen beeinträchtigen.