lösungen gesamt update 130121 - tu braunschweig · testfall baseprice specialprice extrap rice...

27
PMTS Übung Christiane Heumann Inhalt 02_Lösungen Kontrollflussgraphen .................................................... 2 03_Lösungen Statischer Test – Zyklomatische Komplexität ............. 3 05_Lösungen Zustandsautomaten .................................................... 12 06_Lösungen Entscheidungstabellen: .............................................. 17 07_Lösungen Anweisungs- und Zweigüberdeckung ....................... 20 08_Lösungen Bedingungsüberdeckung ........................................... 25

Upload: others

Post on 14-Sep-2019

1 views

Category:

Documents


0 download

TRANSCRIPT

PMTS Übung Christiane Heumann

Inhalt 02_Lösungen Kontrollflussgraphen .................................................... 2

03_Lösungen Statischer Test – Zyklomatische Komplexität ............. 3

05_Lösungen Zustandsautomaten .................................................... 12

06_Lösungen Entscheidungstabellen: .............................................. 17

07_Lösungen Anweisungs- und Zweigüberdeckung ....................... 20

08_Lösungen Bedingungsüberdeckung ........................................... 25

PMTS Übung Christiane Heumann

02_Lösungen Kontrollflussgraphen Aufgabe 1 Gegeben ist das folgende Programm. Es sucht in dem array nach dem Wert s.

a) Wandeln Sie das Programm in einen Kontrollflussgraphen um.

