Grundlagen des Software-Testens: Methoden und Strategien
Eingeordnet in Informatik
Geschrieben am in
Deutsch mit einer Größe von 6,65 KB
Grundlagen des Software-Testens
Software-Testen ist der Prozess, ein Programm mit der Absicht auszuführen, Fehler zu finden, bevor es den Endverbraucher erreicht.
Ziele der Tests
- Fehler finden: Ein Test gilt als erfolgreich, wenn er einen Defekt aufdeckt.
- Ein Test schlägt fehl, wenn Mängel vorhanden sind, aber nicht entdeckt werden.
Verifikation und Validierung
- Verification Test: Prüfung, ob das Design die Spezifikationen erfüllt.
- Validation Test: Prüfung, ob die Analyse-Anforderungen qualifiziert werden.
- Betrieb: Sicherstellung eines sauberen Betriebs.
Merkmale der Testbarkeit
- Hinweis: Die Ergebnisse jedes Testfalls müssen beobachtbar sein.
- Kontrollierbarkeit: Inwieweit Tests automatisiert und optimiert werden können.
- Zerlegung: Die Tests müssen durchführbar sein.
- Einfachheit: Reduzierung komplexer Architektur und Logik zur Vereinfachung der Prüfung.
- Stabilität: Nur wenige Änderungen sind während der Prüfung erforderlich.
- Verständlichkeit: Ergibt sich aus der Konstruktion.
Was leisten die Tests?
Tests prüfen die Fehler-Compliance, die Performance-Anforderungen und geben Aufschluss über die Qualität.
Wer testet die Software?
- Entwickler: Verstehen das System, sind jedoch oft voreingenommen und werden durch den Termindruck der „Lieferbarkeit“ geleitet.
- Unabhängige Tester: Müssen das System verstehen, versuchen jedoch gezielt, Fehler herbeizuführen, und handeln qualitätsorientiert.
White-Box-Testing: Strukturorientierte Prüfung
Dieser Test widmet sich dem Code. Er wird mit der Absicht ausgeführt, alle Pfade zu prüfen – unter Nutzung von Flussdiagrammen, zyklomatischer Komplexität und Graphen-Matrizen.
Konzept und Terminologie
Beim White-Box-Test (auch Glasbox- oder transparenter Test genannt) ist der Code bekannt. Das Ziel ist es, sicherzustellen, dass alle Anweisungen und Bedingungen mindestens einmal ausgeführt werden.
Testarten und Metriken
- Testarten: Testabdeckung, Bedingungstests, Schleifentests (Loop-Tests).
- Warum White-Box? Oft wird fälschlicherweise angenommen, dass ein Basis-Pfad kaum eine Chance hat, ausgeführt zu werden. Druckfehler, Logikfehler und falsche Annahmen stehen jedoch umgekehrt proportional zur Wahrscheinlichkeit, dass ein Pfad durchlaufen wird.
Flussgraph-Notation und Komplexität
- Flow Graph Notation: Stellt die logische Ablaufsteuerung grafisch dar. Jede Anweisung hat ein entsprechendes Symbol.
- Zyklomatische Komplexität: Eine Software-Metrik für das quantitative Maß der logischen Komplexität eines Programms. Sie definiert die Anzahl der unabhängigen Wege durch das Programm und gibt das Limit der durchzuführenden Tests an.
- Unabhängiger Pfad: Ein Pfad, der mindestens eine neue Anweisung oder eine neue Bedingung (Prädikat-Knoten) einführt.
- Matrix-Grafiken: Eine quadratische Matrix zur Bestimmung der Basis-Pfade, deren Größe der Anzahl der Knoten entspricht.
Abdeckungsgrade
- Satz-Abdeckung: Erfordert mehrere Testfälle; eine 100%-Abdeckung ist oft unmöglich.
- Trace Coverage (Spur-Abdeckung): Da die Anzahl möglicher Ausführungspfade begrenzt sein kann, wird das Verhältnis von beobachteten zu möglichen Spuren als Index genutzt.
- Schleifen-Abdeckung: Schleifen sind kontrollierte Entscheidungssegmente. Die Anzahl der Durchläufe muss präzise geprüft werden, da Abweichungen (einmal mehr oder weniger) oft unerwünschte Folgen haben.
Einschränkungen
White-Box-Tests zeigen zwar, was ein Programm tut, aber nicht unbedingt, ob es das tut, was der Anwender tatsächlich benötigt.
Black-Box-Testing: Funktionsorientierte Prüfung
Konzept und Terminologie
Beim Black-Box-Test (opaker Kasten) ist nur die Schnittstelle bekannt. Der Fokus liegt auf den funktionalen Anforderungen. Es wird geprüft, ob eine Reihe von Eingabebedingungen die Anforderungen des Programms vollständig erfüllt. Es ist die Alternative zum White-Box-Test.
Methoden der Black-Box-Tests
- Abdeckung: Aufruf aller Funktionen (100%).
- Äquivalenzklassenbildung: Aufteilung der Eingabedaten in Klassen, um Testfälle abzuleiten (z. B. Präfixe, Zeichenkettenlängen, erlaubte Zeichen wie Buchstaben, Ziffern oder $).
- Grenzwertanalyse: Fehler treten oft an den Grenzen auf. Wenn ein Eingang im Bereich von A bis B liegt, sollten die Werte A-1, A, A+1 sowie B-1, B, B+1 getestet werden.
Spezielle Testumgebungen
Tests für grafische Benutzeroberflächen (GUI) unter Windows umfassen Prüfungen von Menüs, Mausbedienung, Dateneingabe sowie Dokumentation und Hilfe.
Software-Teststrategien
Strategische Ansätze
- Unit-Tests: Testen einzelner Code-Module.
- Integrationstests: Prüfung des Zusammenspiels wachsender Modulgruppen während des Systembaus.
- Regressionstests: Sicherstellung, dass Änderungen keine neuen Fehler verursachen.
- Validierungstests: Überprüfung der Erfüllung aller Anforderungen.
Probleme bei fehlender Strategie
- Motivation: Tests werden oft als unangenehm oder langweilig empfunden.
- Big Bang: Alles erst am Ende zu testen führt zu Fehlern an allen Stellen und erschwert die Ursachendiagnose massiv.
Integration und Validierung im Detail
- Integrationstests: Können strukturell (ähnlich White-Box, aber auf höherer Ebene der Modulkommunikation) oder funktional erfolgen.
- Validierungstests: Nutzen ähnliche Techniken wie andere Tests, aber mit dem Ziel, die Anforderungen (Use Cases) zu bestätigen. Dies umfasst auch Leistung, Kapazität sowie Alpha-Tests (durch Entwickler) und Beta-Tests (durch Benutzer).
- System-Test: Überprüfung des fertigen Gesamtsystems auf Fehler, Robustheit, Leistung, Zuverlässigkeit, Sicherheit, Benutzerfreundlichkeit und Installation.