Kontrollflussgraph (zB Übung 12)

tud
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 117
Registriert: 9. Mär 2011 14:07

Kontrollflussgraph (zB Übung 12)

Beitrag von tud » 14. Mär 2011 12:24

In der zwölften Übung ist der erpichte Student aufgefordert, einen Kontrollflussgraphen zu erstellen. Folie 10, T12 zeigt auch einen solchen, allerdings unbeschriftet. Man könnte ja in die blauen Kästchen auch den Code reinschreiben und bei einer Verzweigung die Pfeile beschriften. Wie ist das nun gedacht? Was wäre in der Klausur zu tun?

dschneid
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 271
Registriert: 14. Dez 2009 00:56

Re: Kontrollflussgraph (zB Übung 12)

Beitrag von dschneid » 14. Mär 2011 12:37

Ich würde mich im Groben an diese Form halten. Ich schätze aber mal, dass du für Beschriftungen, die dir das Leben einfacher machen, keine Punkte abgezogen bekommen wirst.

tud
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 117
Registriert: 9. Mär 2011 14:07

Re: Kontrollflussgraph (zB Übung 12)

Beitrag von tud » 14. Mär 2011 12:49

dschneid hat geschrieben:Ich würde mich im Groben an diese Form halten. Ich schätze aber mal, dass du für Beschriftungen, die dir das Leben einfacher machen, keine Punkte abgezogen bekommen wirst.
Ich lass sie lieber weg, da bin ich schneller, wenn das für die volle Punktzahl auch ausreicht.

Bei Aufgabe b ist nach einer minimalen Menge an Testfällen für branch coverage und loop coverage gefragt. Das heißt ja, dass es keine Menge mit weniger Elementen, die auch branch coverage bzw. loop coverage erfüllen, gibt.

Dann ist in meinen Augen die Aufgabe c aber sinnlos. Hier müsste dann doch nur die Anzahl der Elemente der entsprechenden Mengen aus Teilaufgabe b bestimmt werden.

tud
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 117
Registriert: 9. Mär 2011 14:07

Re: Kontrollflussgraph (zB Übung 12)

Beitrag von tud » 14. Mär 2011 14:51

Habe noch eine weitere Frage: Was ist der Unterschied zwischen Line (Statement) Coverage und Branch Coverage?

M.Scholz
Windoof-User
Windoof-User
Beiträge: 31
Registriert: 18. Sep 2009 10:19

Re: Kontrollflussgraph (zB Übung 12)

Beitrag von M.Scholz » 14. Mär 2011 15:07

tud hat geschrieben:Habe noch eine weitere Frage: Was ist der Unterschied zwischen Line (Statement) Coverage und Branch Coverage?
Statement Coverage verlangt nur, dass jede Programmzeile einmal durchlaufen wird, während Branch Coverage zusätzlich verlangt, dass jede IF-Anweisung einmal als true und einmal als false ausgewertet wird.

Schau dir mal Foliensatz 12 Folie 22 an und geh dort alle angegebenen Tests zu Statement / Branch Coverage durch, dann wird der unterschied ersichtlich.

tud
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 117
Registriert: 9. Mär 2011 14:07

Re: Kontrollflussgraph (zB Übung 12)

Beitrag von tud » 14. Mär 2011 15:14

M.Scholz hat geschrieben:
tud hat geschrieben:Habe noch eine weitere Frage: Was ist der Unterschied zwischen Line (Statement) Coverage und Branch Coverage?
Statement Coverage verlangt nur, dass jede Programmzeile einmal durchlaufen wird, während Branch Coverage zusätzlich verlangt, dass jede IF-Anweisung einmal als true und einmal als false ausgewertet wird.

Schau dir mal Foliensatz 12 Folie 22 an und geh dort alle angegebenen Tests zu Statement / Branch Coverage durch, dann wird der unterschied ersichtlich.
Ah okay, der Unterschied liegt also darin, dass man bei einem if ohne else-Block bei Branch Coverage immer noch true und falso testen muss, während man sich bei Statement Coverage auf den true-Fall beschränken kann.

