C0 und C1 Test nochmal

Status
Nicht offen für weitere Antworten.
Hallo,

hier habe ich eine Aufgabe mit Lösung über die Test gefunden.

Und irgendwie verstehe ich nicht wieso Antwort C0=3 und C1=4 ist.

Nach meinem Definitionsverständnis brauche ich für jede Anweisung einen durchlauf sprich für C0 jeweils einmal für das if und dann noch einmal für das switch in diesem Falle. Also gesamt 3 mal if und 1 mal switch = 4mal CO

Für C1 dann noch zusätzlich noch im dritten if der Fall dass x>y ist und natürlich alle switch Möglichkeiten also noch 2 zusätzlich ich hätte also gesagt 7 mal C1 durchführen.

Oder wo ist mein Gedankenfehler?

Das folgende Programmfragment soll getestet werden.
Code:
if (x < 0) x = -x;
if (y < 0) y = -y;
if (x < y) {
max = y;
min = x;
}
else {
max = x;
min = y;
}
switch (max % min) {
case 0: r = 0;
break;
case 1: r = -1;
break;
case 2: r = 1;
break;
}
a) Wie viele Testläufe sind für einen Überdeckungstest nach C0 mindestens erforderlich?
Geben Sie konkrete Werte für die Variablen x und y an, um diesen C0-Test
durchzuführen.
b) Wie viele zusätzliche Läufe werden für einen C1-Test mindestens benötigt? Geben
Sie entsprechende Werte für x und y an.
Lösung: Um einen C0-Test durchzuführen, sind mindestens 3 Programmläufe erforderlich.
Ein weiterer Programmlauf wird benötigt, um das Programmfragment nach C1 zu testen.
Mögliche Testwerte enthält die folgende Tabelle:
x y
C0 −1 −7
−7 −2
−5 −7
C1 4 7
 
also vielleicht mal überhaupt eine verständnis frage.

was ist eine anweisung laut C0 und eine Verzweigung laut C1???

Heißt es

if{bla bla}
else{bla bla}

if ist eine anweisung und else eine Verzweigung?

genauso wie bei

switch{bla bla...

case 0: bla bla...

case 1: bla bla

das heir swithc mit case 0 eine anweisung und case 1 eine verzweigung?
 

hdi

Top Contributor
Also nach kurzem Überfliegen des Wiki-Artikels über solche Tests, scheint es mir
dass du das falsch verstehst.

Es geht hier darum: Wie kannst du die Variablen so wählen, dass möglichst wenige
Anweisungen ungetestet bleiben. Also das möglichst jede Anweisung ausgeführt wird.
Es reicht dafür nur ein Bsp zu nennen.

zB x = -2 und y = -3

Die ersten beiden Bedingungen sind true, also werden die Anweisungen ausgeführt.
Bisher deckt dieser Test also schon mal 100% der möglichen Anweisungen ab.
x < y ist auch true (x und y werden ja negiert), also wird auch der if-Block
durchfgeführt.

So, jetzt kann aber der else-Block nicht durchgeführt werden, d.h. wir wir müssen
das Programm schon mal mindestens mit anderen Werten nochmal starten, d.h.
bisher haben wir bei C0 = 2 Programmstarts, um alle Anweisungen getestet zu haben.

NAch dem else kommt das switch, in diesem Falle gilt 3%2 = 1.
Die anderen beiden cases greifen nicht, d.h. das hat dieser Test auch nicht abgedeckt.

Nun starten wir das Programm nochmal, diesmal mit

x = -3 und y = -3

hier greift nun das else, weil 3 == 3. Das ist nun also im 2.Durchlauf abgedeckt.

weiterhin ergibt 3%3 = 0, d.h. dieser case ist auch fertig.

Nun gibt es nur noch eine einzige Anweisung, die in den 2 Tests nie ausgeführt wurde,
und zwar der case mit Rest = 2.

Mit einem dritten Programmstart und geschickt gewählten Variablen, zB
x = -4 und y = -6, hast du den auch.

Also insgesamt C0 = 3, da du mit 3 Programmstarts jede Anweisung mal getestet hast.

Analog dazu funzt das dann wohl mit C1, ich hab jetz im Artikel nicht weitergelesen
was das ist. Wird aber sicherlich auch Sinn machen dann
 
ja und jetzt halt noch mal die frage ob ich mit C0 schon alle else anweisungen und switch case anweisungen prüfe??? Oder wenn C0 das schon hergibt dann ist das halt so für die anderen brauche ich dann c1???


oder ob C1 das macht???


richtig?
 
also folgendes einfaches beispiel.

if (x<5){
x++;}
else{
x--}

dann ist meinetwegen C0 x=3
und C1 dann x=7?

richtig?

also was ist nochmal mit alle anweisungen alle vezweigungen gemient? das beispiel bei wikipedia ist sehr ungünstig.
 

hdi

Top Contributor
Also, ich empfehle dir nochmal den Artikel gründlich zu lesen oder woanders Infos
einzuholen, denn was ich jetzt sage ist auch nicht unbedingt zu 100% richtig, sondern
nur so wie ich das jetz auf die Schnelle verstehe:

Beim C0 Test ist die Frage, wie oft du ein Programm neustarten musst, mit
verschiedenen Variablen, bis jede Anweisung im Programm mindestens einmal
ausgeführt wurde (in allen Testläufen zusammen).

Es geht also beim C0 Test darum, herauszufinden, ob eine Anweisung niemals
ausgeführt werden kann. Deshalb reicht es, mit irgendwelche Variablen-Konstellationen
zu zeigen, dass alle ausgeführt werden können.
In unserem Bsp vorhin haben wir mit 3 Durchläufen gezeigt: Es ist möglich,
jede Anweisung im Code zu erreichen.

Der C1 Test impliziert den C0 Test, d.h. als erstes musst du den C0-Test
durchführen.
Danach wählst du die Variablen möglichst so, dass Anweisungen nicht
ausgeführt werden. D.h. jede Bedingung soll false ergeben.

Und deswegen hast du in deinem Bsp beim C1 Test auch 4 Testläufe:
3 davon kommen vom C0 Test, der ja zum C1 Test gehört, und der letzte
wäre zB mit:

x = 19 und y = 11

...da ergibt dann nämlich max%min einen Rest von 8, und dieser Fall ist nicht
abgedeckt, weil es dafür keinen case gibt. Für diesen Fall und alle weiteren
Restbeträge >2, die ja nicht abgefangen werden, ist dein "r" also 0, bzw. mit
was auch immer es initialisiert wurde.

Und das ist dein 4.Testdurchlauf.

Wie gesagt: Ich bin mir nicht 100% sicher, aber ich denke schon, dass das damit
gemeint ist. Macht zumindest Sinn.
 
HI,

ja hat es. Aber ich verstehe halt diese Unterscheidung zwischen C0 und C1 nicht ist für mich doch sehr schwammig.

Und diese kurzen Beispiel wie auch ind er PPT sind nun nicht wirklich aufschlussreich.

Ich glaube ich verstehe einfach den Unterschied zwischen Anweisung und Verzweigung nicht....

Hat das jemand verstnden?
 

hdi

Top Contributor
Ja das war im Wiki Artikel auch etwas unklar.
Eigentlich is ne Anweisung alles, was mit einem ";" endet,
wobei man Anweisungen auch je nach Konstrukt ohne Strichpunkt schreiben kann.

Eine Anweisung ist halt einfach etwas, das das Programm ausführt.

Ein Zweig ist nur ein Begriff für eine Bedingung mit einer Ansammlung von Anweisungen,
die ausgeführt werden wenn diese Bedingung zutrifft.

Im Bsp bei Wiki testen die halt immer noch,
ob das Programm korrekt bleibt wenn gewisse Anweisungen - gezielt - nicht
ausgeführt werden.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Zrebna Frage zu Test-Driven Development (TDD) Java Basics - Anfänger-Themen 3
W junit.Test not accessible? Java Basics - Anfänger-Themen 4
W Junit-Test (Java) Java Basics - Anfänger-Themen 4
W Testfälle bei Java ( Junit-Test) Java Basics - Anfänger-Themen 3
D Hilfe bei Calculator Test Java Basics - Anfänger-Themen 15
U jUnit 5 Test für eine addMethode Java Basics - Anfänger-Themen 18
M Test auf Exceptions schreiben Java Basics - Anfänger-Themen 11
P Eclipse Karate Framework API Test . Unexpected Error: the trustAnchors parameter must be non-empty Java Basics - Anfänger-Themen 1
I Variable innerhalb Methode: Local variable test defined in an enclosing scope must be final or effectively final Java Basics - Anfänger-Themen 3
A Junit Test für MysqlDataSource JDBC Java Basics - Anfänger-Themen 3
A Test Junit Java Basics - Anfänger-Themen 1
H Junit test Java Basics - Anfänger-Themen 12
P JUnitTest Best Practise (Ein Assert pro Test?) Java Basics - Anfänger-Themen 10
P Methoden JUnit 4 - Test Java Basics - Anfänger-Themen 6
Mr_Kleeblatt Operatoren if (arri[i] != "test.java"&& arri[i] != "test.class") Java Basics - Anfänger-Themen 3
N Fehler bei JUnit Test Java Basics - Anfänger-Themen 5
L Test-Methoden schreiben Java Basics - Anfänger-Themen 13
D Test auf Dopplungen Java Basics - Anfänger-Themen 32
neerual Klassen Wie rufe ich Klassen, die andere Klassen extenden in einer Test Unit auf? Java Basics - Anfänger-Themen 10
B JUnit Test erstellen Java Basics - Anfänger-Themen 6
B zzz.test Java Basics - Anfänger-Themen 13
W Problem bei JUnit Test Aufgabe Java Basics - Anfänger-Themen 15
W JUnit Test und HashCode Java Basics - Anfänger-Themen 14
C Erste Schritte Hexidezimal-Test Java Basics - Anfänger-Themen 2
A Kfz - Händler Klasse. JUnit-Test gibt noch Fehler an, aber finde Ursache nicht Java Basics - Anfänger-Themen 7
B Palindrom Test mit Junit Java Basics - Anfänger-Themen 23
T Minesweeper Test Java Basics - Anfänger-Themen 2
S Junit Test Java Basics - Anfänger-Themen 2
F Test Java Basics - Anfänger-Themen 12
W Ist das ein legitimer Test? Java Basics - Anfänger-Themen 5
shiroX Methoden JUnit-Test einer void-Methode Java Basics - Anfänger-Themen 4
U Best Practice Datenbereitstellung Unit Test Java Basics - Anfänger-Themen 6
B Binäre Suche - Junit Test Java Basics - Anfänger-Themen 6
B Datentypen Test float und double speichern Zahlen nur ungefähr Java Basics - Anfänger-Themen 4
Z Vererbung Test auf Normalverteilung, Wilcoxon Java Basics - Anfänger-Themen 3
M Assertion NotNull Test Java Basics - Anfänger-Themen 3
S Separate Funktion für JUnit-Test Java Basics - Anfänger-Themen 3
W Test, ob Datei existiert, schlägt fehl Java Basics - Anfänger-Themen 4
T JUnit test failed Java Basics - Anfänger-Themen 3
H Array Test Methode schreiben Java Basics - Anfänger-Themen 3
R JUnit Test mit einer Dateistruktur als Testparameter Java Basics - Anfänger-Themen 3
V Bruchrechner Test Java Basics - Anfänger-Themen 7
T Test läuft schief Java Basics - Anfänger-Themen 3
shiroX OOP Array kleinste Zahl mit jUnit test Java Basics - Anfänger-Themen 3
G mache aus Test nach sortieren estt oder java aajv Java Basics - Anfänger-Themen 5
S Code stimmt nicht für vorgegebenen JUnit-Test Java Basics - Anfänger-Themen 2
x22 Java Multiple Choice Test Java Basics - Anfänger-Themen 8
R JUnit Test mit mehrfach ausgeführt Java Basics - Anfänger-Themen 6
B JUnit - Mini-Test Java Basics - Anfänger-Themen 9
T Unterschied zwischen Integrationstest und JUnit test? Java Basics - Anfänger-Themen 12
N Test mit assert Java Basics - Anfänger-Themen 9
Y Junit Test - Testwert ändert sich Java Basics - Anfänger-Themen 12
K Palindrom Test Java Basics - Anfänger-Themen 9
S Performance-/Stress Test für Webanwendung Java Basics - Anfänger-Themen 2
V Mediaplayer - NullPointerException bei Unit-Test Java Basics - Anfänger-Themen 4
H Ich kann mein Java Programm Test.class nicht ausführen Java Basics - Anfänger-Themen 6
H Javabefehl Test Java Basics - Anfänger-Themen 3
S Hilfe zu Java-Programm und JUnit Test!! Java Basics - Anfänger-Themen 5
T JUNit Test IOException Java Basics - Anfänger-Themen 5
H lucas-test Java Basics - Anfänger-Themen 14
P White-Box-Test Verständnisproblem Java Basics - Anfänger-Themen 11
N Methoden Test ob Server vorhanden ist Java Basics - Anfänger-Themen 4
N Test Datei = Bild Java Basics - Anfänger-Themen 5
S Erste Schritte 1. Test Programm Java Basics - Anfänger-Themen 21
Spin JUNIT Test Case - Problem bei testen Java Basics - Anfänger-Themen 2
T brauche HILFE beim Junit test:eek: Java Basics - Anfänger-Themen 11
timbeau JUnit Test Dauer speichern/loggen Java Basics - Anfänger-Themen 16
E Am Mittwoch Test und ich checks überhaupt nich Java Basics - Anfänger-Themen 27
A junit test wann verwendet man "was"? Java Basics - Anfänger-Themen 4
J JUnit Test Java Basics - Anfänger-Themen 2
D Test einer Chipkarte Java Basics - Anfänger-Themen 2
J Problem mit Test-Klasse Java Basics - Anfänger-Themen 4
E Test, ob String in Double umwandelbar ist Java Basics - Anfänger-Themen 3
J Test steht vor der Tür !! Java Basics - Anfänger-Themen 2
X Array nur mit Zahlen (test) Java Basics - Anfänger-Themen 11
Houly JUnit Test Suite anlegen Java Basics - Anfänger-Themen 6
F Primitiver Lucas-Lehmer-Test hängt sich auf Java Basics - Anfänger-Themen 7
M Erster HashMap-test Java Basics - Anfänger-Themen 5
O Test auf JComponent Java Basics - Anfänger-Themen 7
pun Junit Test erkennt Exception nicht.. Java Basics - Anfänger-Themen 14
D C0 und C1 Test Java Basics - Anfänger-Themen 3
G BlueJ jUnit Test Java Basics - Anfänger-Themen 6
J Test auf UTF-8 Java Basics - Anfänger-Themen 2
M Wo und wie speich. ich .java und wo den zugehörigen test? Java Basics - Anfänger-Themen 2
Shalimar Test, ob mehr pos. oder neg. Zahlen Java Basics - Anfänger-Themen 3
M test Java Basics - Anfänger-Themen 5
M test Java Basics - Anfänger-Themen 2
M test Java Basics - Anfänger-Themen 10
V Test mit JUnit verbinden Java Basics - Anfänger-Themen 3
M test Java Basics - Anfänger-Themen 4
H Miller Rabin Test Primzahlen werden teilweise nicht gefunden Java Basics - Anfänger-Themen 5
C Multiple Choice Test Java Java Basics - Anfänger-Themen 5
G Grundfläche färben, ein Bild (NORTH) ind Test darunter? Java Basics - Anfänger-Themen 6
M Palindrom Test mit Char-arrays! Java Basics - Anfänger-Themen 3
M Java Test Übungsfragen Hilfe! Java Basics - Anfänger-Themen 5
B JUnit Test Klasse Rational Java Basics - Anfänger-Themen 12
N class Test<E extends MyAbstractClass> => typ von E? Java Basics - Anfänger-Themen 5
G jar cvf test.war -C src/ WEB-INF -C src/ ALLE JSP Wildcard? Java Basics - Anfänger-Themen 2
0 Quadratzahl-Test Java Basics - Anfänger-Themen 4
C Unsupported major.minor bei jUnit Test Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben