Eine Einführung in die Programmiersprache C und die Grundlagen ...
Eine Einführung in die Programmiersprache C und die Grundlagen ...
Eine Einführung in die Programmiersprache C und die Grundlagen ...
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
<strong>E<strong>in</strong>e</strong> <strong>E<strong>in</strong>führung</strong> <strong>in</strong> <strong>die</strong> Informatik <strong>und</strong> <strong>die</strong> <strong>Programmiersprache</strong> C<br />
33.5 Systematisches erzeugen von Testfällen<br />
Da <strong>die</strong> Anzahl der möglichen Komb<strong>in</strong>ationen von E<strong>in</strong>gabedaten meist nahezu unendlich ist, muss<br />
beim Entwurf von Testfällen systematisch vorgegangen werden um möglichst alle Fälle abzudekken.<br />
E<strong>in</strong> zufälliges Auswählen von Werten ergibt ke<strong>in</strong>en zuverlässigen Test.<br />
<strong>E<strong>in</strong>e</strong> gute Möglichkeit ist <strong>die</strong> Bildung von Äquivalenzklassen. Dabei werden Gruppen von Werten<br />
gebildet, von denen man ähnliches Verhalten <strong>und</strong> ähnliche Ergebnisse erwartet.<br />
Mögliche Klassen wären: Alle positiven Werte, Alle negativen Werte, Alle Werte oberhalb/unterhalb<br />
des spezifizierten Wertebereichs, Alle Komb<strong>in</strong>ationen <strong>die</strong> denen Wert A grösser als<br />
Wert B ist (Bargeldbezug wenn Kontostand kle<strong>in</strong>er als gewünschter Wert ist), Rückgeld grösser als<br />
Geldreservoir ist, ...<br />
Anschliessend wählt man <strong>die</strong> Testfälle so, das Werte aus allen Äquivalenzklassen zum Zuge kommen.<br />
Meist werden e<strong>in</strong>ige Werte zufällig irgendwo aus der Mitte der jeweiligen Äquivalenzklassen,<br />
sowie Grenzwerte (Um e<strong>in</strong>s daneben, gehört gerade noch dazu/nicht mehr dazu) der Klassen gewählt.<br />
Damit lässt sich <strong>die</strong> Menge der Testfälle drastisch reduzieren, ohne <strong>die</strong> Qualität des Tests massiv zu<br />
verm<strong>in</strong>dern. Es ist aber wichtig, gute Äquivalenzklassen zu bilden.<br />
33.6 Testabbruch<br />
Die schwierigste Entscheidung beim Testen ist immer, wann <strong>die</strong> Testphase beendet wird. Es gibt im<br />
Allgeme<strong>in</strong>en ke<strong>in</strong>e Möglichkeit mit Sicherheit zu wissen, ob alle Fehler beseitigt s<strong>in</strong>d, also müssen<br />
andere Kriterien herangezogen werden.<br />
E<strong>in</strong>fach e<strong>in</strong>e bestimmte Zeitdauer festzulegen ist sicherlich das schlechteste Kriterium. Bessere<br />
Möglichkeiten basieren auf e<strong>in</strong>er Restfehler-Abschätzung, d.h. versuchen zu schätzen, wieviele Fehler<br />
noch übrig s<strong>in</strong>d.<br />
Dazu bietet sich <strong>die</strong> Fehlerf<strong>in</strong>derate an. (Gef<strong>und</strong>ene Fehler pro Zeite<strong>in</strong>heit, ev. noch nach Schweregrad<br />
gewichtet). Der Test wird abgebrochen, wenn <strong>die</strong> Fehlerf<strong>in</strong>derate e<strong>in</strong>e gewisse Grenze unterschreitet.<br />
Diese Grenze wird vor dem Testbeg<strong>in</strong>n festgelegt.<br />
<strong>E<strong>in</strong>e</strong> anderer Ansatz ist <strong>die</strong> Kostenrechnung, der Test wird abgebrochen, wenn der durchschnittliche<br />
Aufwand (Die Kosten) um e<strong>in</strong>en Fehler zu f<strong>in</strong>den, e<strong>in</strong>e vorbestimmte Grenze überschreitet.<br />
<strong>E<strong>in</strong>e</strong> Möglichkeit, <strong>die</strong> Restfehler zu schätzen besteht daran, mehrere Gruppen unabhängig vone<strong>in</strong>ander<br />
dasselbe System testen zu lassen. Aus den Ergebnissen der unterschiedlichen Gruppen lassen<br />
sich Rückschlüse auf <strong>die</strong> nicht gef<strong>und</strong>enen Fehler ziehen.<br />
Beispiel:<br />
Von beiden Gruppen gef<strong>und</strong>ene Fehler: 80<br />
Nur von Gruppe A gef<strong>und</strong>ene Fehler: 10<br />
Nur von Gruppe B gef<strong>und</strong>ene Fehler: 8<br />
Von ke<strong>in</strong>er Gruppe gef<strong>und</strong>ene Fehler: ??<br />
Aus <strong>die</strong>sen Werten kann man schliessen, dass noch e<strong>in</strong> unentdeckter Fehler im System steckt.<br />
Idee: Gruppe B hat von den 90 Fehlern der Gruppe A 80 gef<strong>und</strong>en, <strong>die</strong> Erfolgsquote von B ist also<br />
8:9. Wenn man <strong>die</strong> selbe Erfolgsquote auf <strong>die</strong> nur von Gruppe B gef<strong>und</strong>enen Fehler anwendet, ergibt<br />
sich, dass noch e<strong>in</strong> Fehler unentdeckt ist. Diese Methode funktioniert aber nur, wenn beide<br />
Gruppen völlig unabhängig vone<strong>in</strong>ander testen (Ke<strong>in</strong>e Kommunikation, auch nicht <strong>in</strong> der Kaffeepause<br />
oder nach Feierabend).<br />
Damit solche Abschätzungen wirklich aussagekraftig s<strong>in</strong>d, muss statistisch korrekt vorgegangen<br />
<strong>und</strong> ausgewertet werden, also <strong>die</strong> Wahrsche<strong>in</strong>lichkeitsrechnung herangezogen werden.<br />
Gedruckt am 10.09.2009 14:23:00 Letzte Änderung am: 10. September 2009 Version 2.4.1, I. Oesch 139/147