Statistische/dynamische Tests

hello_autumn

Mitglied
Hallo,

ich wollte euch mal fragen ob ihr Erfahrung machen konntet im bereich des Testings.
Ich habe meine Uni-Ausarbeitung. An der werkel ich weiterhin.

Ich nutze JUnit.
Meine Überlegung war nun ob es ein Tool gibt, welches überprüft, ob ein Test nur eine Java-Klasse oder mehrere Java-Klassen auf einmal testet. Geht sowas überhaupt? Ist das möglich zu überprüfen? Oder muss ich das manuell pro Klasse selber prüfen? Jedoch endet der Spaß bei ca. 75.000 Java-Klassen... :/

Hättet ihr Tipps?
 
K

kneitzel

Gast
Die Frage ist hier, was man wie bewerten will. Man kann bei Unit Tests durchaus auch schauen, welche Codeteile benutzt wurden. https://www.eclemma.org/ wäre da ein Beispiel für ein Open Source Tool.

Da bekommt man halt einen Überblick, welcher Code benutzt wurde. Aber hier geht es um die Aussage, welche Zeilen vom Code nicht benutzt wurden. Diese Aussage ist eindeutig: Code, der nicht benutzt wurde, wurde auch nicht getestet.

Aber wenn ein Unit Test beim Durchlaufen auch eine Zeile Code genutzt hat, bedeutet dies ja nicht automatisch, dass diese Zeile Code getestet wurde.
Also wenn ich die Klasse A teste, dann kann ich im Inneren durchaus die Klasse B verwenden. Aber nur weil ich Teile von Klasse B verwendet habe, habe ich die Klasse B nicht getestet. Ich setze einfach voraus, dass die Klasse B bereits getestet wurde und ich die Funktionalität nutzen kann.

Daher ist diese Fragestellung so in meinen Augen nicht beantwortbar. Aber evtl. kann so etwas als Indiz gewertet werden...
 

LimDul

Top Contributor
Ich würde sagen, kommt drauf an.

Aus technischer Sicht ist es so, dass die wenigstens Unit-Test wirklich nur genau eine Klasse testen. Denn wenn ich einen Test schreibe, um die Methode doSomething() der Klasse myClass teste, wird in den meisten Fällen auch Code anderer Klassen aufgerufen. Das heißt, eine rein technische Lösung, welche schaut, welche Codestellen aufgerufen werden, scheidet aus.

Aus fachlicher sollte es aber so sein, dass es pro zu testender Klasse auch eine JUnit-Test Klasse gibt, die genau diese Klasse fachlich testet. Und damit so Tools wie moreUnit in Eclipse sauber funkionieren, gibt es auch Namenskonventionen. (MoreUnit erlaubt vom Test-Code zum getesteten Code hin und zurück zu springen). Das heißt, der test für die die Klasse somepackage.SomeClass sollte somepackage.SomeClassTest heißen. Gleiches Package und Klassenname um Test ergänzt. Wenn das der Fall ist, würde ich aus statistischer Sicht davon ausgehen, dass der Test genau diese Klasse testet.

Damit hättest du vermutlich für den Großteil der Testklassen eine Aussage. Für alle Testklassen die nicht in diese Namenskonvetion passen, müsste man da mal schauen, ob man da auch Muster findet, die man sinnvoll auswerten kann. Wie viele das sind, kann ich aber nicht abschätzen.
 

hello_autumn

Mitglied
Danke euch schon mal für die Ideen!

Also die klassische Code Coverage nutze ich schon bei Eclipse. Die ist für mich auch essenziell wichtig, da ich nur auf erfolgreiche Tests abziele (zumindest versuche ich es)...

Das moreUnit-Tool sieht schon echt ansprechend aus. Sehr schön, wie ich dann die weiteren/mitgetesteten Klassen einfach nach verfolgen kann!

Jedoch kommt mir eine weitere Idee auf: Unittests testen ja theoretisch nur eine (in sich geschlossene) Klasse. Dann gibt es ja die Modultests und dann die Integrationstests. Wenn ich dann wenig bzw. keine Tools habe das zu testen, kann ich das irgenwie anders testen/überprüfen? Vielleicht irgendwie nach der Zeit, oder nach der Rechenleistung, oder so ähnlich? Oder gibt es da noch weitere Geheimnisse im Bereich des Testing, von denen ich gerade nichts weiß?

