Legacy Code hat zwei Eigenschaften: er ist unverstanden und er ist ungetestet. Verständnis entsteht nur durch Auseindersetzung mit dem Code (und die erfordert gute Testabdeckung, welche leider nicht gegeben ist). Tests erfordern Verständnis (was leider auch nicht gegeben ist). Ein Ansatz diesen Abhängigkeitszyklus aufzubrechen ist der sog. Golden-Master-Test:
Anstatt systematisch Tests aufzubauen fixiert man lediglich den Output zu gegebenem Input. Da der Input/Output der Methode oft nicht visibel ist, müssen hier oft noch zusätzliche manuelle Anpassungen (einlesen von Input, logging von Output) erfolgen. Vorteil dieses Ansatzes ist, dass man beim Schreiben des Golden-Master-Tests Verständnis über den Output des Codes erlangt, Nachteil ist, dass er insgesamt sehr aufwändig und fehleranfällig ist. Die Nachteile lassen sich aber mit geeigneten Werkzeugen reduzieren.
In diesem Vortrag demonstrieren wir ein Werkzeug, welches Golden-Master-Tests generiert:
- Pure-Java-Junit-Tests
- Annotationsbasiert ohne zusätzlichen Code
- dank Automatisierung praktisch unbegrenzt skalierbar
- für beliebige Java-Projekte (nicht beschränkt auf GUI- oder Webtechnologien)
Stefan Mandel
![](sites/entwicklertag.de.karlsruhe.2017/files/Stefan Mandel.jpg)
Stefan Mandel arbeitet seit 12 Jahren als Software-Entwickler, seit 4 Jahren bei andrena objects ag. Durch die Arbeit beim Kunden ist er häufig damit beschäftigt unbekannten Code zu verstehen und zu testen. Stefan hat Informatik an der Universität Karlsruhe studiert, damals mit Schwerpunkt Compilerbau/Programmanalyse. Auch heute noch beschäftigt er sich in der Freizeit mit Compilern, insbesondere der JVM.