Lösung int suchen(int[] array, int s) { int u = 0; // 1 int arrayLen = array.length - 1; // 2 while (u <= arrayLen) { // 3 int m = (u + arrayLen) / 2; // 4 if (array[m] == s) { // 5 return m; // 6 } else { // 7 if (array[m] > s) { // 8 arrayLen = m; // 9 } else { // 10 u = m; // 11 } } } return -1; // 12 }

PMTS Übung Christiane Heumann

3_Lösungen Statischer Test – Zyklomatische Komplexität 1. Ermitteln Sie die zyklomatische Komplexität für folgende Graphen: Z(G) = e – n + 2 e Anzahl der Kanten von G n Anzahl der Knoten von G

2 3 2 4

2 2 1 3 2 : Welche Erkenntnisse folgern Sie aus den Ergebnissen der Aufgabe 1 1. Sequenzen können beliebig lang sein ohne die zyklomatische Komplexität zu erhöhen. 2. Jede Verzweigung in einer Auswahl erhöht die zyklomatische Komplexität um 1.

PMTS Übung Christiane Heumann

3. Erzeugen Sie den modifizierten Kontrollflussgraphen für folgenden Code : void output( int selection, int y) { if (selection ==1) printf(“\n 1”); else if (selection ==2)

printf(“\n 2”); else if (selection ==3)

printf(“\n 3”); else if (selection ==4) if (y == 0) { printf(“\n 4”); printf(“\n 5”); } else printf(“\n 6”); else printf(“\n 7”); }

PMTS Übung Christiane Heumann

Lösungen Äquivalenzklassen und Grenzwertanalyse Übung 1a: Das Alter soll größer als 18 Jahre und kleiner gleich 65 Jahre betragen (18 < Alter <= 65).

Übung 1b: Der Wertebereich der Variablen ‚Tage‘ beträgt 1...31 (Tage = 1…..31)

Übung 2a: Die Zahlungsweise kann jährlich, halbjährlich, vierteljährlich, monatlich sein, wobei die Verarbeitung

jeweils unterschiedlich ist

t. Übung 2b: Das erste Zeichen muss ein Buchstabe sein.

Übung 3a: Ausgabebereich: 1<= Wert <= 99

Übung 3b: Ein Programm zur Lagerverwaltung einer Baustoffhandlung besitzt eine Eingabemöglichkeit für die Registrierung von Auslieferungen. Werden Holzbretter angeliefert, so wird die Holzart eingegeben. Das Programm kennt die Holzarten Eiche, Buche und Kiefer. Ferner wird die Länge in Zentimetern angegeben, die stets zwischen 100 und 500 liegt. Als gelieferte Anzahl kann ein Wert zwischen 1 und 9999 angegeben werden. Außerdem erhält die Lieferung eine Auftragsnummer. Jede Auftragsnummer für Holzlieferungen beginnt mit dem Buchstaben H.

PMTS Übung Christiane Heumann

Aufgabe 4 Teilzahlung einer Obligation Es soll eine Funktion zur Berechnung der Monatszahlung getestet werden. Als Testbasis gilt die folgende Spezifikation: Zu testen ist eine Funktion mit folgender Schnittstelle:

Die Funktion muss folgende Anforderungen erfüllen: A1. annualPercentageRate(apr) ist eine positive reale Zahl. Nach unten liegt eine Begrenzung auf minimal 0,00 % und nach oben auf maximal 10,00 %. A2. loanValue(L) ist eine positive reale Zahl, die auf 2 Nachkommastellen begrenzt ist. Nach unten liegt eine Begrenzung auf minimal 0,00 € und nach oben auf maximal 500.000,00 €. A3. loanPeriod(n) ist eine positive natürliche Zahl ausgedrückt in Monaten begrenzt nach unten auf 1 und nach oben auf 120. A4. Die Monatszahlung wird wie folgendes berechnet:

4.1 Zerlegen Sie die Eingabeparameter mit den Informationen aus A1 bis A4 in Äquivalenzklassen.

Geben Sie für jeden Eingabeparameter die gültigen und ungültigen Äquivalenzklassen an und jeweils einen Repräsentanten. Beispiel:

Lösung 4.1

Parameter Äquivalenzklasse Repräsentant

apr gÄK11 : [0,00, …,10,00] 6,00

uÄK11: [MIN_DOUBLE, …, 0,00[ uÄK12: ]10,00, ... , MAX_DOUBLE] uÄK13: NaN

-1,00 15,00 „abc“

loanValue gÄK21 : [0,00…,500.000,00] 50.000,00

uÄK21: [MIN_DOUBLE, ... , 0,00[ uÄK22: ]500.000,00, … , MAX_DOUBLE] uÄK23: NaN

-1,00 1.000.000,00 „abc“

loanPeriod gÄK31: [1, …, 120] 60 uÄK31: [MIN_INT, … , 1[ uÄK32: ]120, …, MAX_INT] uÄK33: NaN

-1 180 „abc“

PMTS Übung Christiane Heumann

4.2 Wie viele Kombinationen von gültigen Äquivalenzklassen und ungültigen Äquivalenzklassen

ergeben sich nach den Kombinationsregeln – geben Sie diese an! Lösung 4.2

1. Die Repräsentanten aller gültigen ÄK sind zu Testfällen zu kombinieren, d.h. alle möglichen Kombinationen der jeweiligen Repräsentanten sind vorzusehen 2. Der Repräsentant einer ungültigen ÄK ist nur mit Repräsentanten von gültigen ÄK zu kombinieren. Für jede ungültige ÄK ist somit ein extra (Negativ) Testfall zu pezifizieren.

Nach obigen Grundregeln ergibt sich: a. 1*1*1 = 1 gültiger Testfall b. 3 + 3 +3 = 9 ungültige Testfälle 4.3 Geben Sie Werte für die Kombinationen sowie die Sollwerte für den berechneten Preis an. Nutzen

Sie eine Tabelle wie die Folgende:

Lösung 4.3

Testfall apr loanValue loanPeriod result 1 6,00 50.000,00 60 959,88 2 -1,00 250.000,00 96 NOT_VALID 3. 15,00 76.000,50 36 NOT_VALID 4. „abc“ 120.000,99 84 NOT_VALID 5. 4,80 -1,00 36 NOT_VALID 6. 8,50 1.000.000,00 72 NOT_VALID 7. 6,80 „abc“ 48 NOT_VALID 8. 10,00 145.000,00 -1 NOT_VALID 9. 8,70 325.000,00 180 NOT_VALID 10 3,50 25.000,00 „abc“ NOT_VALID

4.4 Die Grenzwerte der in 1. gefundenen Äquivalenzklassen sollen auch getestet werden. Dazu

geben Sie zu jeder Äquivalenzklasse die Grenzwerte an. In der folgenden Tabelle δ, ε, λ sind Genauigkeitsraten von der Aufgabenstellung und der Zahlendarstellung des Rechners abhängig. Für diese Aufgabe arbeiten wir mit folgender Annahme: δ = 0,01 als akzeptierte Genauigkeit für annualPercentageRate ε = 1,00 als akzeptierte Genauigkeit für loanValue λ = 1 als akzeptierte Genauigkeit für loanPeriod Lösung 4.4

Parameter Äquivalenzklasse Grenzwert-Repräsentant

apr gÄK11 : [0,00, …,10,00] 0,00; 10,00

uÄK11: [MIN_DOUBLE, …, 0,00[ uÄK12: ]10,00, ... , MAX_DOUBLE] uÄK13: NaN

MIN_DOUBLE; 0,00 - δ; 10,00 + δ; MAX_DOUBLE kein Repräsentant

loanValue gÄK21 : [0,00…,500.000,00] 0,00; 500.000,00 uÄK21: [MIN_DOUBLE, ... , 0,00[ uÄK22: ]500.000,00, … , MAX_DOUBLE] uÄK23: NaN

MIN_DOUBLE; 0,00 - ε 500.000,00 + ε; MAX_DOUBLE kein Repräsentant

loanPeriod gÄK31: [1, …, 120] 1; 120 uÄK31: [MIN_INT, … , 1[ uÄK32: ]120, …, MAX_INT] uÄK33: NaN

MIN_INT; 1 - λ 120 + λ; MAX_INT + λ kein Repräsentant

PMTS Übung Christiane Heumann

Aufgabe 5 Preisberechnung Es soll eine Funktion zur Berechnung des Gesamtpreises getestet werden. Als Testbasis dient die folgende Spezifikation: Zu testen ist eine Funktion mit folgender Schnittstelle:

Die Funktion muss folgende Anforderungen erfüllen:

A1 baseprice, specialprice, extraprice sind positive Zahlen, die auf 2 Nachkommastellen begrenzt sind.Der Wertebereich der Variablen ist auf den maximalen Preis von 10.000.000 € begrenzt. Nach unten liegt eine Begrenzung auf minimal 0,00 € vor. Die Begrenzung erfolgt im Programmcode.

A2 Der berechnete Preis wird zwischen 0 und 100.000.000€ begrenzt und wird auf 2 Nachkommstellen genau berechnet . Ist der Preis aus irgendwelchen Gründen ungültig (ausserhalb des Bereichs von 0 bis 100.000.000 €) so wird als Ergebnis -1,00 € ausgegeben. Die Begrenzung erfolgt im Programmcode.

A3 Abhängig vom Wert des Parameters extras berechnet sich ein Rabatt auf Zusatzausstattungen. 10% wenn extras >= 3 bzw. 15% bei extras >= 5. Extras stellt die Anzahl der gewählten Zusatzausstattungsteile dar und ist somit nicht negativ. Die Begrenzung liegt zwischen 0 und der Anzahlobergrenze von 400. Die Begrenzung erfolgt im Programmcode.

A4 Der Parameter discount wird in Prozent eingegeben und liegt zwischen 0-100%. Er hat eine Auflösung von einer Nachkommstelle. Die Begrenzung erfolgt im Programmcode.

A5 Die Preise können auf 1 Cent genau eingegeben werden. Es wird gemäß den kaufmännischen Rundungsregeln auf Cent gerundet.

A6 Der Gesamtpreis berechnet sich wie folgt : calculate_price = baseprice *(1-discount/100) + specialprice + extraprice*(1-(rabatt aus A3)/100)

5.1 Zerlegen Sie die Eingabeparameter mit den Informationen aus A1. bis A6. in Äquivalenzklassen. Geben Sie für jeden Eingabeparameter die gültigen und

ungültigen Äquivalenzklassen an und jeweils einen Repräsentanten. Benutzen Sie eine Tabelle wie die folgende:

PMTS Übung Christiane Heumann

Lösung 5.1

Parameter Äquivalenzklasse Repräsentant Baseprice GÄK11 : [0,00…,10.000.000,00] 20.012,23

UÄK11 : [MIN_DOUBLE,…-0,01] -1,00

UÄK12 : [10.000.000,01,…,MAX_DOUBLE] 10.012.199,12

Specialprice GÄK21 : [0,00…,10.000.000,00] 1290,76

UÄK21 : [MIN_DOUBLE,…-0,01] -0,01

UÄK22 : [10.000.000,01,…,MAX_DOUBLE] 99.999.999,01

extraprice GÄK31 : [0,00…,10.000.000,00] 500

UÄK31 : [MIN_DOUBLE,…-0,01] -12.999.999.,01

UÄK32 : [10.000.000,01,…,MAX_DOUBLE] +12.999.999.,01 extras GÄK41 : [0,1,2] 0

GÄK42 : [3,4] 3

GÄK43 : [5,….,400] 5

UÄK41 : [Min_INT,….,-1] -1

UÄK42 : [401,…., MAX_INT] 401

discount GÄK51 : [0,0,…,100,0] 5,2

UÄK51 : [MIN_DOUBLE,…-0,01] -0,1

UÄK52 : [100,01,…,MAX_DOUBLE] 100,01

5.2 Wie viele Kombinationen von gültigen Äquivalenzklassen und ungültigen Äquivalenzklassen ergeben sich nach den Kombinationsregeln – geben Sie diese an!

Lösung 5.2 Gültige Kombinationen : � 3 gültige Kombinationen (1*baseprice x 1*specialprice x 1*extraprice x 3*extras x 1*discount ) Ungültige Kombination : � 10 . (10 ungültige Äquivalenzklassen kombiniert nur mit 1 gültigen Kombination)

5.3 Geben Sie Werte für die Kombinationen an sowie die Sollwerte für den berechneten Preis: Benutzen Sie eine Tabelle wie die folgende:

Testfall baseprice specialprice extraprice extras discount result 1 2

PMTS Übung Christiane Heumann

Lösung 5.3

Testfall baseprice specialprice extraprice extras discount result 1 20.012,23 1.290,76 500 0 5,2 26450,35 2 20.012,23 1.290,76 500,00 3 5,2 26400,35 3 20.012,23 1.290,76 500 5,00 5,2 26375,35 4 -1 1.290,76 500 0,00 5,2 -1 5 10.012.199,12 1.290,76 500 0 5,2 -1 6 20.012,23 -0.01 500 0 5,2 -1 7 20.012,23 99.999.999,01 500 0 5,2 -1

8 20.012,23 1.290,76 -

12.999.999,01 0 5,2 -1 9 20.012,23 1290,76 12.999.999,01 0 5,2 -1

10 20.012,23 1290,76 500 -1 5,2 -1 11 20.012,23 1290,76 500 401 5,2 -1 12 20.012,23 1290,76 500 0 -0,01 -1

13 20.012,23 1290,76 500 0 100,01 -1 5.4 Welche Äquivalenzklassen-Überdeckung ergibt sich aus den Testfällen?

Lösung 5.4 ÄK Überdeckung = (Anzahl getestete ÄK / Gesamtzahl ÄK) *100% ÄK Überdeckung = (17 / 17 ) * 100 = 100 %

5.5 In welchen Teststufen ist ein Blackbox Test auf Basis der ÄK Methode sinnvoll? Lösung 5.5 Systemtest-, Integrationstest, und Komponententeststufe.

5.6 Welche Schwachpunkte hat die Äquivalenzklassenmethode? Lösung 5.6 1. Abhängigkeiten und Wechselwirkungen (wie bei Zustandsautomaten) werden nicht betrachtet

und machen erhebliche Schwierigkeiten Das Verfahren ist nicht anwendbar. 2. Die Güte der Äquivalenzklassen ist entscheidend für die Signifikanz der Testfälle. 3. Es werden keine Spezifikationsfehler gefunden 4. Es werden keine Zusatzfunktionalitäten entdeckt 5. Die Anforderungen müssen die Schnittstelle ausreichend beschreiben

5.7 Welche Vorteile hat die Äquivalenzklassenmethode? Lösung 5.7 1. Gute Reduzierung der möglichen Testfälle 2. Gute Berücksichtigung von Einschränkungen

5.8 Die Grenzwerte der in 1. gefundenen Äquivalenzklassen sollen auch getestet werden. Dazu geben Sie zu jeder Äquivalenzklasse die Grenzwerte an. Benutzen Sie eine Tabelle wie die folgende:

PMTS Übung Christiane Heumann

Lösung 5.8

Parameter Äquivalenzklasse Grenzwert- Repräsentanten

baseprice GÄK11 : [0,00…,10.000.000,00] 0,00 ; 10.000.000,00

UÄK11 : [MIN_DOUBLE,…-0,01] -0,01; MIN_DOUBLE

UÄK12 : [10.000.000,01,…,MAX_DOUBLE] 10.000.000,01; MAX_DOUBLE

specialprice GÄK21 : [0,00…,10.000.000,00] 0,00 ; 10.000.000,00

UÄK21 : [MIN_DOUBLE,…-0,01] -0,01; MIN_DOUBLE

UÄK22 : [10.000.000,01,…,MAX_DOUBLE] 10.000.000,01; MAX_DOUBLE

extraprice GÄK31 : [0,00…,10.000.000,00] 0,00 ; 10.000.000,00

UÄK31 : [MIN_DOUBLE,…-0,01] --0,01; MIN_DOUBLE

UÄK32 : [10.000.000,01,…,MAX_DOUBLE] 10.000.000,01; MAX_DOUBLE

extras GÄK41 : [0,1,2] 0; 2

GÄK42 : [3,4] 3; 4

GÄK43 : [5,….,400] 5; 400

UÄK41 : [Min_INT,….,-1] -1; MIN_INT

UÄK42 : [401,…., MAXINT] 401, MAXINT

discount GÄK51 : [0,0,…,100,0] 0,1; 100,0

UÄK51 : [MIN_DOUBLE,…-0,01] -0,1; MIN_DOUBLE

UÄK52 : [100,01,…,MAX_DOUBLE] 100,1; MAX_DOUBLE

5.9 Wie viele Kombinationen von Testfällen würden sich ergeben, wenn man nur die Grenzwerte betrachtet?

Lösung 5.9 Gültige Kombinationen : 2*baseprice x 2*specialprice x 2*extraprice x 6*extras x 2*discount � 96 gültige Kombinationen Ungültige Kombinationen : 10 ungültige Äquivalenzklassen à 2 Werte kombiniert nur mit 1 gültigen Kombination � 20 Testfälle.

5.9.1 Wie viele Kombinationen an Testfällen würden sich ergeben, wenn man die Grenzwerte und einen anderen Vertreter der ÄKs betrachtet?

Lösung 5.9.1 Gültige Kombinationen : 3*baseprice x 3*specialprice x 3*extraprice x 9*extras x 3*discount � 729 gültige Kombinationen Ungültige Kombinationen : 10 ungültige Äquivalenzklassen à 3 Werte kombiniert nur mit 1 gültigen Kombination � 30 Testfälle.

5.10 Welche Maßnahmen schlagen Sie vor, um die Testfälle aus Aufgabe 5.9 zu reduzieren?

Lösung 5.10 Gültige Kombinationen reduzieren auf mindestens einen Repräsentanten der ÄK in irgendeiner gültigen Kombination.

PMTS Übung Christiane Heumann

05_Lösungen Zustandsautomaten

1. Welche Testendekriterien gibt es bei endlichen Automaten?

- Jeder Zustand wird mindestens einmal durchlaufen - Jeder Zustandsübergang wird mindestens einmal ausgeführt - Alle spezifikationsverletzenden Zustandsübergänge werden geprüft - Alle Funktionen des Automaten werden ausgeführt - Alle Ausgänge des Automaten werden angesteuert 2. Eine Zugtür befindet sich solange im Zustand <<geschlossen>>, bis der Befehl zum Tür öffnen erfolgt. Der Motor startet den Öffnungsvorgangs, während dessen Dauer der Zustand auf <<öffnend>> wechselt. Ist die Tür komplett eingefahren, muss der Motor stoppen und der Zustand ist <<offen>>. Frühestens nach 6000ms kann die Tür wieder geschlossen werden und wechselt dazu in den Zustand <<bereit zum Schließen>>. Findet für 2000ms keine Unterbrechung der Lichtschranke statt, startet der Motor zum Schließen der Tür, der Zustand wechselt auf<<schließend>>. Jedes Unterbrechen der Lichtschranke bewirkt ein Erneutes Hochzählen der Unterbrechungszeit. Der Zustand <<bereit zum Schließen>> wird erneut gesetzt/beibehalten. Wird während des Schließungsvorgangs der Drucksensor zum Türöffnen aktiviert, wird die Tür wieder geöffnet und wechselt in den Zustand <<bereit zum Schließen>>. Sind die Türen nach dem Schließvorgang vollständig ausgefahren, stoppt der Motor und ein Zustandswechsel nach <<geschlossen>>findet statt. 2.1 Erstellen Sie einen Zustandsautomaten für das oben beschriebene Szenario.

PMTS Übung Christiane Heumann

2.2 Zeichnen Sie den zugehörigen Zustandsbaum (Ohne Fehlererweiterungen).

31 Erstellen Sie das Verhalten eines Getränkeautomaten als Zustandsautomaten. Modellieren Sie

dabei folgenden Sachverhalt:

Der Automat geht in den Zustand <<auf Münze warten>> über, wenn der Nutzer eine Taste betätigt. Sobald der Nutzer die erste Münze eingeworfen hat, fängt der Automat an zu zählen und geht in den Zustand <<Münze eingeworfen>> über. Wurde der geforderte Betrag eingeworfen (alle Getränke haben den gleichen Preis) wird der Zustand <<Getränk bezahlt>> erreicht. Wurde der geforderte Betrag nicht erreicht, wird der Nutzer aufgefordert, weitere Münzen einzuwerfen. Der Automat gibt kein Wechselgeld aus. Wurde nach 45 Sekunden keine weitere Münze eingeworfen, werden alle Münzen zurückgeben und der Automat geht in den Initialzustand zurück. Nachdem der Betrag passend eingeworfen wurde, kann der Nutzer ein Getränk auswählen, welches bei Vorhandensein umgehend ausgegeben wird <<Getränk ausgegeben>>. Falls das Getränk nicht vorhanden ist, wird der Nutzer aufgefordert, ein anderes Getränk auszuwählen. Nach dem Prozess geht der Automat wieder in seinen Initialzustand zurück.

4 Erstellen Sie das Verhalten der unten beschriebenen Software als Zustandsdiagramm. Modellieren

Sie dabei folgenden Sachverhalt:

Es soll eine Software entwickelt werden, die die Teammitglieder beim Finden eines Termins einer Teambesprechung unterstützt. Zuerst wird ein Termin <<geplant>>. Wird dieser von allen Teammitgliedern bestätigt, geht der Termin in den Zustand <<abgestimmt>> über. Wurde der Termin hingegen von x-n Teilnehmern nicht bestätigt , wir der Zustand <<in Konflikt>> erreicht. Der Termin kann dann verschoben werden und hierbei wechselt der Zustand in <<geplant>> zurück. Nach der Abstimmung wird dem Termin ein Raum zugeordnet. Ist ein Raum verfügbar, so gilt der Termin als <<fixiert>>. Sobald diese Modalitäten erfüllt sind, werden alle Teilnehmer <<eingeladen>>. Ist 1 In Anlehnung an die Aufgaben aus der Vorlesung „Software Engineering“ von Prof. Rumpe aus dem

Wintersemester 2009/2010

initial

geschlossen

offen

BereitZum Schließen

schließend

geschlossen

öffnend

BereitZum Schließen

BereitZum chließen

PMTS Übung Christiane Heumann

hingegen kein Raum verfügbar, so verbleibt das System im Zustand <<abgestimmt>>, ein neuer Raum wird gesucht. Der Termin kann zu jedem Zeitpunkt gecancelt werden und wechselt dann in den Zustand <<abgesagt>>.

5 In ihrer Firma wird ein Auftragsbearbeitungssystem eingeführt. Sie sollen hierfür die notwendigen

Schritte für den Bearbeitungsprozess gestalten. Modellieren sie dabei folgenden Sachverhalt in

einem Zustandsautomaten: Zuerst wird ein neuer Auftrag im System aufgenommen. Im nächsten Schritt geht der Auftrag in den Zustand <<In Prüfung>> über, um alle Auftragspositionen zu prüfen. Sind alle Auftragspositionen überprüft und vorrätig wird der Auftrag <<freigegeben>>. Nach der Freigabe erfolgt die Auslieferung <<ausgeliefert>>. Befinden sich einige Positionen bei der Überprüfung nicht auf Lager, so geht der Auftrag in den Zustand <<wartend>> über. Sobald die fehlenden Positionen eingetroffen sind, kann der Auftrag <<freigegeben>> und anschließend <<ausgeliefert>> werden. Des Weiteren soll der Auftrag vor seiner Auslieferung zu jedem Zeitpunkt <<abgebrochen>> werden können.

6 Erstellen Sie einen Zustandsautomaten des unten beschriebenen Bankautomaten.

Der Automat befindet sich im Ruhestand. Sobald der Kunde seine Karte in den Automaten einführt, geht der Automat in den Zustand <<in Prüfung>> über: Ist die Karte nicht gültig wird der Abhebevorgang <<abgebrochen>> und die <<Karte eingezogen>>. Danach kehrt der Automat in den Ruhestand zurück. Ist die Karte gültig wird der Kunde aufgefordert, die <<PIN einzugeben>>. Ist die PIN ungültig wird der Kunde aufgefordert, die PIN erneut einzugeben. Wird die PIN dreimal falsch eingegeben, bricht der Vorgang ab <<abgebrochen>> und der Automat zieht die Karte ein. Wurde eine gültige PIN eingegeben, so wird der Kunde aufgefordert einen <<Betrag auszuwählen>>. Der

PMTS Übung Christiane Heumann

abzuhebende Betrag wird ausgezahlt <<Betrag ausgezahlt>> und kann entnommen werden. Die Karte wird anschließend ausgeworfen <<Karte ausgeworfen>>, der Abhebevorgang beendet und der Bankautomat kehrt in den Ausgangszustand zurück. Der Kunde kann den Vorgang aus jedem Status, außer << abgebrochen>> und <<Karte eingezogen>> , abbrechen

72 Erstellen Sie einen Zustandsautomaten des unten beschriebenen Telefons (aus der Sicht des

anrufenden Teilnehmers).

Initial befindet sich die Verbindung im Zustand <<Leitung frei>>. Bei aufgelegtem Hörer befindet sich die Software stets in diesem Zustand. Falls der Gesprächsaufbau begonnen wurde, aber noch nicht beendet ist, befindet sich die Software im Zustand <<Wählend>>. Ist der Anschluss <<besetzt>> wird der Hörer aufgelegt und die Software geht in den Initialzustand zurück. Bei freier Leitung <<läutet>> das Telefon. Sobald der Anrufer abnimmt, ist der eigene Anschluss besetzt. Nimmt die angerufene Person nicht ab, so legt der Anrufer den Hörer ab und die Leitung wird wieder frei. Wird der Hörer jedoch aufgenommen, so kommt es zu einem <<Gespräch>>. Nach dem Gespräch wird der Hörer aufgelegt und die Software geht wieder in den Initialzustand über.

2 In Anlehnung an die Aufgaben aus dem Buch „Softwarequalität“ von Liggesmeyer

PMTS Übung Christiane Heumann

8 Erstellen Sie einen Zustandsautomaten des unten beschriebenen Programms, das die

Kontoführung des einzelnen Kunden überwacht.

Nachdem der Antrag vom Kunden eingetroffen ist, wird das Konto <<eröffnet>>.Hierbei wird der gewünschte Betrag auf das Konto eingezahlt. In diesem Zustand verbleibt das Konto, falls keine weitere Aktivität eintritt. Weist das Konto innerhalb von 5 Jahren keine Aktivität auf, wird dieses automatisch auf <<inaktiv>> gesetzt. Sollte dies nach weiteren 2 Jahre immer noch der Fall sein, wird der Betrag an den Kunden ausgezahlt und das Konto wird <<geschlossen>>. Wenn der Kunde mehr abheben möchte als sein Konto aufweist, geht das Konto in den Zustand <<überzogen>> über. Jeder weitere Abhebevorgang erhöht den Überziehungsbetrag. Der Kunde kann ebenfalls einen entsprechenden Betrag einzahlen und die Überziehung korrigieren. In diesem Fall geht der Automat in den Zustand <<eröffnet>> zurück. Außerdem kann das Konto auf Wunsch des Kunden <<eingefroren>> werden. Ebenso kann das Konto wieder auf Kundenwusch freigeschaltet werden. Hierbei geht der Zustand in <<eröffnet>> zurück.

PMTS Übung Christiane Heumann

06_Lösungen Entscheidungstabellen: Übung 1: Zur Kundenbindung werden Kundenkarten an Stammkunden ausgegeben, deren Inhaber einen Rabatt von 7% auf alle Waren erhalten. In den ersten beiden Stunden nach Öffnung des Geschäfts (08.00h) wird ein Rabatt von 10% gewährt. Beide Rabatte können kombiniert werden. Alle Kunden, die vor 10.00h einkaufen, erhalten zusätzlich ein Werbegeschenk. Erstellen Sie die zugehörige vollständige Entscheidungstabelle. Lösung:

1 2 3 4 Stammkunde J J N N Einkauf 8h <= x <= 10h J N J N Rabatt 7% X X Rabatt 10% X X Werbegeschenk X X Kein Rabatt X

Übung 2: Versandartbestimmung: Sendungen im Inland mit einem Gewicht unter 15 kg werden im Normalfall als gewöhnliche Postsendung, bei Dringlichkeit als Posteilsendung verschickt. Bei einem höheren Gewicht werden sie bei Dringlichkeit per Luftfracht, sonst mit dem LKW verschickt. Sendungen ins Ausland werden unabhängig vom Gewicht bei Dringlichkeit per Luftfracht, sonst per Bahnfracht verschickt. Erstellen Sie die vollständige Entscheidungstabelle. Lösung:

1 2 3 4 5 6 7 8 Inland J J J J N N N N Dringlich J J N N J J N N Gewicht < 15kg J N J N J N J N Gewöhnliche Sendung X Posteilsendung X Luftfracht X X X LKW X Bahnfracht X X

PMTS Übung Christiane Heumann

Übung 3:3 Geldautomat: Es wird ein Geldautomat während einer Operation <Geldabheben> betrachtet. Der Geldautomat hat die folgende Spezifikation: Ist die Karte gültig, wird die korrekte PIN eingegeben und ist der gewünschte Betrag verfügbar (im Automat und auf dem Konto), so wird der Betrag ausgezahlt. Ist die PIN falsch, wird sie erneut angefordert. Bei der dritten fehlerhaften PIN Eingabe wird die Karte einbehalten. Ist der angeforderte Betrag nicht verfügbar (im Automat oder auf dem Konto) wird der Kunde aufgefordert, einen anderen Betrag zu wählen. Ungültige Karten werden vom Automaten zurückgewiesen. 3.1 Erstellen Sie die vollständige Entscheidungstabelle.

TF1 TF2 TF3 TF4 TF5 TF6 TF7 TF8 TF9 TF10 TF11 TF12 TF13 TF14 TF15 TF16BedingungenBankkarte gültig J J J J J J J J N N N N N N N NPIN korrekt J J J J N N N N J J J J N N N Nnoch nicht dritte fehlerhafte PIN-Eingabe J J N N J J N N J J N N J J N NBetrag verfügbar J N J N J N J N J N J N J N J NAktionenKarte zurückweisen N N N N N N N N J J J J J J J JPIN erneut anfordern N N N N J J N N N N N N N N N NKarte einbehalten N N N N N N J J N N N N N N N NAufforderg, anderen Betrag einzugeben N J N J N N N N N N N N N N N NGeld auszahlen J N J N N N N N N N N N N N N N 3.2 Wie ergibt sich die Anzahl von Spalten in der Entscheidungstabelle?

Es sind vier Bedingungen .Die Anzahl der Spalten in der ET beträgt somit 24 = 16, dies ist auch die Anzahl der theoretisch möglichen Kombinationen.

3.3 Wie kann die Entscheidungstabelle optimiert / konsolidiert werden? Geben Sie die optimierte / konsolidierte Entscheidungstabelle an. Die vollständige Entscheidungstabelle kann optimiert werden, in dem die unnötigen bzw. die unmöglichen Kombinationen nicht mehr aufgeführt werden. Legende: N = Nein (Wahrheitswert False); J = Ja (Wahrheitswert True);

x = gleichgültig

TF1 TF2 TF3 TF4 TF5BedingungenBankkarte gültig N J J J JPIN korrekt x N N J Jnoch nicht dritte fehlerhafte PIN-Eingabe x J N x xGeld verfügbar x x x N JAktionenKarte zurückweisen J N N N NPIN erneut anfordern N J N N NKarte einbehalten N N J N NGeldbetrag erneut anfordern N N N J NGeld auszahlen N N N N J

3 in Anlehnung an „Basiswissen Softwaretest”, Spillner, Linz, 3. Auflage, Kapitel 5

PMTS Übung Christiane Heumann

Übung 4: Um eine Zulassung für die Klausur zu erhalten, muss ein Student diverse Bedingungen erfüllen. Pro Semester sind Studiengebühren zu entrichten. Des Weiteren soll der Student in der Lage sein, die Teilnahme am Masterseminar nachzuweisen. Außerdem muss eine Hausarbeit angefertigt worden sein. Hat der Student nicht an dem Masterseminar teilgenommen so wird ihm ein Seminarplan zugesandt, damit er das Seminar im folgenden Semester besuchen kann. Wurden die Studiengebühren nicht überwiesen, die anderen Bedingungen jedoch erfüllt, so bekommt er eine Zahlungsaufforderung zugesandt. Hat der Student die Studiengebühren nicht bezahlt und sich für die Teilnahme am Masterseminar nicht eingetragen, erhält er eine Zahlungsaufforderung sowie einen Seminarplan zugeschickt. Hat der Student noch keine Hausarbeit angefertigt, wird ihm ein Thema zugesandt. Erstellen Sie die vollständige Entscheidungstabelle. Lösung:

1 2 3 4 5 6 7 8

Studiengebühr bezahlt J J J J N N N N

Teilnahme am Masterseminar J J N N J J N N

Hausarbeit angefertigt J N J N J N J N

Student zulassen X

Seminarplan zusenden X X X X

Zahlungsaufforderung zusenden X X X

Thema der Hausarbeit zusenden X X X

Übung 5: : Ein Händler führt Artikel, die in Warengruppen kategorisiert sind. Bestellt ein Kunde pro Tag Waren im Wert von weniger als 5 000,- €, so erhält er keinen Rabatt. Liegt der Bestellwert zwischen 5 000,- und 10 000,- €, so erhält er im Falle der Warengruppen 1, 3 oder 6 8% Rabatt, im Falle der Warengruppen 2, 4 oder 5 10% Rabatt. Ein Produkt kann nicht zu zwei Warengruppen gehören. Liegt der Bestellwert über 10 000,- €, so erhält der Kunde im Falle der Warengruppen 1, 3 oder 6 15% Rabatt, im Falle der Warengruppen 2, 4 oder 5 20% Rabatt. Der Kunde erhält außerdem ein Werbegeschenk zum Jahreswechsel, wenn er einen Rabatt von mindestens 10% erhalten hat. Die Summierung erfolgt getrennt nach den Warengruppenpaketen A( WG 1,3,und 6) und B (WG 2,4,5). Erstellen Sie eine vollständige Entscheidungstabelle. Lösung:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

5000 <= BW <= 10.000 J J J J J J J J N N N N N N N N

BW > 10.000 J J J J N N N N J J J J N N N N

Warengruppe: 1,3,6 (A) J J N N J J N N J J N N J J N N

Warengruppe: 2,4,5 (B) J N J N J N J N J N J N J N J N

Kein Rabatt X X

Rabatt 8% X

Rabatt 10% X

Rabatt 15% X

Rabatt 20% X

Werbegeschenk X X X

Nicht gültig X X X X X X X X X X

PMTS Übung Christiane Heumann

07_Lösungen Anweisungs- und Zweigüberdeckung: Aufgabe 1 Gegeben ist das folgende Programm. Es prüft, ob in einem Array ein bestimmtes Objekt enthalten ist. public bool contains(Object o, Object[] list){ int index = 0; bool result = false; while(index < list.lenght) { if(list[index].equals(o)){ result = true; } index++ } return result }

a) Wandeln Sie das Programm in einen Kontrollflussgraphen um. Lösung: public boolean contains(Object o, Object[] list){ int index = 0; // 1 boolean result = false; // 2 while(index < list.lenght) { // 3 if(list[index].equals(o)) { // 4 result = true; // 5 } index++; // 6 } return result; // 7 }

b) Heben Sie die Eingabewerte für eine minimale Menge von Testfällen für einen CO – Test (Anweisungsüberdeckungstest). Schreiben Sie die jeweiligen Zweige auf, die damit getestet werden.

