$K(Die Werkzeuge klein aber mächtig) $KK(Junit) [e|JUnit>http://www.junit.org] ist das zentrale Tools für Unittests. Auf der Homepage von JUnit sind eine Vielzahl von Artikel über TestFirst Programming und viele zusätzliche Tools, die Junit ergänzen. $KK(JDepend) [e|JDepend>http://www.clarkware.com/software/JDepend.html] ist ein kostenlosses Tool das Java Source Code auf PaketEbene analysiert. Es misst die Abhängigkeiten zwischen Paketen und erkennt auch zyklische Abhängigkeiten. $KK(CodeCoverage) Tools die den Source Code analysieren, sind eine gute Ergänzung zu manueller Codeinspektion. Beide Arten von Codeinspektionen können sich aber gegenseitig nicht ersetzen. Das Ergebnis von automatisierten Codekritiken können Akzeptanzkriterien sein, und dies kann direkt in einem Vertrag hineingeschrieben werden. Allerding muss man einige Toleranzen offen halten. Nicht jede Kritik die ein Code Analyse Tool findet ist berechtigt, in einigen seltenen Fällen ist es auch sinnvoll bewusst gegen typische Regeln zu vertossen. Wir können Code-Qualität garantieren und mit diesen Tools messbar nachweisen In Java gibt es viele kommerzielle (und teure) Tools die den Source Code analysieren. Falls der Kunde diese besitzt und zur Verfügung stellt, sollten wir sie nutzen. Inzwischen gibt es auch erste OpenSource Tools: * [e|PMD>http://pmd.sourceforge.net/] Auszug aus der Beschreibung: PMD scans Java source code and looks for potential problems like: **Unused local variables **Empty catch blocks **Unused parameters **Empty 'if' statements **Duplicate import statements **Unused private methods **Classes which could be Singletons **Short/long variable and method names PMD gibt es unter anderem fuer Eclipse, Forte und JBuilder * [e|CPD>http://www.onjava.com/pub/a/onjava/2003/03/12/pmd_cpd.html] CPD ist ein Copy Paste Detector und baut auf PMD auf. Er sucht im Java Code nach identischen Code (fragmenten). * Checktyle (Link muss noch eingetragen werden). $KK(CoverageAnalyse) Eine Coverage Analyse gibt Hinweise auf Vollständigkeit der Tests. Eine Coverage Analyse protokolliert welcher Code bei einem Test mindestens einmal bzw. nie durchlaufen wurde. Eine Coverage Analyse hilft toten Code und Lücken in den Tests zu finden. Man beachte daß 100% Testabdeckung noch keine Garantie für die Korrektheit des Programms gibt: Test State Coverage, Not Code Coverage

int test( int a, int b){

    return a / (a + b);

}

In der XP-Community wird häufig [e|Clover > http://www.thecortex.net/clover] empfohlen. Es ist leider nicht mehr Open Source. Das Preis, Leistungsverhältnis soll aber sehr gut sein. Die Einsatzmöglichkeiten von [e|Clover > http://www.thecortex.net/clover] beschreibt auch ein deutschsprachiger [e|Artikel>http://www.oio.de/testcoverage-clover.htm ] der Firma [e|OIO > http://www.oio.de ] Ein anderer Weg geht [e|Jester > http://jester.sourceforge.net/]. [e|Jester > http://jester.sourceforge.net/] ändert einfach den Code und lässt alle Tests durchlaufen. Wenn immer noch alle Tests korrekt durchlaufen, wird der Teil des Codes den [e|Jester > http://jester.sourceforge.net/] geändert hat nicht abgedeckt. [e|Jester > http://jester.sourceforge.net/] ist Open Source $KK(Versionsverwaltung) Das bekannteste ist sicherlich [e|CVS>http://www.cvshome.org]. Es lässt sich auch direkt in Eclipse einbinden. $KK(Fehlerdatenbank) Ziel einer Fehlerdatenbank: * Nachverfolgen welche Fehler und Features implementiert sind * Ermitteln offener Punkte mit Priorisierung * Zuweisung von Aufgaben an Verantwortliche * ToDo Listen fuer die Mitarbeiter. * Statistische Analyse welche Art von Fehler wie häufig vorkommt. * Nachvollziehen, wer welche Lösung aufgrund welcher Anforderungen bzw. Problem implementiert hat. * Dijenigen die ein Fehler melden bzw. Feature beantragen sollen garantiert auch benachrichtigt werden. * Überblick bewahren, wer an welchem Problem arbeitet. * automatische E-Mail Benachrichtigung, wenn sich in dieser Liste etwas aendert * automatische Erinnerung wenn Punkte offen bleiben. * Verschiedene Sichten für Kunde und Softwarehaus. Es muss möglich sein Bemerkungen hineinzufügen, die der Kunde nicht lesen kann. * Volltextsuche über Stichworte Tool - Vorschlag: * Ein Tool das von der Beschreibung aus sehr brauchbar zu sein scheint ist [e|FogBUGZ>http://www.fogcreek.com/FogBUGZ/]. Es ist leider nicht kostenlos, aber mit unter 1000 Dollar fuer 10 Personen, kostet es nicht die Welt. Vom Autor dieser Software ein netter [e|Artikel>http://german.joelonsoftware.com/Articles/PainlessBugTracking.html] über Fehlerverwaltung. * Ein bekanntes Open Source Tool ist [e|Bugzilla>http://www.bugzilla.org/]. [e|Hier>http://www.softwaretesting.de/article/view/2/1/6/] ist eine deutschsprachige Beschreibung und Installationshilfen.