Kontrollflussgraph (zB Übung 12)
Kontrollflussgraph (zB Übung 12)
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?
Re: Kontrollflussgraph (zB Übung 12)
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.
Re: Kontrollflussgraph (zB Übung 12)
Ich lass sie lieber weg, da bin ich schneller, wenn das für die volle Punktzahl auch ausreicht.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.
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.
Re: Kontrollflussgraph (zB Übung 12)
Habe noch eine weitere Frage: Was ist der Unterschied zwischen Line (Statement) Coverage und Branch Coverage?
Re: Kontrollflussgraph (zB Übung 12)
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.tud hat geschrieben:Habe noch eine weitere Frage: Was ist der Unterschied zwischen Line (Statement) Coverage und Branch Coverage?
Schau dir mal Foliensatz 12 Folie 22 an und geh dort alle angegebenen Tests zu Statement / Branch Coverage durch, dann wird der unterschied ersichtlich.
Re: Kontrollflussgraph (zB Übung 12)
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.M.Scholz hat geschrieben: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.tud hat geschrieben:Habe noch eine weitere Frage: Was ist der Unterschied zwischen Line (Statement) Coverage und Branch Coverage?
Schau dir mal Foliensatz 12 Folie 22 an und geh dort alle angegebenen Tests zu Statement / Branch Coverage durch, dann wird der unterschied ersichtlich.
Und was sagt ihr zu meinen Gedanken zur Aufgabenstellung c? Ist das wirklich alles?
Re: Kontrollflussgraph (zB Übung 12)
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)
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.
Re: Kontrollflussgraph (zB Übung 12)
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?
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?
Re: Kontrollflussgraph (zB Übung 12)
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.
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.
Re: Kontrollflussgraph (zB Übung 12)
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.jno hat geschrieben: 1. Fall a=b, n<0:
if (a==b) -> TRUE
while (n>0) -> FALSE
Re: Kontrollflussgraph (zB Übung 12)
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).
Re: Kontrollflussgraph (zB Übung 12)
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.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).
Re: Kontrollflussgraph (zB Übung 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.
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.
Re: Kontrollflussgraph (zB Übung 12)
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.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.
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.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.
Re: Kontrollflussgraph (zB Übung 12)
Oh ja, stimmt. Also hätten wir dann zusammenfassendtud hat geschrieben: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.jno hat geschrieben: 1. Fall a=b, n<0:
if (a==b) -> TRUE
while (n>0) -> FALSE
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 :-/