Meine Erfahrung ist im Testing relativ begrenzt und wenn, dann habe ich nur so schicke klitzekleine Tests für je eine geometrische Form geschrieben... :p
 

LimDul

Top Contributor
Ich glaube alles weitere wird sehr schwierig zu generalisieren.
JUnit 5 bietet diverese Möglichkeiten sowas zu strukturieren, z.B. Tags: https://junit.org/junit5/docs/5.0.1/api/org/junit/jupiter/api/Tag.html

Aber da gibt es soweit mir bekannt keine Vorgaben, das müsste man für jedes zu analysierende Projekt individiuell auswerten, was da genutzt wird.

Rechenleistung ist durchaus ein Indiz, weil Integrationstest oft höhere Rechenleistung haben - aber das ist nur Indiz, kein hartes Merkmal
 

hello_autumn

Mitglied
Danke schon mal für die Antwort. :)

Was meinst du denn mit "individuell Auswerten"? Mein Programm ist ca. 500.000 Line of Code lang. Also schon ein echter Batzen. Das sind alles Lines ohne Kommentare und Leerstellen... Ich weiß nur, da sind Modul, sowie Integrationstests zwischen. Kann aber nicht alle überprüfen, händisch... Ist nicht mein Programm. Bzw, ist halt zu groß. Der sprengt echt den Rahmen.
 

LimDul

Top Contributor
Wenn du ein Programm überprüfst, kannst du dir da eine handvoll Integrationstests anschauen und sehen, ob die z.B. mit Junit-Tags versehen sind, ob die einer Namenskonvention genügen etc. Damit kannst du dann vielleicht erfolgreich den Rest der Tests in diesem Programm katagorisieren und analysieren - aber das wird für ein anderes Programm nicht mehr tragen.

Sprich du wirst für jedes Programm einzeln nachsehen müssen, ob es Merkmale gibt.
 

mrBrown

Super-Moderator
Mitarbeiter
Theoretisch könntest du für jeden Test prüfen, wie viele Klassen durch diesen getestet werden (über Codeabdeckung), und dann danach gruppieren.

Keine Ahnung wie gut das klappen könnte, aber mit etwas Glück findet man da zwei oder mehr Cluster. Das ganze lässt sich dann zumindest auch Projekt-Übergreifend nutzen.
 

hello_autumn

Mitglied
Ich überlege und suche auch weiter im Netz rum.
Ich habe mit den Tags nun ein Problem. Ich wollte so wenig wie möglich im Code rumschreiben und den Code verändern. So wie ich es verstehe müssen die Tags im Code notiert werden.

