Simple Condition Coverage

lkbaerenfaenger
Mausschubser
Mausschubser
Beiträge: 44
Registriert: 13. Mär 2012 12:44

Simple Condition Coverage

Beitrag 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
Zuletzt geändert von lkbaerenfaenger am 25. Feb 2015 12:37, insgesamt 1-mal geändert.

svenamann
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 145
Registriert: 6. Mai 2013 18:04

Re: Simple Condition Coverage

Beitrag 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.

lkbaerenfaenger
Mausschubser
Mausschubser
Beiträge: 44
Registriert: 13. Mär 2012 12:44

Re: Simple Condition Coverage

Beitrag 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.

svenamann
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 145
Registriert: 6. Mai 2013 18:04

Re: Simple Condition Coverage

Beitrag 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

lkbaerenfaenger
Mausschubser
Mausschubser
Beiträge: 44
Registriert: 13. Mär 2012 12:44

Re: Simple Condition Coverage

Beitrag von lkbaerenfaenger »

Danke!

martinl
Windoof-User
Windoof-User
Beiträge: 31
Registriert: 26. Apr 2012 20:40

Re: Simple Condition Coverage

Beitrag 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

svenamann
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 145
Registriert: 6. Mai 2013 18:04

Re: Simple Condition Coverage

Beitrag 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

Antworten

Zurück zu „Archiv“