Gegenbeispiel zum Vergleich
der Verfahren
Fehler im letzten (hinzugefügten) Modul?
Nach Myers steckt bei einem aufgetretenen Fehler beim Testen der Fehler
meist im zuletzt hinzugefügten Modul.
Der Fehler kann aber überall stecken, z. B . dann, wenn er erst
beim zweiten Durchlauf (der Schleife im letzten Modul) durch eine
vergessene Anfangswertzuweisung o. ä. auftritt.
Dazu habe ich folgendes Beispiel konstruiert:
In einem Programm befinden sich drei Module Test1, Test2, Test3, für
die gilt:
-
Test1 das Produkt zweier Zahlen berechnet und zu einer Zahl addiert.
-
Beim Start des Gesamtprogramms die zu addierende Zahl immer Null ist.
-
Test2 das Produkt zweier Zahlen berechnet und ausgibt, dabei Test1 aufruft
(nutzt).
-
Test3 ruft Test2 in einer Schleife mehrere Male auf.
-
Test1 und Test3 sind entsprechend ihren Aufgaben richtig programmiert.
-
Der Programmierer von Test2 müßte die zu addierende Zahl auf
Null setzen, geht aber fälschlicherweise davon aus, daß Test1
bereits das Produkt berechnet und dort der Anfangswert gesetzt wird.
-
Beim Testen von Test2 in Verbindung mit Test1 fällt der Fehler normalerweise
nicht auf, wenn das Modul Test1 immer nur genau einmal (wie vorgesehen)
aufgerufen wird. Erst wenn Test3 angehangen wird, wird der Fehler offensichtlich.
Wurde jetzt Modul2 nicht richtig getestet, dann nimmt man den Fehler im
zuletzt angehangenen Modul an, das aber seine Aufgaben erfüllt. Sind
aber zwischen Test2 und Test3 noch weitere Module, die jeweils das davorliegende
nur genau einmal aufrufen, dann kann evtl. der Fehler auch nicht entdeckt
werden. (Schließlich ist beim Start die zu addierende Zahl immer
Null.)
-
Beim Testen von Test2 in Verbindung mit Test3 fällt der Fehler auch
nicht auf, wenn wieder fälschlicherweise davon ausgegangen wird, daß
Test1 bereits das Produkt berechnet und dort der Anfangswert gesetzt wird.
Wird nun Test1 angehangen, dann sucht und findet man dort einen Fehler,
der einfach korrigiert werden kann und das Problem löst. Damit erfüllt
aber Test1 seine vorgesehenen Aufgaben nicht mehr - da ein Fehler eingebaut
wurde.
Zur Veranschaulichung habe ich ein Programm
in TURBO-Pascal geschrieben, das auch downgeladen werden kann. (Testmodu.pas)
In diesem Programm wurden zur Vereinfachung ganze Zahlen aus dem integer-Bereich
verwendet.
Sinnvoll wird das Ganze, wenn man als Aufgabe die Multiplikation von
Zahlen mit beliebig vielen Stellen mit einer ganzen Zahl hat und diese
Produkte noch addieren möchte. (Dazu muß man dann zu Addition
natürlich die entsprechenden Module aufrufen.)
Man sieht an dem Beispiel-Programm, daß nur jeweils der erste
Wert richtig ausgegeben wird, auch wenn die willkürlich gesetzten
Werte verändert werden.
zurück zum Vergleich der Verfahren
zurück
zur Startseite
|
Benutzer: Gast
Besitzer: seminar Zuletzt geändert am:
|
|
|