Klassenverfolgung möglich?

Status
Nicht offen für weitere Antworten.

spike78

Bekanntes Mitglied
Hallo zusammen,

ich habe folgendes Problem. Ich würde mir gerne ein Tool schreiben (evtl. gibts ja auch schon eines das sowas kann), dass mir ausgibt welche Klassen meines Java Programms aufgerufen wurden.

Beispiel:

Ich habe ein Java Programm test.jar das mit test.bat gestartet wird.
Folgendes wird z.B. gemacht
1) Main Klasse wird aufgerufen
2) Klasse x wird aufgerufen
3) Klasse y wird aufgerufen

Ich würde jetzt ganz gerne etwas schreiben, dass diese Aufrufe protokoliert. Eine Anpassung meines test.jar (z.B. mit einem System.out o.Ä. ist leider nicht möglich)

Danke und Gruß

Spike
 
Leider hab ich nicht die möglichkeiten die Klassen meiner zu untersuchenden Java Anwendung zu verändern. Da gelten bei uns ganz strenge Entwicklungsrichtlinien. Ist nun mal so. Daher muss nach einer Lösung suchen, bei der dies nicht notwendig ist.

Gruß
 
Mit EMMA werden die Class Files verändert, aber das machst nicht du, sondern EMMA.
 
Was wird da verändert? Kannst du mir ungefähr beschreiben was dieses Tool macht?
Die meisten Tools die ich bisher gefunden habe, setzen alle auf JUnit Tests auf und sind daher leider für micht nicht relevant.

Gruß
 
EMMA wird meist auch mit JUnit zusammen verwendet, muss aber nicht.

EMMA "instrumentiert" die Klassen, da wird soz. für jede Zeile Code ein Log geschrieben und später ausgewertet welche Code Zeilen aufgerufen wurden, man könnte auch sagen, dass die Aufrufe der Codezeilen protokolliert werden 😉

Erzähl doch mal genauer was du eigentlich erreichen willst.
 
Ok also folgendes. Wir entwickeln eine Anwendung x die jeden Tag mittels Regressionstests soweit wie möglich abgetestet wird. Die Anwendung besteht aus einem Server Teil und einem Client Teil. Der Server Teil wird mit dem Open Source Tool "Testmanager" abgetestet. Dazu werden bestimmte Kommandozeilenparameter mit bestimmten Parametern aufgerufen.

Nun hätte unser Produktchef gerne eine Auswertung darüber wie hoch der Anteil des Codes ist, der über die Regressionstests abgedeckt wird. Also so ne Art Report über die Testabdeckung.

Beispiel:

Klasse x wird 10 mal aufgerufen
Klasse y wird 0 mal aufgerufen.

Er will also erkennen für welche Klassen automatische Tests fehlen.

Gruß
 
Mit EMMA werden die Class Files verändert, aber das machst nicht du, sondern EMMA.

*verwirrt* seit wann aendert EMMA konkret den bytecode einer Klasse... EMMA analysiert ihn - es findet aber keine physikalische Veraenderung des bytecodes statt ?!

ansonsten ist EMMA genau das was du suchst...
 
Ok also folgendes. Wir entwickeln eine Anwendung x die jeden Tag mittels Regressionstests soweit wie möglich abgetestet wird. Die Anwendung besteht aus einem Server Teil und einem Client Teil. Der Server Teil wird mit dem Open Source Tool "Testmanager" abgetestet. Dazu werden bestimmte Kommandozeilenparameter mit bestimmten Parametern aufgerufen.

Nun hätte unser Produktchef gerne eine Auswertung darüber wie hoch der Anteil des Codes ist, der über die Regressionstests abgedeckt wird. Also so ne Art Report über die Testabdeckung.

Beispiel:

Klasse x wird 10 mal aufgerufen
Klasse y wird 0 mal aufgerufen.

Er will also erkennen für welche Klassen automatische Tests fehlen.

Gruß
Offensichtlich hat der sog. Produktchef keine Ahnung, genau dafür ist EMMA und Clover da, natürlich in Verbindung mit JUnit oder eben ein anderes Testframework, oder was nehmt ihr zum schreiben der Tests???

"Klasse x wird 0 mal aufgerufen" ist komplett sinnfrei, was interessiert sind die eigentlichen Codezeilen, und das macht sowohl EMMA (umsonst) als auch Clover (kostenpflichtig).

@bygones
Doch doch, so arbeiten eigentlich alle Coverage Tools, aus der Emma Doku (Launching):
In the Coverage tab the Java class path entries can be selected which should be prepared for coverage analysis . EMMA modifies these classes in a process called instrumentation. Instrumentation is possible for source based classes as well as for binary libraries. At least one entry must be selected to run an application in Coverage mode. The rules which class path entries are selected by default can be adjusted in the code coverage preferences.
 
Wenn man Maven benutzen kann, dann bekommt man quasi frei Haus einen "Test Code Coverage" report der einem genau die Info (und noch n bisschen mehr) zeigt die von dir/deinem Chef gewünscht wird.

Weiß nicht ob das auch außerhalb Maven geht ...

- Alex
 
Das ganze hat auch noch einen zweiten Hintergedanken. Ich bin gerade auf der Suche nach einem geeigneten Diplomthema für micht (Informatik FH). Beruflich arbeite ich im Qualitätsmanagment für die Softwareentwicklung. Mein P.Manager meinte das dies evtl. ein mögliches Thema sei. Aber wenn es da ja schon Tools gibt, die dazu noch kostenlos sind, sehe ich das nun eher kritisch als geeignetes Thema.

Gruß
 
Wenn man Maven benutzen kann, dann bekommt man quasi frei Haus einen "Test Code Coverage" report der einem genau die Info (und noch n bisschen mehr) zeigt die von dir/deinem Chef gewünscht wird.

Weiß nicht ob das auch außerhalb Maven geht ...
Klar geht das auch ohne Maven2, zB. mit Ant, ist eben nur aufwendiger 😉
Maven2 nutzt das cobertura-maven-plugin dafür, Clover geht auch, kostet aber 😉

Zum Thema instrumentierte Klassen:
Wenn man Eclipse mit dem EMMA Plugin verwendet, findet man die "instrumentierten" Klassen in den Ordnern unter [c].metadata/.plugins/com.mountainminds.eclemma.core/.instr[/c], wenn man die mal Dekompiliert, ist man überrascht wie simpel CodeCoverage umgesetzt wird.

@spike78
Solltest nicht mehr deinen "P.Manager" nach Themen für die Dipl. Arbeit fragen, der scheint die letzten Jahre verschlafen zu haben.
 
danke maki fuer den link...

code coverage gibt es dank EMMA, Clover und wie sie alle heissen schon recht gute sachen.

Du kannst natuerlich allgemein im Metriken Bereich bleiben - eine eher theoretische Arbeit (Bedeutung und Interpretation von Metriken in der Software Entwicklung ?) oder auch praktische (seis eine eigene Metrik finden, oder bestehende Metriken zu aggregieren).
die mir bekannten Metriken haben leider schon gute implementierungen bzw auch eclipse plugins....
 
Scheint so🙂

Ich muss allerdings sagen, dass ich mir bei der Auswahl eines geeigneten Themas extrem schwierig tue. Von meiner Arbeit bekomme ich immer nur folgendes mitgeteilt. "Für das Thema bist du verantwortlich..."
Klar das ich richtig, hilft mir aber leider nicht viel weiter.
Jedesmal wenn ich mir überlege eine bestimmte Anwendung für meinen QM Bereich zu entwickeln und anschließend mal in Google suche, sehe ich das bereits etliche Entwickler sowas bereits entwicklt haben.

Hätte nie im Leben daran gedacht, dass die Auswahl eines Diplomthemas so schwierig sein kann.

Gruß
Spike
 
im grunde ist ein neues Thema zu finden wie die nadel im heuhaufen zu suchen - das sehe ich als verdammt schwierig an.

Was aber nicht heisst das bestehende tools nachteile haben bei denen du Idee hast es besser machen zu koennen

bzw ist es denk ich auch interessant zu deuten welche Systeme gibt es, soll man alle einsetzen, welche, welche nicht

haengt stark von deinen praeferenzen ab - theoretisch oder brutal-praktisch
 
Das heist ich könnte auch eine Abhandlung über den Einsatz von Code Coverage Tools in der Software Entwicklung schreiben? Das dabei nicht unbedingt eigene Entwicklung im Vordergrund steht, würde micht unbedingt stören.
Also in ungefähr so:

- welche Tools gibts?
- Vor und Nachteile
- Einsetzbarkeit in der Software Entwicklung (z.B. Anhand eines Entwicklungsbeispiels in unserer Firma)

?

Gruß
 
meiner Ansicht nach ja:

was gibts, was messen sie, alle nutzvoll, wie kann man sie interpretieren.
Anhand eines Projektes in der Firma Metrikwerte analysieren.

Ansonsten falls du was schreiben willst (oder vll weiss jemand wo es das gibt) - ich suche ein verlaessliches Tool zum Messen des CRAP werts (Crap4j ist komisch und ausser selber zusammenzusuchen hab ich noch nix gefunden)
 
Dachte immer ich müsste auch ein Stück Software selbst entwickeln. Aber da ich ja aus der QM Ecke komme, werde ich dort wohl kaum etwas finden, was noch nicht irgendjemand entwicklt hat.
Kannst du kurz beschreiben was der GRAP Wert ist? Evtl. ist das ja ein mögliches Thema 🙂

Gruß
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben