Coverage/Abdeckung - die verschiedene Modelle

Lemurhummel438
Erstie
Erstie
Beiträge: 15
Registriert: 21. Sep 2011 22:17

Coverage/Abdeckung - die verschiedene Modelle

Beitrag von Lemurhummel438 » 17. Feb 2012 21:02

Hallo,

habe versucht, die Folien zu den Coverage-Modellen zu verstehen, aber mir sind immer noch ein paar Sachen unklar. Deswegen wollte ich das mal exemplarisch an einer Funktion durchgehen.
Hier die Funktion:

Code: Alles auswählen

void f(int i, boolean b) {
    if(i<0)
        throw new IllegalArgumentException();
    for( ; i < 1 && b; ++i) {
        doSth();
    }
}
Jetzt versuch ich mal, Testdaten aufzustellen, um jeweils 100% Coverage zu erreichen, und zu begründen, warum das so ist.
Wäre nett, wenn mir jemand sagen könnte, was davon stimmt und wo Fehler sind. :)

* Statement c.: 1) i=-1, b=egal ; 2) i=0, b=t
Mit 1) wird das throw-Statement ausgeführt, mit 2) das doSth()-Statement, dann das ++i.

* Branch c.: 1) i=-1, b=egal ; 2) i=0, b=t
1) nimmt den Pfad zum throw-Statement. 2) 1. Iteration: Nimmt den Pfad zum for-Statement, dann in das for-Statement. 2. Iteration: Nimmt Pfad "über" das for-Statement.

* Simple Condition c.: 1) i=-1, b=egal ; 2) i=0, b=false ; 3) i=0, b=true
1) Der atomare Condition-Ausdruck i<0 wird true. 2) Der Condition-Ausdruck i<0 wird false. Außerdem wird i<1 wahr, b wird false. 3) 1. Iteration: i<1 wird true, b wird wahr. 2: Iteration: i<1 wird false, b wird true.

* Condition c.: Fälle von Simple Condition
1) i<0 wird true und der Rumpf des if wird ausgeführt. 2) i<1 wird true, b wird false und das for übersprungen. 3) 1. Iteration: i<0 true, b true und es geht in den Rumpf. 2. Iteration: i<1 false, b true (und for wird übersprungen; das hatten wir ja schon)

* Multiple condition c.: 1) i=-1, b=egal ; 2) i=0, b=true ; 3) i=0, b=false
1) i<0 wird true. 2) i<0 wird false. Außerdem in 1. Iteration i<1 true, b true und in 2. Iteration i<1 false, b true. 3) In 1. Iteration i<1 true, b false, in 2. Iteration i<1 false, b false.

* Basic block c.: 1) i=-1, b=egal 2) i=0, b=true
1) Vergleich i<0 wird ausgeführt, throw wird ausgeführt. 2) Vergleich i<1 und Test b wird ausgeführt. 1. Iteration: doSth() und ++i werden ausgeführt.


Danke fürs Lesen!

jlerch
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 148
Registriert: 18. Okt 2005 14:45

Re: Coverage/Abdeckung - die verschiedene Modelle

Beitrag von jlerch » 20. Feb 2012 09:43

Hi,

spontan sehe ich keine Fehler, aber auch keine Frage was dir noch unklar ist.
Das Beispiel ist nicht optimal, um alle Unterschiede zwischen den Coverage Modellen deutlich zu machen. Erkennbar daran, dass die Testdaten für viele Modelle identisch sind. Vielleicht ist es sinnvoller wenn du eine konkrete Frage formulierst?

ab26iget.stud.tu
Mausschubser
Mausschubser
Beiträge: 63
Registriert: 14. Okt 2008 20:19

Re: Coverage/Abdeckung - die verschiedene Modelle

Beitrag von ab26iget.stud.tu » 20. Feb 2012 17:40

Hallo ,
Ich habe auch eine Frage bezüglich Simple Condition Coverage (requires that each simple
condition be evaluated as true and false at least once)

Foliensatz 9 - Folie 39 : müssen hier a , b und c jeweils zu "true" und "false" ausgewertet werden ?
Warum reichen dann nicht 2 Fälle :
a = true, b = false, c = true
a = false, b = true, c = false

Danke im Voraus

jlerch
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 148
Registriert: 18. Okt 2005 14:45

Re: Coverage/Abdeckung - die verschiedene Modelle

Beitrag von jlerch » 21. Feb 2012 09:10

Hi,

deine beiden Testfälle würden auch reichen. Auf der Folie geht es aber nicht darum einen minimalen Testfall aufzuzeigen, sondern primär darum aufzuzeigen, dass bei 100% Simple Condition Coverage nicht zwingend alle Pfade durchlaufen werden.

Antworten

Zurück zu „Archiv“