Eine Software zu testen bedeutet, festzustellen, ob die Software an sie gestellte Anforderungen auch erfüllt.
Anforderungen in Umgangssprache sind jedoch nicht geeignet als Grundlage eines Tests. ( "Naja, das Ding soll halt nicht abstürzen" oder "Wenn ich da vorne 100 eingebe, dann soll da hinten irgendwas rauskommen.. " )
Zudem ist es nicht möglich komplexe Applikationen präzise zu beschreiben.
Zum Testen von Software ist es also wichtig, die große Komplexität einer Applikation in kleine testbare Programmfragmente ( = Funktionen / Prozeduren) aufzuteilen. Diese Programmfragmente sollten dann EINE Aufgabe erledigen, so daß man dieses Programmfragment testet in dem man beschreibt:
- welches Programmfragment ( Modul, Klasse, Funktion, Sub ) teste ich - welche Eingabewerte ( Vorbedingungen ) definiere ich - welche Ausgabewerte ( Nachbedingungen ) erwarte ich
Unter Umständen wird es also nötig sein den bestehenden Programmcode zu überarbeiten und in kleine testbare Einheiten zu zerlegen.