In unserer monatlichen Blog-Reihe zu unserem Anti-Pattern-Kalender 2014 zum Thema Testing hier der Kandidat für den Monat September: Der Hochstapler.
Show ist das halbe Leben…
Der Hochstapler behauptet so einiges: Auch, dass er testet. Tut er aber nicht. Schauen wir uns dazu einen Test an, in dem wir die Logik einer Account-Klasse aus dem Finanzwesen verifizieren.
@Test public void balanceIs900AfterWithdrawalOf100From1000BalanceAccount() { Account a = new Account(); a.setBalance(1000); a.withdraw(100); }
Toller Test! Er wird – außer es wird eine Exception geworfen – immer grün werden, da es keine assert*-Aufrufe gibt. Was ist der Nutzen solcher Tests? Die einfache Antwort ist Code Coverage. In manchen Unternehmen gibt es Richtlinien, dass eine gewisse Code Coverage erreicht werden muss. Tja, und mit solchen Tests kann die Code Coverage extrem leicht um ein ein paar Prozent nach oben „korrigiert“ werden. Und schon steht einem Deployment nichts mehr im Weg.
Vielleicht wurde so ein „Test“ auch eingesetzt, um mal eben etwas auszuführen. Nebenbei liest man die Logs mit oder schaut in die Datenbank und beurteilt so, ob alles so läuft wie gewünscht. Dummerweise macht das der Job auf dem Build Server nicht!
Natürlich ist so etwas gut für die Statistik, aber das böse Erwachen kommt dann, wenn in Produktion ein Fehler entdeckt wird, der eigentlich von einem Hochstapler-Test hätte abgedeckt sein müssen.
Also, liebe Qualitätsfreunde und auch die anderen da draußen: Investiert die paar Minuten, die es dauert, um die Tests rund zu machen. Und vielleicht rettet es dem einen oder anderen auch gleich den Job.