Lösung: ausgeführte Anweisungen 1 – 2 – 3 – 4 – 5 – 6 – 3 – 7 Aufgabe 2 Gegeben ist das folgende Programm. Es berechnet die Differenz zwischen dem größten und dem kleinsten Element eines Integer-Arrays. public static int dif(int[] a) { int max = a[0]; int min = a[0]; for (int i = 1; i < a.lenght; i++) { if (a[i] > max) { max = a[i]; }

PMTS Übung Christiane Heumann

else if (a[i] < min) { min = a[i] } } return max-min; }

a) Wandeln Sie das Programm in einen Kontrollflussgraphen um. Lösung: public static int dif(int[] a) { // Anweisung-Nr. int max = a[0]; // 1 int min = a[0]; // 2 for (int i = 1; // 3 i < a.lenght; // 4 i++) { // 5 if (a[i] > max) { // 6 max = a[i]; // 7 } else if (a[i] < min) { // 8 min = a[i] // 9 } } return max-min; // 10 }

b) Geben Sie ein passendes Eingabearray an, mit dem eine Anweisungsüberdeckung (C0 – Test) erreicht wird. Geben Sie die Reihenfolge der Anweisungen an, in der sie durchlaufen werden.

a = {2,3,1} 1 – 2 -3 – 4 – 6 – 7 – 5 – 4 – 6 – 8 - 9 – 5 – 4 – 10