Ich bin weiter am Überlegen, ob es Möglichkeiten gibt, quasi, von außen da ran zu kommen... Es muss noch nicht Projekt übergreifend sein... Ich würde mich freuen, wenn es erst in meinem riesen Projekt funktionieren könnte... Hm...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Statistische Auswertung von Logfiles (Einlesen, auswerten und grafische Aufbereitung von logfiles) mit Java Allgemeine Java-Themen 9
R Statistische Methoden (Mathematik) Aufgabe Allgemeine Java-Themen 9
Ernesto95 HTTP Mit JavaScript erzeugte dynamische Webseite auslesen und nach einem Schlüsselwort durchsuchen Allgemeine Java-Themen 6
districon Rekursion und Dynamische Programmierung Allgemeine Java-Themen 2
E Socket Dynamische Klasse von ObjectOutputStream lesen. Allgemeine Java-Themen 8
P Erste Schritte Dynamische Anzahl von verschachtelten Schleifen Allgemeine Java-Themen 5
J Dynamische Rückgabewerte Allgemeine Java-Themen 2
K Dynamische Webseiten auslesen Allgemeine Java-Themen 6
S Variablen Dynamische Arrays Allgemeine Java-Themen 2
N Dynamische Objekte / DB Allgemeine Java-Themen 5
B dynamische Java Slideshow Allgemeine Java-Themen 4
SuperSeppel13 Dynamische Bibliotheken einbinden Allgemeine Java-Themen 16
B Script Problem "Dynamische Datenstruktur" Allgemeine Java-Themen 13
A Dynamische PDF Erstellung mit iText Allgemeine Java-Themen 4
ModellbahnerTT Dynamische Programmierung, komme nicht weiter.... Allgemeine Java-Themen 15
C dynamische imports? Allgemeine Java-Themen 13
hdi dynamische return-Werte Allgemeine Java-Themen 15
M JUnit und dynamische Tests Allgemeine Java-Themen 11
X dynamische bindung - Typsystem :?: Allgemeine Java-Themen 5
C dynamische variablen Namen! Allgemeine Java-Themen 4
D dynamische Objekte erzeugen? Allgemeine Java-Themen 16
G eigener logger mittels classe (dynamische logfilename) log4j Allgemeine Java-Themen 15
R Dynamische Sorten-Prüfung? Allgemeine Java-Themen 8
F dynamische ArrayListen? Allgemeine Java-Themen 8
C kann man dynamische variablen namen vergeben? Allgemeine Java-Themen 2
H "dynamische Ladegrafik" Allgemeine Java-Themen 2
C Dynamische Varibalen Allgemeine Java-Themen 3
C dynamische Vererbung Allgemeine Java-Themen 6
Zrebna Wieso sind eigentlich JUnit-Tests in src/test/java platziert - nur Konvention? Allgemeine Java-Themen 7
Robert Zenz Ich brauche bitte mal kurz einen Sanity/Reality-Check betreffend Tests. Allgemeine Java-Themen 9
harrytut Java Input/Output Tests Junit Allgemeine Java-Themen 3
M mockito Tests Allgemeine Java-Themen 9
Y Wieso krieg ich die Unit Tests nicht hin Allgemeine Java-Themen 55
Y Wie sinnvolle unit tests schreiben Allgemeine Java-Themen 29
sascha-sphw Erste Schritte Unit und Integration-Tests im Java Modul System Allgemeine Java-Themen 10
P No JUnit tests found Allgemeine Java-Themen 5
B Frage zu Unit-Tests Allgemeine Java-Themen 6
J Alle Unit Tests in Maven Modul Projekt ausführen Allgemeine Java-Themen 7
S Parametrisierte jUnit 5-Tests mit eigenen Datentypen/Klassen-Objekten als Test-Parameter Allgemeine Java-Themen 0
AssELAss Junit-Tests für SQL-Veribindung sowie SQL-Queries? Allgemeine Java-Themen 3
M Selenium JUnit Tests (Auswahl von Testmethoden auswerten) Allgemeine Java-Themen 5
A Performance/Speicherplatz-Nutzung bei Tests Allgemeine Java-Themen 6
M Für was schreibt man Unit-Tests? Allgemeine Java-Themen 55
M Junit Tests durchführen Allgemeine Java-Themen 18
M JUnit Tests vs. DBUnit Tests Allgemeine Java-Themen 3
J JUnit-Tests Zeichensatzproblem ? Allgemeine Java-Themen 2
F Tests mit dynamischem Datum Allgemeine Java-Themen 2
T Junit-Tests in Java Klasse ausführen Allgemeine Java-Themen 26
C JUnit Tests Allgemeine Java-Themen 4
Jay_030 Guice: Frage im Umgang mit Unit-Tests Allgemeine Java-Themen 4
B FileWriter / FileReader testen / Mock-Objekt für Unit Tests? Allgemeine Java-Themen 6
A Seltsames Verhalten von JUnit-Tests im Zusammenspiel mit Ant Allgemeine Java-Themen 6
G JUnit Tests Allgemeine Java-Themen 7
S JUnit Tests für GUI / Oberflächen Allgemeine Java-Themen 2
alexpetri unit tests für pdfs Allgemeine Java-Themen 4
B J-Unit Tests. Alle Tests eines Package einsammen. Allgemeine Java-Themen 4
K JUnit: Tests über ant aufrufen Allgemeine Java-Themen 2
tfa Unit-Tests für private Methoden Allgemeine Java-Themen 25
W Unit Tests im "Hauptprojekt" oder in Modulen Allgemeine Java-Themen 3
D Tests für Java Allgemeine Java-Themen 3
M Eine Frage über Unit-Tests mit Java Allgemeine Java-Themen 2
N Ausgaben (System.out) umlenken und in Unit-Tests überprüfen? Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben