06.10.2013 Aufrufe

Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke

Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke

Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke

MEHR ANZEIGEN
WENIGER ANZEIGEN

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 11.09.2008 13:04:00 Letzte Änderung am: 11. September 2008 Version 2.4, I. Oesch 139/147

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!