JUnit-Tests

Ein Programmierer sieht rot: Was tun bei fehlerhaften JUnit-Tests?

Oliver Böhm

Was kann man machen, wenn man bei jedem Test rot sieht? Wie bekommt man es hin, dass man wieder auf einen grünen Zweig kommt? Es gibt da einige einfache Tipps und Tricks, die einem bei diesem Ziel helfen. Wie das geht, erfahren Sie hier.

In einem meiner letzten Einsätze wurde ich zu einem Projekt hinzugezogen, das schon einige Jahre auf dem Buckel hatte und von Bea WebLogic 8 auf WebLogic 10.3 umgezogen werden sollte. Meine Aufgabe bestand darin, die Software und das Deployment-Verfahren entsprechend anzupassen, um wieder auf der Höhe der Zeit zu sein. Was macht man als Erstes, wenn man sich in ein neues (altes) Projekt einarbeitet? Man richtet sich die Entwicklungsumgebung ein (oft schwierig genug), man sichtet die Dokumentation, von der man nicht weiß, wie aktuell sie ist, man schaut in die Software, die man nicht versteht. Und irgendwann landet man bei den (JUnit-)Tests. Und siehe da, davon gab es jede Menge – ca. 500 Einzeltests. Dumm nur, dass ca. 300 davon nicht liefen. Beim nächsten Projekt war es auch nicht viel anders. Von den 200 Tests, die es dort gab, verursachte die Hälfte davon Kopfweh und längere Kaffeepausen.

Kommt Ihnen das bekannt vor? Und Sie wissen, Sie brauchen diese Tests für Ihre Arbeit. Und zur Beruhigung ihrer Nerven. Wie kann man möglichst schnell einen Großteil der Tests retten, ohne allzu lang aufgehalten zu werden? Vor allem die Menge der fehlerhaften Tests ist dabei oft hinderlich (Abb. 1).

Abb. 1: Fehlgeschlagene JUnit-Tests

Vor allem wenn man neu im Projekt ist, weiß man meistens nicht, woran es liegt. Habe ich vielleicht beim Aufsetzen des Projekts etwas falsch gemacht? Sind die Tests vielleicht nicht mehr relevant? Liegt es daran, dass ich die falschen Testdaten habe? Die Ursachen können vielfältig sein:

  • Daten haben sich geändert
  • Anforderungen haben sich geändert
  • Umgebung hat sich geändert
  • Software hat sich geändert

In den allermeisten Fällen ist fehlende Pflege der Hauptgrund für den roten Testbalken. Um wieder in den grünen Bereich zu kommen, gibt es zwei Alternativen:

  • Reparieren
  • Wegschmeißen

Der erste Anlauf bestand darin, die bestehenden Tests wieder zum Laufen bringen. Schließlich wurde irgendwann mal vor langer Zeit viel Aufwand in die Erstellung der Tests investiert. Als Gründe für das Scheitern der Tests zeigten sich folgende Ursachen:

  • Bei einigen Tests war nur das Setup unzureichend – so war z. B. die Verbindung zur Datenbank noch noch nicht aufgesetzt. Auch mussten für einige Klassen erst Daten aus der Datenbank geladen werden.
  • Die Tests waren nicht immer unabhängig.
  • Es wurden die falschen Testdaten verwendet bzw. ein falsches Ergebnis erwartet.
  • Einige Tests waren nicht mehr relevant.

Mit diesem Wissen ließen sich von den insgesamt 600 Tests ca. 100 Tests reparieren oder aussortieren. Die restlichen 200 fehlerhaften JUnit-Tests erwiesen sich als eine harte Nuss, weil das Wissen um diese Tests im Team nicht mehr vorhanden und die ursprünglichen Autoren nicht auffindbar waren. Erschwerend kommt natürlich der Zeitdruck hinzu, den man aber eigentlich immer hat.

Geschrieben von
Oliver Böhm
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.