White-Box-Test Verständnisproblem

PrincE

Aktives Mitglied
Hallo Leute,

ich bin ein bisschen am verzweifeln.
Ich muss bald ein Referat über das White-Box-Test Verfahren halten und ich laufe immer wieder in Sackgassen. In Aussagen die ich nicht nachvollziehen kann...

z.B.
Kontrollflussorientierte Testverfahren ? Wikipedia

[...]
Mit den Anweisungsüberdeckungstests wird sichergestellt, dass kein “toter Code“, Anweisungen die niemals durchlaufen werden, im Programm existiert. Dies ist ein notwendiges Kriterium um sicherzugehen, dass jede Anweisung auf Fehler untersucht wird. Der Sinn des Anweisungsüberdeckungstests ist die mindestens einmalige Ausführung aller Anweisungen in einem Programm. Ist dies gewährleistet, spricht man von einer völligen Anweisungsüberdeckung.[...] Unser Testpfad enthält zwar alle Knoten, aber nicht alle Kanten. Die Kante (n3,n5) wird im optionalen Else-Teil nicht ausgeführt.
[...]

Warum zur Hölle werden denn angeblich alle Anweisungen ausgeführt, wenn doch der
Anweisungsüberdeckungsgrad =

Anzahl der ausgefuehrten primitiven Zweige
__________________________________________
Anzahl aller primitiven Zweige


Was schon darauf schließt das meistens doch nicht alle Anweisungen ausgeführt werden?!
 

Gregorrr

Bekanntes Mitglied
Und was ist jetzt dein Problem?

Im Falle einer völligen Anweisungsüberdeckung ist sichergestellt, dass keine toter Code existent ist.

Diese Tatsache ist aber bei einem nicht-ausgeführten else-Zweig nicht gegeben. Also kann man daraus schließen, dass es toten Code gibt.

Ein kontrollflussorientiertes Testverfahren gibt den Grad an, wie hoch deine Anweisungsüberdeckung ist.

Im Gegensatz zum Black-Box-Testing kann man diese Aussagen treffen, denn beim Black-Box-Testing hat man i.d.R. keine Ahnung über die Grundgesamtheit des möglich ausführbaren Codes.
 
N

nillehammer

Gast
In dem genannten Beispiel:
Java:
 int z = x;
 if (y > x)
    z = y;
 z *= 2;
Wird mit einem einzigen Testfall, bei dem (y > x) jede Zeile des Codes durchlaufen. Deshalb ist die Anweisungsüberdeckung 100%. Das steht bei wikipedia auch so. Was mit dem Testfall aber nich beantwortet wird, ist die Frage: "Was passiert, wenn !(y > x)? Das ist die Kritik an der Metrik "Anweisungsüberdeckung" und die Erklärung für die Einführung der nächsten Metrik "Zweigüberdeckung". Auch, wenn im Code nicht ersichtlich, gibt es nämlich implizit einen else-Zweig. Um den zu testen, bedarf es eines zweiten Testfalls. Damit wäre dann auch die Zweigüberdeckung 100%.

PrincE hat gesagt.:
Anzahl der ausgefuehrten primitiven Zweige
__________________________________________
Anzahl aller primitiven Zweige


Was schon darauf schließt das meistens doch nicht alle Anweisungen ausgeführt werden?!
Das ist nicht die Formel für die Berechung der Anweisungsüberdeckung, sondern für die Berechnung der Zweigüberdeckung. Wenn Du diese beiden geistig klar von einander trennst, lösen sich die von Dir vermuteten Widersprüche auf.
 
Zuletzt bearbeitet von einem Moderator:

PrincE

Aktives Mitglied
nein ich meinte natürlich

Anzahl der ausgefuehrten Anweisungen
__________________________________________
Gesamtanzahl der Anweisungen


:(

habe beim zurück-tabben wohl die Orientierung verloren.
 
Zuletzt bearbeitet:

PrincE

Aktives Mitglied
Ich habe eure Antworten gelesen, aber das Problem habe ich immer noch nicht gelöst.

Nochmal von vorne:


Angeblich kann der Anweisungsüberdeckungstest sicherstellen das es kein sogenannten "toten Code" gibt.
Das kann meines Erachtens aber nicht sein, weil der Anweisungsüberdeckungstest ja sowieso nicht alle Bedingungen abklappert und daher kann dieser auch nie wirklich herausfinden, ob es Code gibt der NIE ausgeführt wird?!

Das kann nach meinem Verständnis nur der "Zweigüberdeckungstest" ...
 

PrincE

Aktives Mitglied
Und was ist jetzt dein Problem?

Im Falle einer völligen Anweisungsüberdeckung ist sichergestellt, dass keine toter Code existent ist.

Diese Tatsache ist aber bei einem nicht-ausgeführten else-Zweig nicht gegeben. Also kann man daraus schließen, dass es toten Code gibt.

Ein kontrollflussorientiertes Testverfahren gibt den Grad an, wie hoch deine Anweisungsüberdeckung ist.

Im Gegensatz zum Black-Box-Testing kann man diese Aussagen treffen, denn beim Black-Box-Testing hat man i.d.R. keine Ahnung über die Grundgesamtheit des möglich ausführbaren Codes.


So steht es aber nicht in der Definition ....

"Mit den Anweisungsüberdeckungstests wird sichergestellt, dass kein “toter Code“, Anweisungen die niemals durchlaufen werden, im Programm existiert"

und nicht

"bei einem völligen Anweisungsüberdeckung ist garantiert das kein toter Code existiert"


Bin ich dumm oder was ist los. Verstehe nicht wieso für euch das alles so kla ist.
 
N

nillehammer

Gast
Wenn Du mit Deinen Tests 100% Anweisungsüberdeckung erreicht hast, hast Du wirklich jede Zeile Code mindestens einmal durchlaufen. Das ist nur möglich, wenn auch jede Zeile erreichbar ist, es also keinen toten Code gibt. Insofern stellt die Metrik Anweisungsüberdeckung tatsächlich sicher, dass es keinen toten Code gibt.
 

PrincE

Aktives Mitglied
würde der Anweisungsüberdeckungstest diesen toten Code aufklären?

Code:
int i = 4;
		
if(i > 3 && i < 5)
{
    
      if(i == 3)
      {
	    deleteMenu();
      }

      System.exit(0);
}

oder ist es eher ein gutes Beispiel für

"Mit Hilfe des Zweigüberdeckungstests lassen sich nicht ausführbare Programmzweige aufspüren"
 
Zuletzt bearbeitet:
N

nillehammer

Gast
Bei diesem Code wirst du nie 100% Anweisungsüberdeckung erreichen. Du schreibst also Tests und merkst, dass Du keine 100% erreichst. Wenn Du dann schaust, wieso nicht, findest Du die Ursache.

Wenn Du aber (bei welchem Code auch immer) die 100% erreicht hast, weißt Du, dass Du nicht nach totem Code suchen musst. 100% Anweisungsüberdeckung ist der Beweis, dass es keinen toten Code gibt. Weniger als 100% ist der Beweis, das es evtl. toten Code geben kann oder, dass nicht genug Tests geschrieben wurden.
 

PrincE

Aktives Mitglied
Bei diesem Code wirst du nie 100% Anweisungsüberdeckung erreichen. Du schreibst also Tests und merkst, dass Du keine 100% erreichst. Wenn Du dann schaust, wieso nicht, findest Du die Ursache.

Wenn Du aber (bei welchem Code auch immer) die 100% erreicht hast, weißt Du, dass Du nicht nach totem Code suchen musst. 100% Anweisungsüberdeckung ist der Beweis, dass es keinen toten Code gibt. Weniger als 100% ist der Beweis, das es evtl. toten Code geben kann oder, dass nicht genug Tests geschrieben wurden.

oder das lediglich noch nicht das richtige Kontrollflussorientierte Testverfahren angewandt wurde -.-

naja

jedenfalls wollte ich nur wissen, ob es geeignet ist als Beispiel, zum Darstellen dieses Testverfahrens.
Das es diesen toten Code aufgeklärt hätte?! Oder ob es eben eher zum Zweigüberdeckungstest gepasst hätte
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Unterschied zwischen Color.white und Color.WHITE? Java Basics - Anfänger-Themen 4
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
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 nochmal Java Basics - Anfänger-Themen 9
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

Ähnliche Java Themen

Neue Themen


Oben