Seite 1 von 1

Simple Condition Coverage

Verfasst: 25. Feb 2015 11:53
von lkbaerenfaenger
Hi,

ich glaube, ich habe Simple Condition Coverage nicht verstanden. So habe ich bisher gedacht, dass es funktioniert: Jede Bool'sche Variable in der Condition des if-Statements hat einmal mit true und eimal mit false belegt zu sein. Beispiel:

if (a & b) { // No shortcut-eval! b is being looked at no matter what!
// ...
} else {
// ...
}

Für Simple Condition Coverage reichen zwei Test-Points aus:
1. a = true, b = false
2. a = false, b = true

In beiden Fällen wertet die if-Condition zu false aus, und der true-Zweig wird nie betreten. Keine Branch-Coverage! Nun betrachten wir das obige Beispiel mit Shortcut-Eval (&&). Nun brauchen wir noch einen zusätzlichen Test-Point für Simple Condition Coverage, bei Test-Point 2 wird b nämlich nicht mehr angeguckt.
3. a = true, b = true

Test-Point 3 wertet true aus, und folglich impliziert Simple Condition Coverage mit Shortcut-Eval Branch-Coverage!

:arrow: Ist meine obige (fett-gedruckte) Definition korrekt? Irgendwie kommt mir das falsch vor...

Viele Grüße und viel Erfolg an alle Leidengenossen :)
Lucas

Re: Simple Condition Coverage

Verfasst: 25. Feb 2015 12:24
von svenamann
Siehe Foliensatz 9, Seite 44:

"Recall, if we have shortcut evaluation, simple condition coverage implies branch coverage!"

Gruß,
Sven

P.S.: Dein dritter Testfall müsste a=true, b=true sein. Tippfehler.

Re: Simple Condition Coverage

Verfasst: 25. Feb 2015 12:37
von lkbaerenfaenger
P.S.: Dein dritter Testfall müsste a=true, b=true sein. Tippfehler.
Merci ;)

Ich wollte eigentlich wissen, ob die folgende Definition ausreichend ist:

Simple Condition Coverage := Jede Bool'sche Variable in der Condition des if-Statements hat einmal mit true und eimal mit false belegt zu sein.

Re: Simple Condition Coverage

Verfasst: 25. Feb 2015 13:29
von svenamann
Nein, Bool'sche Variable reicht nicht. Simple Conditions, also auch sowas wie "i < 100".
Außerdem geht es nicht um die Belegung, sondern um die Auswertung.

Foliensatz 9, Seite 39: Simple Condition Coverage requires that each simple condition be evaluated as true and false at least once.

Gruß,
Sven

Re: Simple Condition Coverage

Verfasst: 25. Feb 2015 13:35
von lkbaerenfaenger
Danke!

Re: Simple Condition Coverage

Verfasst: 25. Feb 2015 21:10
von martinl
Nach welchem Prinzip werden die BasicBlocks nummeriert?
Manchmal ist der else Block der nächste und manchmal wird erst die nachfolgende SimpleCondition in der if Bedingung ausgewertet -
Z.B. bei if(x && y) würde ich es logisch finden wenn der erste Basic Block die Auswertung von x wäre und der zweite die Auswertung von y.

P.S.: In Vl_6_S46 scheint ein Fehler zu sein. Im ControllflowGraph in Block0 steht ein t(true) das aber auf den else Block zeigt. Zudem steht im Code (v > 100) und im Block (v >= 100).
Beste Grüße
Martin

Re: Simple Condition Coverage

Verfasst: 25. Feb 2015 23:09
von svenamann
Ich nehme an du redest von Foliensatz 9, nicht 6.

Die Blocks sind nach der Reihenfolge nummeriert, in der sie im Bytecode stehen würden. Keine Angst, das ist nicht klausurrelevant.
Da ist allerdings kein Fehler, die Bedingung ist nur negiert (v > 100 == !(100 >= v)) und damit stimmen auch die Zeiger.

Gruß,
Sven