Java Reference
In-Depth Information
3.1.4 Test
In der Testphase muss überprüft werden, ob das entwickelte Programm die Problemstellung korrekt
und vollständig löst. Dazu wird das Programm mit verschiedenen Initialzuständen bzw. Eingabe-
werten ausgeführt und überprüft, ob es die erwarteten Ergebnisse liefert. Man kann eigentlich im-
mer davon ausgehen, dass Programme nicht auf Anhieb korrekt sind, was zum einen an der hohen
Komplexität des Programmentwicklungsprozesses und zum anderen an der hohen Präzision liegt,
die die Formulierung von Programmen erfordert. Insbesondere die Einbeziehung von Randbedin-
gungen wird von Programmieranfängern häufig vernachlässigt, sodass das Programm im Normalfall
zwar korrekte Ergebnisse liefert, in Ausnahmefällen jedoch versagt.
Genauso wie der Algorithmusentwurf ist auch das Testen eine kreative Tätigkeit, die viel Erfahrung
voraussetzt und darüber hinaus ausgesprochen zeitaufwendig ist. Im Durchschnitt werden ca. 40 %
der Programmentwicklungszeit zum Testen und Korrigieren verwendet.
Auch durch noch so systematisches Testen ist es in der Regel nicht möglich, die Abwesenheit von
Fehlern zu beweisen. Es kann nur die Existenz von Fehlern nachgewiesen werden. Aus der Korrekt-
heit des Programms für bestimmte überprüfte Initialzustände bzw. Eingabewerte kann nicht auf die
Korrektheit für alle möglichen Initialzustände bzw. Eingabewerte geschlossen werden.
Im Folgenden werden ein paar Teststrategien vorgestellt:
• Das Testen sollte aus psychologischen Gründen möglichst nicht nur vom Programmierer selbst
bzw. allein durchgeführt werden. Häufig werten Programmierer das Entdecken von Fehlern
als persönlichen Misserfolg und sind daher gar nicht daran interessiert, Fehler zu finden. Sie
lassen daher die erforderliche Sorgfalt vermissen.
• Konstruieren Sie sogenannte Testmengen , das sind Mengen von möglichen Initialzuständen
bzw. Eingabewerten für das Programm. Die Testmengen sollten dabei typische und untypische
Initialzustände bzw. Eingabewerte enthalten. Auf jeden Fall müssen Grenzwerte berücksich-
tigt werden, das sind Werte, die gerade noch als Eingabewerte zugelassen sind, wie bspw. der
kleinst- oder größtmögliche Wert bei Zahlen oder der leere Text bei Texteingaben.
• Überlegen Sie sich vor der Durchführung eines Testlaufs des Programms genau, welche Er-
gebnisse Sie erwarten.
• Überprüfen Sie nicht nur, ob das Programm das tut, was es soll, sondern auch, ob es etwas tut,
was es nicht soll.
• Gehen Sie nach dem Finden und Korrigieren eines Fehlers nie davon aus, dass nun alle Fehler
beseitigt sind.
• Wenn Sie einen Fehler gefunden und beseitigt haben, müssen alle vorherigen Testläufe noch-
mal wiederholt werden, um sich zu vergewissern, dass sich durch die Korrektur nicht neue
Fehler ins Programm geschlichen haben.
Es werden drei Klassen von Fehlern, die im Programmentwicklungsprozess auftreten können, unter-
schieden: syntaktische, logische und sogenannte Laufzeitfehler . Syntaktische Fehler werden bereits
in der Implementierungsphase durch den Compiler entdeckt und sind in der Testphase nicht mehr
von Interesse. Während bei logischen Fehlern das Programm normal durchläuft aber falsche Ergeb-
nisse liefert, äußert sich ein Laufzeitfehler dadurch, dass die Ausführung des Programms abgebro-
chen und in der Regel durch das Laufzeitsystem eine Fehlermeldung ausgegeben wird. Klassisches
Beispiel eines Laufzeitfehlers ist die Division durch den Wert Null. Laufzeitfehler können nicht
bereits durch den Compiler festgestellt werden.
Search WWH ::




Custom Search