Notice: Undefined variable: home in /data/www/htdocs/infosun/st/include/config.php3 on line 3 Notice: Undefined variable: phone in /data/www/htdocs/infosun/st/include/config.php3 on line 7 Notice: Undefined variable: email in /data/www/htdocs/infosun/st/include/config.php3 on line 11 Notice: Undefined variable: icon in /data/www/htdocs/infosun/st/include/config.php3 on line 15 Notice: Undefined variable: fax in /data/www/htdocs/infosun/st/include/config.php3 on line 19 Notice: Undefined variable: lang in /data/www/htdocs/infosun/st/include/config.php3 on line 23 Notice: Use of undefined constant HTTP_ACCEPT_LANGUAGE - assumed 'HTTP_ACCEPT_LANGUAGE' in /data/www/htdocs/infosun/st/include/config.php3 on line 24 Notice: Use of undefined constant HTTP_ACCEPT_LANGUAGE - assumed 'HTTP_ACCEPT_LANGUAGE' in /data/www/htdocs/infosun/st/include/config.php3 on line 25 Notice: Undefined variable: realname in /data/www/htdocs/infosun/st/include/config.php3 on line 29 Notice: Undefined variable: userhome in /data/www/htdocs/infosun/st/include/config.php3 on line 48 Notice: Undefined variable: useremail in /data/www/htdocs/infosun/st/include/config.php3 on line 93 Notice: Use of undefined constant de - assumed 'de' in /data/www/htdocs/infosun/st/include/title.php3 on line 4 Notice: Use of undefined constant de - assumed 'de' in /data/www/htdocs/infosun/st/include/title.php3 on line 11 Software Systems Group: Software Engineering - Beispiellösung Aufgabenblatt 7 Notice: Undefined variable: background in /data/www/htdocs/infosun/st/include/start.php3 on line 4
Notice: Use of undefined constant de - assumed 'de' in /data/www/htdocs/infosun/st/include/start.php3 on line 13 University of Passau · FIM · Software Systems Notice: Use of undefined constant de - assumed 'de' in /data/www/htdocs/infosun/st/include/start.php3 on line 26 Deutschsprachige Startseite

ST

Notice: Undefined variable: banner in /data/www/htdocs/infosun/st/include/header.php3 on line 12 Software Engineering - Beispiellösung Aufgabenblatt 7

Testverfahren II
Universität Passau
Lehrstuhl für Softwaresysteme
Innstraße 33
Notice: Use of undefined constant de - assumed 'de' in /data/www/htdocs/infosun/st/include/header.php3 on line 36 94032 Passau, Germany

Notice: Use of undefined constant de - assumed 'de' in /data/www/htdocs/infosun/st/include/header.php3 on line 42 Phone: +49 851 509-30 91
Notice: Use of undefined constant de - assumed 'de' in /data/www/htdocs/infosun/st/include/header.php3 on line 48 Fax: +49 851 509-30 92
e-mail: snelting@fmi.uni-passau.de
WWW: http://www.infosun.fmi.uni-passau.de/st/

Diese Beispiellösung kann Fehler enthalten und ist deshalb ohne Gewähr. Bei Fragen oder Anmerkungen bitte eine kurze Mail an stoerzer@fmi.uni-passau.de.

Testverfahren II

Aufgabe 1

Das folgende Programm soll funktional getestet werden. Es berechnet den größten gemeinsamen Teiler zweier Zahlen, die größer als Null sind…

Welche funktionalen Testverfahren wurden in den Beispielen a bis d verwendet? Wie kam die Auswahl der Testdaten zustande?

Die Testfälle lassen auf folgende Verfahren schließen:

a Funktionale Äquivalenzklassenbildung
Die Werte beschreiben Testfälle aus gültigen und ungültigen Äquivalenzklassen. Diese Werte sind aber keine Grenzwerte.
b Test spezieller Werte
Der Wert Null ist ein kritischer Wert bei Berechnungen.
c Grenzwertanalyse
Dieselben Äquivalenzklassen wie bei a, jedoch wurden in diesem Beispiel die Grenzwerte gewählt.
d Zufallstest
Bei den Testwerten ist kein Muster zu erkennen.

Aufgabe 2

Betrachten Sie das nachfolgende C-Programm…

Aufgabe 2.1

Erstellen Sie einen Kontrollflußgraphen für das Programm.

Aufgabe 2.2

Stellen Sie die Datenflüsse tabellarisch zusammen. Welche Anomalien lassen sich auf diese Weise feststellen?

Die Datenflüsse sind in der nachfolgenden Tabelle aufgelistet. Für die Variable j läßt sich die Anomalie ur finden, die auf den nicht initalisierten Wert von j in dem Konstrukt j++ zugegriffen wird. Für i findet man die Anomalie dd, da i zweimal initialisiert wird (bei der Definition und zu Beginn der Schleife):

Variable nstart n1 n2 n3 n4 n5 n6 nfinal
j e u e e e rd e u
i e e d d r e rd u

