Software-Test

Software-Test

Dieser Artikel scheint thematisch einem anderen zu gleichen. Hilf mit, die Artikel unter einem Lemma zu vereinigen oder inhaltlich besser voneinander abzugrenzen.

Der Doppeleintrag wird auch unter Artikel zum gleichen Thema diskutiert. Vermerke dort bitte auch Hinweise auf andere Diskussionen zur Problematik und streiche erledigte Einträge, um die Liste aktuell und übersichtlich zu halten! Sollte sich wirklich kein Eintrag auf besagter Seite befinden, füge ihn bitte hinzu!

Der Doppeleintrag zum Artikel Software-Test befindet sich unter Testen. –Xflupp 13:53, 15. Jun 2005 (CEST)

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 und zu dokumentieren.

Es handelt sich um eine Aktivität 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) aufzufinden oder deren Wiederauftreten (Regression) zu vermeiden.

Inhaltsverzeichnis

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 allgemein

Man kann Testmethoden folgendermaßen klassifizieren:

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.

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 Effizienz 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.

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.

Werkzeuge für Software-Tests

Werkzeuge für das automatisierte Software-Testing sind z.B.

Siehe auch

See also: Software-Test, Akzeptanztest, Analyse, Bananaware, Black-Box-Test, C-Plusplus, Cactus, Computerprogramm, CppUnit