Und was sagt ihr zu meinen Gedanken zur Aufgabenstellung c? Ist das wirklich alles?

jst
Neuling
Neuling
Beiträge: 6
Registriert: 1. Nov 2010 19:04

Re: Kontrollflussgraph (zB Übung 12)

Beitrag von jst » 14. Mär 2011 15:35

Um rauszufinden, ob du bei der c) Recht hast wäre es hilfreich mal die Menge der Testfälle für 100% Path Coverage aufzuschreiben. In der b) ist ja nur Branch Coverage gefragt.
Ich hab das grade mal versucht und finde im Moment nur 7 Testfälle, als Lösung bei der c) hatte ich mir aber 9 Pfade aufgeschrieben. Meine Begründe für die 9 Pfade war 1+2*2*2, also der a==b Pfad plus bei jedem if zwei Möglichkeiten.
Jetzt sehe ich allerdings, dass mein 3. if (die while-Schleife) vom 2.if (wie groß n ist) abhängt. Deshalb rätsel ich jetzt, ob die 9Pfade überhaupt stimmen, oder ob ich irgendwas übersehe...

Okay, also ich denke es sind nur 7 Pfade und 7 Testfälle.
Begründung: 1 (a==b) + 2 (a>b oder a<b) * 3 (n>0 oder n<0 oder n=0)
Zuletzt geändert von jst am 14. Mär 2011 15:44, insgesamt 1-mal geändert.

tud
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 117
Registriert: 9. Mär 2011 14:07

Re: Kontrollflussgraph (zB Übung 12)

Beitrag von tud » 14. Mär 2011 15:41

Ich verstehe allgemein den Unterschied nicht. Unabhängig vom Code.

Die Anzahl der Pfade ist doch genau die Anzahl der Testfälle. Zwei Testfälle in einer minimalen Menge an Testfällen können schließlich nie den gleichen Pfad haben, oder doch?

jno
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 144
Registriert: 18. Mai 2007 09:41

Re: Kontrollflussgraph (zB Übung 12)

Beitrag von jno » 14. Mär 2011 16:01

Ich hab auch mal eine Frage zur b): Stimmen 3 Fälle für die Branch-Coverage?
Meine Begründung wäre:

1. Fall a=b, n<0:
if (a==b) -> TRUE
while (n>0) -> FALSE

2. Fall a>b, n<0
if(a==b) -> FALSE
if(a>b) -> TRUE
if(n<0) -> TRUE
while(n>0) -> FALSE

3. Fall a<b, n>0
if(a==b) -> FALSE
if(a>b) -> FALSE
if(n<0) -> FALSE
while(n>0) -> TRUE

Jetzt war jede von den 4 Abfragen mindestens einmal TRUE und einmal FALSE.

tud
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 117
Registriert: 9. Mär 2011 14:07

Re: Kontrollflussgraph (zB Übung 12)

Beitrag von tud » 14. Mär 2011 16:06

jno hat geschrieben: 1. Fall a=b, n<0:
if (a==b) -> TRUE
while (n>0) -> FALSE
Das geht so schon einmal nicht, da bei a==b die Funktion sofort zu Ende ist. Aber das macht ja wenig, weil den Fall "while (n>0) -> FALSE" hast du ja weiter unten schon.

dschneid
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 271
Registriert: 14. Dez 2009 00:56

Re: Kontrollflussgraph (zB Übung 12)

Beitrag von dschneid » 14. Mär 2011 16:07

Ich habe drei fast gleiche Fälle, nämlich: (a = b, n = 0), (a < b, n < 0) und (a > b, n > 0). Wenn man die Zahlen entsprechend wählt, kann man dieselbe Testfallmenge auch für Loop Coverage benutzen (vorausgesetzt, dass bei Loop Coverage immer noch Branch Coverage verlangt wird).

