Seite 1 von 1

Condition Coverage

Verfasst: 16. Feb 2010 15:52
von John
Um für das if-Statement if(v > 100 && b) 100% Condition-Coverage zu erreichen, werden auf Folie 35, Foliensatz 2009-11-11b die Testfälle
"v = 90, b = true" und
"v = 101, b = false" angegeben.

In dem Fall v = 90 wird allerdings b garnicht erst ausgewertet. Heißt das nicht, dass zusätzlich ein Fall angegeben werden muss, sodass die zweite Bedingung auch einmal als true ausgewertet wird, nachdem sie im zweiten Fall schon false war?

Genau so wird es nämlich erklärt auf Folie 3 der Lösung der 4. Übung, allerdings im Rahmen eines anderen Beispiels.

Re: Condition Coverage

Verfasst: 16. Feb 2010 16:08
von John
Gleich noch passend dazu, eine Folie später: Wieso bieten die zwei abgebildeten Bedingungen 100% Basic Block Coverage? Der Block print("if"); wird nie ausgeführt. (Wie auch in der Folie davor angedeutet)

Re: Condition Coverage

Verfasst: 16. Feb 2010 17:24
von corposano
Hallo !
Zu:
Um für das if-Statement if(v > 100 && b) 100% Condition-Coverage zu erreichen, werden auf Folie 35, Foliensatz 2009-11-11b die Testfälle
"v = 90, b = true" und
"v = 101, b = false" angegeben.

In dem Fall v = 90 wird allerdings b garnicht erst ausgewertet. Heißt das nicht, dass zusätzlich ein Fall angegeben werden muss, sodass die zweite Bedingung auch einmal als true ausgewertet wird, nachdem sie im zweiten Fall schon false war?
Also auf Folie 33 wird "(v > 100 && b)" als compound expression eingeführt...
Condition Coverage soll ja (wenn ich es recht verstehe...auch bei wicki so erklärt...) bedeuten, dass jeder einzelne Ausdruck beim Testen des compounds einmal war und einmal falsch sein muss.
Da ja im ersten Fall b nicht mehr gewertet werden muss, wird mit false-Belegung von b die Coverage erreicht...
...denke dies wird absichtlich so eingeführt , um zu zeigen, dass Cond.Coverage nicht gleich Branch COverage ist (, aber dennoch kann...)

Re: Condition Coverage

Verfasst: 16. Feb 2010 17:50
von John
corposano hat geschrieben:Da ja im ersten Fall b nicht mehr gewertet werden muss, wird mit false-Belegung von b die Coverage erreicht...
Die Definition von Condition Coverage ist ja "jede Condition wird einmal als true, und einmal als false ausgewertet." Wenn b also garnicht erst ausgewertet wird, dann ist der Fall b=false also laut Definition mit dem ersten Test nicht abgedeckt.

Re: Condition Coverage

Verfasst: 16. Feb 2010 18:53
von corposano
Wenn b also garnicht erst ausgewertet wird, dann ist der Fall b=false also laut Definition mit dem ersten Test nicht abgedeckt.
Stimmt ...gut das ich mir des nochmal angeschaut hab...:http://en.wikipedia.org/wiki/Code_coverage

Das gegeben Beispiel zu Cond.Coverage untersteicht deine Position eindeutig.

Gruß
David

Re: Condition Coverage

Verfasst: 16. Feb 2010 19:10
von John
Das Beispiel auf Wikipedia unterstreicht leider nicht meine Aussage :) Aber aus einem guten Grund: Beim angegebenen Beispiel handelt es sich um eine Funktion geschrieben in PASCAL - dort werden auch folgende Conditions ausgewertet, wenn eine vorherige bereits false war.

EDIT: Ah, jetzt seh ich, was du meintest: "Condition coverage can be satisfied with tests, which do 'foo(7,1)', 'foo(7,0)' and 'foo(4,0)'." Da hauts dann wieder hin. Oberes Kommentar bezieht sich auf das darauf folgende Beispiel "if a and b then".

Re: Condition Coverage

Verfasst: 16. Feb 2010 19:15
von corposano
Ok, ok...
kannste mir bitte dein Avatar schicken...aber ohne Brett vorm Kopf...hab ich offensichtlich schon :mrgreen:

Re: Condition Coverage

Verfasst: 21. Feb 2010 18:37
von robert.n
Also sind die Beispiele auf Folie 35 und 36 tatsächlich falsch?

Ich verzweifle hier nämlich langsam. Da ist mal etwas "Greifbares" in dem all dem SE-Dunst und dann gibts ausgerechnet da nur noch Widersprüche.

Re: Condition Coverage

Verfasst: 21. Feb 2010 19:43
von Diablo
Geh auf IWork da wurden die Folien mal wieder "berichtigt" ..... :roll: gut dass das SVN als sichere Datenquelle genannt wurde .... (da hat übrigens in lecture der letzte update am 3.02 stattgefunden.... )

Re: Condition Coverage

Verfasst: 21. Feb 2010 20:03
von tigris
Das entzieht sich mal wieder meinem Verständnis, dass der Ort, über den es am einfachsten ist sich die Unterlagen zu beziehen, der Ort ist, an dem die fehlerhaften Folien liegen. (Ich hoffe die Kommata sind richtig gesetzt :roll: ...)
Ist nicht gerade das SVN Repository der Ort an dem Änderungen nachvollziehbar wären?
Es wäre auch glaube ich nicht zu viel verlangt einfach einen neuen Ordner zu erstellen in dem halt immer die aktuellen Folien sind. Dann weiß man, dass in jedem Fall die Vorlesungs-Folien alle noch da sind, und hat trotzdem die Möglichkeit eine überarbeitete hoffentlich korrekte Form mit in die kommenden Semester nehmen zu können.