Aufgabe 34 Gegeben ist das folgende Programm. public int[] sort (int bestand[]) { boolean change = true; if (bestand.lenght > 1) { while (change) { change = false; for (int i = bestand.lenght - 1; i > 0; i--) { int i1 = bestand[i]; int i2 = bestand[i-1]; if (i1 < i2) { bestand[i] = i2; bestand[i - 1] = i1; change = true; } } } } return bestand;

4 In Anlehnung an die Vorlesung „Software Engineering“ von Prof. Rumpe aus dem Wintersemester 2008/2009

PMTS Übung Christiane Heumann

}

a) Entwerfen Sie einen Kontrollflussgraphen für die Methode „sort“ public int[] sort (int bestand[]) { // Anweisung-Nr. boolean change = true; // 1 if (bestand.lenght > 1) { // 2 while (change) { // 3 change = false; // 4 for (int i = bestand.lenght - 1; // 5 i > 0; // 6 i--) { // 7 int i1 = bestand[i]; // 8 int i2 = bestand[i-1]; // 9 if (i1 < i2) { // 10 bestand[i] = i2; // 11 bestand[i - 1] = i1; // 12 change = true; // 13 } } } } return bestand; // 14 }

b) Geben Sie ein Feld mit Eingabewerten an, dass nötig ist, um eine Anweisungsüberdeckung (C0 – Test) zu erreichen. Schrieben Sie die Reihenfolge der Anweisungen auf, in der sie getestet werden. Lösung: Ein Datensatz ist ausreichend, um eine Anweisungsüberdeckung zu erreichen. Wir nehmen: {4,3} Die Anweisungen werden in dieser Reihenfolge ausgeführt: 1 – 2 – 3 – 4 – 5 – 6 – 8 – 9 – 10 – 11 – 12 – 13 – 7 – 6 – 3 – 4 – 5 – 6 – 8 – 9 – 10 – 7 – 6 – 3 – 14

