Übung 11 - Kontrollflussgraphen

fscheepy
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 153
Registriert: 14. Dez 2009 21:17

Übung 11 - Kontrollflussgraphen

Beitrag von fscheepy »

Hallo,
da ich leider nicht in der 11. Übung war, wollte ich fragen, wie detailliert ein solcher Kontrollflussgraph sein soll bzw. welche Informationen er enthalten muss. Hierbei habe ich drei verschiedene Versionen in den Folien gesehen: Foliensatz 11, Folie 10, 11 und 22. Ich nehme an, wir sollen uns an Folie 22 halten und alle Bedingungen/Kommandos in den Graphen schreiben?

m2c1
Windoof-User
Windoof-User
Beiträge: 41
Registriert: 20. Dez 2010 10:39

Re: Übung 11 - Kontrollflussgraphen

Beitrag von m2c1 »

fscheepy hat geschrieben:[...] Ich nehme an, wir sollen uns an Folie 22 halten und alle Bedingungen/Kommandos in den Graphen schreiben?
So haben wir's in unserer Übungsgruppe gemacht. Es ist ja auch für einen selbst die übersichtlichste Variante.

fscheepy
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 153
Registriert: 14. Dez 2009 21:17

Re: Übung 11 - Kontrollflussgraphen

Beitrag von fscheepy »

m2c1 hat geschrieben:So haben wir's in unserer Übungsgruppe gemacht. Es ist ja auch für einen selbst die übersichtlichste Variante.
Das stimmt wohl. Dann hätte ich noch zu den Coverage-Modellen eine Frage:
Line (Statement) Coverage habe ich so verstanden, dass jedes Kommando (Abfragen ausgeschlossen) ausgeführt wird.
Branch Coverage habe ich so verstanden, dass jede Bedingung einmal zu true und einmal zu false ausgewertet wird (daraus folgt immer 100% Statement Coverage?).
Bei Path Coverage bin ich mir nicht sicher. Wo ist hier der Unterschied zu Multicondition Coverage?
Multicondition Coverage sollte heißen, dass alle Kombinationen von Auswertungen der Bedingungen abgedeckt sind? (Sind hierbei auch nicht erreichbare Abfragen gemeint? Also auf Folie 22 im Fall
{a=2, b=0, x=2} wird ja "x > 1" gar nicht erst erreicht.)
Loop Coverage ist wohl selbsterklärend :mrgreen: .

Stimmt das soweit? Und kann mir jemand meine Fragen beantworten?

m2c1
Windoof-User
Windoof-User
Beiträge: 41
Registriert: 20. Dez 2010 10:39

Re: Übung 11 - Kontrollflussgraphen

Beitrag von m2c1 »

fscheepy hat geschrieben:Line (Statement) Coverage habe ich so verstanden, dass jedes Kommando (Abfragen ausgeschlossen) ausgeführt wird.
Meiner Meinung nach werden Abfragen hier nicht explizit ausgeschlossen. In Foliensatz 11, Folie 21 ist von allen Programmzeilen die Rede. Bedeutet also im Prinzip, dass du jeden Kasten im Kontrollflussdiagramm mal mit deinen Eingaben durchlaufen haben musst.
fscheepy hat geschrieben:Branch Coverage habe ich so verstanden, dass jede Bedingung einmal zu true und einmal zu false ausgewertet wird (daraus folgt immer 100% Statement Coverage?).
Je nachdem wie man "Bedingung" auffasst, sehe ich es so wie du. Es muss nicht jede atomare Bedingung zu true und false ausgewertet werden aber ergänzend zu Line Coverage musst du nun jeden abgehenden Pfad einer "IF-Box" gehen (also die gesamte IF-Bedingung muss einmal true und einmal false sein).
fscheepy hat geschrieben:Bei Path Coverage bin ich mir nicht sicher. Wo ist hier der Unterschied zu Multicondition Coverage?
Bei Multicondition Coverage geht es nun ergänzend zu Branch Coverage auch darum, dass jede atomare Bedingung einmal true und einmal false ist.
Path Coverage muss -wenn ich es richtig verstanden habe- jeden denkbaren Pfad durch den Kontrollflussgraphen abdecken.

allein
Mausschubser
Mausschubser
Beiträge: 60
Registriert: 15. Okt 2008 00:01

Re: Übung 11 - Kontrollflussgraphen

Beitrag von allein »

-deleted-
Zuletzt geändert von allein am 11. Mär 2012 00:28, insgesamt 1-mal geändert.

fscheepy
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 153
Registriert: 14. Dez 2009 21:17

Re: Übung 11 - Kontrollflussgraphen

Beitrag von fscheepy »

m2c1 hat geschrieben:Meiner Meinung nach werden Abfragen hier nicht explizit ausgeschlossen. In Foliensatz 11, Folie 21 ist von allen Programmzeilen die Rede. Bedeutet also im Prinzip, dass du jeden Kasten im Kontrollflussdiagramm mal mit deinen Eingaben durchlaufen haben musst.
Nicht explizit ausgeschlossen, nein, aber es ist egal, wie die Bedingungen (Rauten) ausgewertet werden, so lange man alle Kommandos (Rechtecke) erreicht.
m2c1 hat geschrieben:Es muss nicht jede atomare Bedingung zu true und false ausgewertet werden aber ergänzend zu Line Coverage musst du nun jeden abgehenden Pfad einer "IF-Box" gehen (also die gesamte IF-Bedingung muss einmal true und einmal false sein).
Genau so habe ich es auch verstanden. Jede Raute muss einmal true und einmal false sein.
m2c1 hat geschrieben:Bei Multicondition Coverage geht es nun ergänzend zu Branch Coverage auch darum, dass jede atomare Bedingung einmal true und einmal false ist.
Path Coverage muss -wenn ich es richtig verstanden habe- jeden denkbaren Pfad durch den Kontrollflussgraphen abdecken.
Abhängig davon, ob man nicht erreichbare Abfragen/Rauten (siehe Beispiel in meinem letzten Post) mitbetrachtet oder nicht, sollte das doch eigentlich äquivalent sein. (?)
Wie genau ist denn ein solcher Pfad definiert? Wenn wirklich alle möglichen Pfade gemeint sind, fehlt dann in dem Beispiel auf der Folie nicht unter anderem auch der Pfad, der durchlaufen wird, wenn {a=2, b=1, x=2}?

m2c1
Windoof-User
Windoof-User
Beiträge: 41
Registriert: 20. Dez 2010 10:39

Re: Übung 11 - Kontrollflussgraphen

Beitrag von m2c1 »

fscheepy hat geschrieben:
m2c1 hat geschrieben:Meiner Meinung nach werden Abfragen hier nicht explizit ausgeschlossen. In Foliensatz 11, Folie 21 ist von allen Programmzeilen die Rede. Bedeutet also im Prinzip, dass du jeden Kasten im Kontrollflussdiagramm mal mit deinen Eingaben durchlaufen haben musst.
Nicht explizit ausgeschlossen, nein, aber es ist egal, wie die Bedingungen (Rauten) ausgewertet werden, so lange man alle Kommandos (Rechtecke) erreicht.
Nein, du musst auch alle Bedingungen durchlaufen, nur wo du diese verlässt, ist egal.
fscheepy hat geschrieben:
m2c1 hat geschrieben:Bei Multicondition Coverage geht es nun ergänzend zu Branch Coverage auch darum, dass jede atomare Bedingung einmal true und einmal false ist.
Path Coverage muss -wenn ich es richtig verstanden habe- jeden denkbaren Pfad durch den Kontrollflussgraphen abdecken.
Abhängig davon, ob man nicht erreichbare Abfragen/Rauten (siehe Beispiel in meinem letzten Post) mitbetrachtet oder nicht, sollte das doch eigentlich äquivalent sein. (?)
Ich hab' dein Beispiel nicht mehr ganz mitbekommen bzw. in Erinnerung (es war auf jeden Fall unvollständig).
fscheepy hat geschrieben:Wie genau ist denn ein solcher Pfad definiert? Wenn wirklich alle möglichen Pfade gemeint sind, fehlt dann in dem Beispiel auf der Folie nicht unter anderem auch der Pfad, der durchlaufen wird, wenn {a=2, b=1, x=2}?
Na du fängst vorne an und gehst jede mögliche Kombinationen von Rauten und Rechtecken durch um ans Ende zu kommen. Das Beispiel auf Folie 22 ist wohl fehlerhaft, vgl. http://d120.de/forum/viewtopic.php?f=199&t=24850

fscheepy
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 153
Registriert: 14. Dez 2009 21:17

Re: Übung 11 - Kontrollflussgraphen

Beitrag von fscheepy »

m2c1 hat geschrieben:Nein, du musst auch alle Bedingungen durchlaufen, nur wo du diese verlässt, ist egal.
Okay, danke für die Klarstellung.
m2c1 hat geschrieben:Ich hab' dein Beispiel nicht mehr ganz mitbekommen bzw. in Erinnerung (es war auf jeden Fall unvollständig).
Ah, es geht bei Multicondition Coverage also darum, dass innerhalb der Bedingungen alle Kombinationen von Auswertungen der elementaren Bedingungen abgedeckt sind? Also wie hier beschrieben: http://en.wikipedia.org/wiki/Code_cover ... n_coverage ? Dabei nehme ich an, dass nur innerhalb einer Abfrage alle Kombinationen durchgegangen werden müssen und nicht im ganzen Programm alle möglichen Kombinationen aller elementaren Bedingungen.
m2c1 hat geschrieben:Na du fängst vorne an und gehst jede mögliche Kombinationen von Rauten und Rechtecken durch um ans Ende zu kommen. Das Beispiel auf Folie 22 ist wohl fehlerhaft, vgl. http://d120.de/forum/viewtopic.php?f=199&t=24850
Danke für den Link, dann habe ich es wohl doch richtig verstanden. Wenn jetzt meine Beschreibung der Multicondition Coverage so stimmt, dann bin ich glücklich. :mrgreen:

Benutzeravatar
olg
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 297
Registriert: 1. Okt 2008 19:24

Re: Übung 11 - Kontrollflussgraphen

Beitrag von olg »

fscheepy hat geschrieben: Ah, es geht bei Multicondition Coverage also darum, dass innerhalb der Bedingungen alle Kombinationen von Auswertungen der elementaren Bedingungen abgedeckt sind? Also wie hier beschrieben: http://en.wikipedia.org/wiki/Code_cover ... n_coverage ? Dabei nehme ich an, dass nur innerhalb einer Abfrage alle Kombinationen durchgegangen werden müssen und nicht im ganzen Programm alle möglichen Kombinationen aller elementaren Bedingungen.
Genau, innerhalb einer Anweisung selbst müssen irgendwann mal die möglichen Kombinationen der Bedingungen durchlaufen worden sein.

Nehmen wir das Beispiel

Code: Alles auswählen

if (a && b && c && d) { 
    FOO 
} else { 
    BAR 
} 
if (x || y) { 
    EE 
} else {  
    FF 
}
Dann entstehen bei der Multicondition Coverage 2^4 + 2^2 Testfälle - genau alle True/False Kombinationen der Variablen a-d in der ersten und IF-Anweisung und alle Kombinationen von x-y in der zweiten.

Bei der Multicondition Coverage werden also alle Knoten im Graph durchlaufen.

Path Coverage heißt im Vergleich dazu, dass alle möglichen Pfade im Programm durchlaufen werden.

Man benötigt in diesem Fall Testfälle, die alle Kombinationen der Blöcke durchläuft:
Die Kombinationen sind

Code: Alles auswählen

FOO, EE - Als Beispiel mal die Testfälle, die das erreichen: {(a,b,c,d,x = true), (a,b,c,d,y = true)}
FOO, FF 
BAR, EE
BAR, FF
In diesem Fall benötigt man also vier Testfälle. Wenn das Programm als Kontrollflussgraph gegeben ist, sucht man sich einfach die alternativen Pfade im Programm raus und durchläuft sie in allen Kombinationen.
"To Perl, or not to Perl, that is the kvetching." ~Larry Wall

fscheepy
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 153
Registriert: 14. Dez 2009 21:17

Re: Übung 11 - Kontrollflussgraphen

Beitrag von fscheepy »

Sehr gut, dann sollte sich das geklärt haben. Danke für die Hilfe. :)

Antworten

Zurück zu „Archiv“