tud
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 117
Registriert: 9. Mär 2011 14:07

Re: Kontrollflussgraph (zB Übung 12)

Beitrag von tud » 14. Mär 2011 16:11

dschneid hat geschrieben:Ich habe drei fast gleiche Fälle, nämlich: (a = b, n = 0), (a < b, n < 0) und (a > b, n > 0). Wenn man die Zahlen entsprechend wählt, kann man dieselbe Testfallmenge auch für Loop Coverage benutzen (vorausgesetzt, dass bei Loop Coverage immer noch Branch Coverage verlangt wird).
Ich dachte bei Loop Coverage kommt es nur auf die Schleifen an. Das könnte man hier mit einem Testfall (a=1,b=0,n=10) erledigen.

ms1006
Erstie
Erstie
Beiträge: 14
Registriert: 1. Mai 2009 15:58

Re: Kontrollflussgraph (zB Übung 12)

Beitrag von ms1006 » 14. Mär 2011 16:12

Hallo!

Was ist denn mit dem Graph in T12, Folie 22? Ist das auch ein Kontrollflussgraph? Dieser Graph erscheint mir für die White-Box-Tests am besten, da Anweisung (Rechtecke) und If-Statements (Rauten) klar gekennzeichnet sind.

dschneid
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 271
Registriert: 14. Dez 2009 00:56

Re: Kontrollflussgraph (zB Übung 12)

Beitrag von dschneid » 14. Mär 2011 16:16

tud hat geschrieben:Ich dachte bei Loop Coverage kommt es nur auf die Schleifen an. Das könnte man hier mit einem Testfall (a=1,b=0,n=10) erledigen.
Kann auch sein... Ich finde das ganze Thema immer mieser, je genauer ich drüber nachdenke. Mir ist zum Beispiel nicht klar, wie man im Allgemeinen angeben soll, wie viele Pfade man für Path Coverage testen muss, weil es je nach der Anzahl der Schleifendurchläufe ja verschieden viele Pfade gibt. Das kann je nach den Eingaben beliebig sein.
ms1006 hat geschrieben:Was ist denn mit dem Graph in T12, Folie 22? Ist das auch ein Kontrollflussgraph? Dieser Graph erscheint mir für die White-Box-Tests am besten, da Anweisung (Rechtecke) und If-Statements (Rauten) klar gekennzeichnet sind.
Den brauchst du aber nur, wenn du Multicondition Coverage testest, also die einzelnen Bestandteile der Bedingungen von if- und while-Statements betrachtest. Sonst finde ich ihn eher unübersichtlich, weil er mehr Zweige hat als man wirklich testen müsste. Für diesen einen Fall ist aber sicherlich besser geeignet, das stimmt.

jno
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 144
Registriert: 18. Mai 2007 09:41

Re: Kontrollflussgraph (zB Übung 12)

Beitrag von jno » 14. Mär 2011 16:27

tud hat geschrieben:
jno hat geschrieben: 1. Fall a=b, n<0:
if (a==b) -> TRUE
while (n>0) -> FALSE
Das geht so schon einmal nicht, da bei a==b die Funktion sofort zu Ende ist. Aber das macht ja wenig, weil den Fall "while (n>0) -> FALSE" hast du ja weiter unten schon.
Oh ja, stimmt. Also hätten wir dann zusammenfassend

Branch Coverage: 3 Fälle
Path Coverage: 7 Pfade, das seh ich genauso wie jst.
Loop Coverage: Seh ich genauso wie tud, ein Fall reicht um die while mindestens 2 mal auszuführen, dementsprechend gibts auch nur einen Pfad.

Hoffe, das stimmt, ich werd hier auch langsam verwirrt bei dem Thema :-/

Antworten

Zurück zu „Archiv“