Aufgabe 45 Gegeben ist folgendes Programm: a = eingabe[0]; b = eingabe[1]; c = eingabe[2]; void abc() { while ((a+b+c)<100){ if ((a-b)<c) { b = b+1;

5 In Anlehnung an die Vorlesung „Software Systems Engineering“ von Dr. Schäfer aus dem Wintersemester

2010/2011

PMTS Übung Christiane Heumann

} if ((b+c)==a){ c = c+2; } else{ if (a==b){ a = a+1; } } a = a+1; } }

a) Entwerfen Sie einen Kontrollflussgraphen für die Methode „abc“. Lösung:

a = eingabe[0]; b = eingabe[1]; c = eingabe[2]; void abc() // Anweisung-Nr. { while ((a+b+c)<100){ // 1 if ((a-b)<c) { // 2 b = b+1; // 3 } if ((b+c)==a){ // 4 c = c+2; // 5 } else{ // 6 if (a==b){ // 7 a = a+1; // 8 } } a = a+1; // 9 } }

b) Finden Sie eine minimale Menge von Testfällen

(Eingabe-Arrays mit Belegungen der Variablen a, b und c), die bei der Ausführung alle Anweisungen überdecken (C0 - Test). Notieren Sie die Reihenfolge der dabei ausgeführten Codezeilen. Lösung: [a,b,c] = [0,0,0] Ausgeführte Codezeilen: - 1- 2 - 4 - 5 - 9 - 1 - 2 - 3 - 4 - 6 - 7 - 8 - 9 -1- ...usw.

c) Finden Sie eine minimale Menge von Testfällen, die bei Ausführung alle Zweige überdecken

(C1 - Test). Notieren Sie die Reihenfolge der dabei ausgeführten Codezeilen. Lösung: [a,b,c] = [0,0,0] Ausgeführte Codezeilen:-1- -2- -4- -5- -9- -1- -2- -3- -4- -6- -7- -8- -9- -1- -2- -4- -5- -9- -1- -2- -3- -4- -6- -7- -9- -1- -2- -3- -4- -6- -7- -9- -1-…usw.

PMTS Übung Christiane Heumann

Aufgabe 56 Das folgende Programmfragment soll getestet werden: if (x < 0) x = -x; if (y < 0) y = -y; if (x < y) {

max = y; min = x;

} else {

max = x; min = y;

} switch (max % min) { case 0: r = 0;

break; case 1: r = -1;

break; case 2: r = 1;

break; }

a) Wie viele Testläufe sind mindestens erforderlich, um einen Überdeckungstestnach C0 durchzuführen? Geben Sie konkrete Werte für die Variablen x und y an, um diesen C0-Test durchzuführen.

b) Wie viele zusätzliche Läufe sind für einen C1-Test mindestens erforderlich? Geben Sie entsprechende Werte für x und y an.

Lösung: Um einen C0-Test durchzuführen, sind mindestens 3 Programmläufe erforderlich. Ein weiterer Programmlauf wird benötigt, um das Programmfragment nach C1 zu testen. Mögliche Testwerte enthält die folgende Tabelle:

x y

c0 -1 -7

-7 -2

-5 -7

c1 4 7

6 Aufgabe aus der „Programmieren II“ Vorlesung von Dr. Stuckmann

PMTS Übung Christiane Heumann

08_Lösungen Bedingungsüberdeckung 1.1 Sie haben folgende zusammengesetzte Bedingung zu erfüllen: a. Wenn a>0 und b>18 ist die Bedingung erfüllt (wahr). b. Wenn a>2 oder b<2 ist die Bedingung erfüllt (wahr). c. Wenn a>7 und b>18 und c<65 ist die Bedingung erfüllt (wahr) 1.1.1 Stellen Sie die Sachverhalte jeweils tabellarisch dar. Beispieltabelle:

Lösung 1.1.1

Ermitteln Sie jeweils die Anzahl und die Ausprägung der benötigten Testfälle, wenn folgende Überdeckung gefordert ist: 1.1.2 Einfache Bedingungsüberdeckung

Lösung 1.1.2 Teste jeden atomaren Ausdruck einmal zu wahr und einmal zu falsch!

A B C A ∧ B ∧ C

0 0 0 0

0 0 1 0

0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1

A B A ∧ B

0 0 0

0 1 0

1 0 0 1 1 1

A B A ∨ B

0 0 0

0 1 1

