Software-Test
Als Software-Test bezeichnet man in der Informatik ein mögliches Verfahren zur teilweisen Verifikation bzw. Validierung eines Programms.Ein Software-Test dient der Qualitätssicherung eines neu erstellten oder geänderten Softwareprogramms. Dabei geht es prinzipiell darum, das tatsächliche Verhalten mittels Testfällen zu untersuchen und die Ergebnisse mit den erwarteten Ergebnissen (Anforderungskatalog, Normen usw...) zu vergleichen.
Es handelt sich um eine Phase der Softwareentwicklung in der das Computerprogramm auf seine Funktionalitäten hin getestet wird. Der Test kann verschiedene Ausprägungen haben: So gibt es den Code and Unit-Test (Komponententest), der vom Entwickler durchgeführt wird und bei dem das Programm auf Syntax- und Logikfehler überprüft wird. Beim Integrationstest testet die Softwareproduktion in einer Testumgebung die Einbindung der Software in die bereits vorhandene Softwarearchitektur.
In der Praxis werden Tests eingesetzt, um Programmfehler (Bugs) oder deren Wiederauftreten (Regression) zu vermeiden.
Man kann Testmethoden folgendermaßen klassifizieren:
- Statische Tests
- Dynamische Tests
- Strukturorientierte Tests
- Funktionsorientierte Tests
- Funktionale Äquivalenzklassenbildung
- Zustandsbasierter Test
- Ursache-Wirkungs-Analyse
- Black-Box-Test
- White-Box-Test
Table of contents |
2 Klassifikation nach Ablauf, Umfang 3 Klassifikation nach Informationsstand 4 Automatisierte Tests |
Black-Box-Tests decken besonders viele Fehler auf, erweisen sich in der Praxis aber zum einen als organisatorisch aufwändig und zum anderen manchmal auch als sozial unverträglich wegen eventueller Spannungen zwischen den Test- und den Entwicklungsabteilungen.
Grey-Box-Tests (Testgesteuerte Programmierung) erweisen sich derzeit in der Praxis als besonders erfolgreich, da sie die Kostengünstigkeit von White-Box-Tests mit der Effizenz von Black-Box-Tests verbinden, sind allerdings außerhalb ihres üblichen Kontext des Extreme Programming oder zumindest der testgesteuerten Programmierung nicht unkritisch zu betrachten, da Software-Entwickler sonst leicht zu White-Box-Tests abdriften und so die Black-Box-Test-artigen Vorteile der Grey-Box-Tests verlieren.
Werkzeuge für das automatisierte Software-Testing sind z.B. JUnit und Cactus für Java.
Siehe auch: Software-Life-Cycle
Abgrenzung
In ihrem Selbstverständnis sind Tests klar abzugrenzen von
Als Naturwissenschaftler kann man sich einen Test dabei als Experiment vorstellen, das nicht nur mit den gleichen Bedingungen, sondern auch unterschiedlichen Bedingungen, den Test-Parametern, genau definiert wiederholbar sein muss.Klassifikation nach Ablauf, Umfang
Es gibt unter anderem folgende Bezeichnungen für spezielle Arten von Tests:Klassifikation nach Informationsstand
Neben dieser Einordnung anhand des Ablaufs und Umfangs des Tests lassen sich Tests auch nach Wissen über die zu testende Komponente einordnen:
White-Box-Tests sind kurzfristig kostengünstiger, zeigen in der Praxis allerdings eine äußerst hohe Durchlässigkeit für Fehler.Automatisierte Tests
Für den Praxiseinsatz ist die Automatisierung von Tests besonders wichtig. Tests werden im Idealfall nach jeder Änderung ausgeführt. Bei nicht automatisierten Tests wäre dabei der für das Durchführen der Tests notwendige Aufwand zu groß, sodass man häufig auf die Tests verzichten würde, was wiederum den Nutzen der Tests stark verringert.