Legende: u - undefine r - reference d - define e - empty

Aufgabe 3

Gegeben sei der folgende Programmausschnitt. Er implementiert eine Funktion GetWord

Aufgabe 3.1

Bestimmen Sie s=5 Testfallklassen D1,..., Ds.

Etwa so:

D1: 1 < begin < c < end < 10000
D2: 1 < begin = c oder end = c < 10000
D3: begin = 1 und c < end < 10000
D4: 1 < begin < c und end = 10000
D5: begin = 1 und end = 10000

Aufgabe 3.2

Schätzen Sie das Lastprofil P ein; d.h. für jede Testfallklasse i die Wahrscheinlichkeit Pi ihres Auftretens, so daß $ \sum_{i=1}^{s}$Pi = 1.

Beispielsweise:

D1: D2: D3: D4: D5:
50% 20% 10% 10% 10%

Aufgabe 3.3

Geben Sie n >= 10 Testdatensätze an, die Sie zunächst anhand der Wahrscheinlichkeiten Pi auf die einzelnen Klassen Di verteilen, so daß $ \sum_{i=1}^{s}$ni . Pi = n.

D1: D2: D3: D4: D5:
_abcdefg_ _abc_ abc_ _abc abcc…ccc
_abcdefg_ _abc_
_abcdefg_
_abcdefg_
_abcdefg_

Aufgabe 3.4

Testen Sie nun die Implementierung mit Ihren n Testdatensätzen. Bestimmen Sie anhand der Ergebnisse die Korrektheitswahrscheinlichkeit Ki = 1 - fi/ni, wobei fi die Anzahl der Fehler in der Klasse Di ist. Wie ist die Gesamtkorrektheitswahrscheinlichkeit R der Implementierung?

Da laut Aufgabenstellung bei AND keine Shortcut-Evaluation durchgeführt wird, führen die Testfälle, bei denen das Wort direkt auf den Feldgrenzen beginnt oder endet zu Abstürzen.

Die Ki lassen sich nicht bestimmen! Daher ist Ki = 1 - fi/ni nur eine Näherung!

K1: K2: K3: K4: K5:
100% 100% 0% 0% 0%

R=1 - (0/5 * 50% + 0/3 * 30% + 1/1 * 10% + 1/1 * 10% + 1/1 * 10%) = 70% Gesamtkorrektheitswahrscheinlichkeit

Aufgabe 3.5

Um die Testgenauigkeit zu steigern, können Sie die Varianz minimieren. Hierfür bestimmen Sie neue ni anhand der in der Vorlesung vorgestellten Formel.

Nehmen wir an, Sie sollten 1000 Testfälle erzeugen. Wie sind die Testfälle nun verteilt?

Was passiert, wenn ein Ki den Wert 0 oder 1 annimmt?

Dies ergibt bei der geringen Menge an Testfällen keinen Sinn, da Ki keine anderen Werte als 0 oder 1 annimmt.

Sobal ein Ki den Wert 0 oder 1 annimmt, wird das neue ni = 0, d.h. es wird die ganze Klasse von Testfällen entfernt.

Aufgabe 4

Die Güte Ihrer Testdatensätze kann weiter gesteigert werden, indem Sie sie auf Mutationen des zu testenden Programms anwenden. Bestimmen Sie wenigstens fünf Mutanten des umseitigen Programms und schätzen Sie die Restfehlerzahl anhand der im Skript angegebenen Formel ab.

Aufgabe 5

Wenn Sie von einem Programm nur wissen, daß es außer Zuweisungen nur 4 Verzweigungen bzw. 4 Schleifen enthält - wieviele Testfälle braucht man für die folgenden Abdeckungskriterien im schlechtesten Falle?

Da es Bedingungen geben kann, die sich gegenseitig beeinflussen kann es Anweisungen geben, die niemals ausgeführt werden (sogenannnter Toter Code). Dadurch ist es in einem solchen Fall nicht möglich, überhaupt 100% Abdeckung zu erreichen.

Aufgabe 6

In der folgenden Abbildung sind drei Kontrollflußgraphen dargestellt. Berechnen Sie für alle Graphen die zyklomatische Zahl ZZ(P). Vergleichen Sie das Ergebnis mit Ihrem intuitiven Eindruck von der Komplexität der Graphen.

Für alle drei Graphen ergibt sich das Ergebnis ZZ(P) = 4, alle drei Graphen sind also gleich komplex. Der subjektive Eindruck ist jedoch, daß die Komplexität von C am höchsten ist. B wirkt durch sein homogenes Aussehen sehr einfach und auch A läßt sich optisch gut überblicken und wirkt daher einfach.


Lehrstuhl Softwaresysteme <snelting@fmi.uni-passau.de> - Notice: Use of undefined constant de - assumed 'de' in /data/www/htdocs/infosun/st/include/footer.php3 on line 9 Last modified: 12/10/2003