1 0 1 1 1 1

2 Ausdrücke, 2 Testfälle

2 Ausdrücke, 2 Testfälle

PMTS Übung Christiane Heumann

1.1.3 Mehrfachbedingungsüberdeckung

Lösung 1.1.3 Teste jede Kombination der Wahrheitswerte aller atomaren Ausdrücke!

2 Ausdrücke 4 Testfälle 2 Ausdrücke 4 Testfälle

1.1.4 Minimale Mehrfachbedingungsüberdeckung

Lösung 1.1.4 Teste den (Gesamt-)Ausdruck einmal zu wahr und einmal zu falsch sowie jede Kombination von Wahrheitswerten, bei denen die Änderung des Wahrheitswertes eines atomaren Ausdrucks den Wahrheitswert des zusammengesetzten Ausdrucks ändern kann!

3 Ausdrücke, 2 Testfälle

3 Ausdrücke, 8 Testfälle

PMTS Übung Christiane Heumann

2 Ausdrücke 3 Testfälle 2 Ausdrücke 3 Testfälle 3 Ausdrücke 4 Testfälle 1.2. Folgende Wahrheitswerttabelle ist gegeben: Welche Wertekombinationen von A, B und C sind nach der minimalen Mehrfach Bedingungsüberdeckung mit Testfällen zu bewirken?

Lösung 1.2

A 0 1 0 1 0 1 0 1 B 0 0 1 1 0 0 1 1

C 0 0 0 0 1 1 1 1

E 1 0 0 0 1 0 1 0