10 Gründe, warum Test Driven Development die Lebensqualität verbessert

Hartmut Schlosser

Toran Billups, selbsternannter Kämpfer gegen Software-Praktiken, die das Schicksal der freien Welt bedrohen, erklärt in seinem jüngsten Blogposting, wie Test Driven Development (TDD), also die Methode, für ein Stück Software zunächst den Test und dann die Implementierung zu schreiben, sein Leben verändert hat. Er nennt zehn Gründe, warum TDD nicht nur zu qualitativ hochwertigerer Software führt, sondern auch seine Lebensqualität verbessert hat.

1. If you can’t write a test for something you don’t understand it

Die Praxis, Tests vor der Implementierung zu schreiben, zwingt dazu, sich intensiver mit dem zu lösenden Problem auseinanderzusetzen und führt so zu einer höheren Qualität des Codes, der auch für andere Entwickler besser nachvollziehbar ist. Als Nebeneffekt wird man bei TDD außerdem dazu genötigt, sich mit der Frage zu beschäftigen, was die Kunden eigentlich genau von der zu schreibenden Software erwarten.

TDD ist also im Grunde keine Test- sondern eine Designmethode.

2. Without a regression test you can’t clean the code

Ohne die Möglichkeit des schnellen Testens traut man sich oft nicht, existierenden lauffähigen Code zu verändern. Man kopiert den Code einer Klasse z.B. lieber in eine neue Klasse, die man dann um zusätzliche Features erweitert. Ergebnis ist ein überfrachtetes, unübersichtliches Projekt mit großen Mengen überflüssigen Codes.

3. Fast feedback cycles save time and money

Wenn man zuerst den Test schreibt, lässt sich die Korrektheit der Implementierung eines Features sofort überprüfen. Das führt dazu, dass man immer Gewissheit darüber hat, wann man mit der Entwicklung eines Features tatsächlich fertig ist. Ohne diese schnellen Feedback-Zyklen verliert man sich oft in der Suche nach den Ursachen für einen Bug. TDD hilft dabei, ein großes Problem in kleinere, überschaubare und testbare Probleme zu zerlegen.

4. You are going to test it anyway, spend the time to do it right

Regressionstests sind ohnehin unabdingbar. Ohne dass man diese regelmäßig durchführt, wird das Testen von großen Applikationen fast unmöglich. Sicherlich lassen sich Regressiontests auch nachträglich schreiben, doch dann kommt man erstes nicht in den Genuss der besseren Design-Qualität durch TDD. Zweitens tendiert die Zeit dazu, mit dem Vorrücken einer Deadline knapp zu werden, sodass nachträgliches Testen oft zu kurz kommt.

5. Without tests the next developer will need a word doc and a lot of luck

Unit-Tests sind auch eine gute Form der Dokumentation, da sie die Inputs und erwarteten Outputs anzeigen. TDD bringt den Testprozess und damit diese Form der Dokumentation ins Zentrum der Aufmerksamkeit.

6. Evolutionary design is possible without fear

Ohne TDD hat man oft Angst, die bestehende Codebasis zu verändern, da beim Auftreten eines Fehlers lange Ursachenforschung nötig wird. Mit TDD wird die Möglichkeit der Änderungen an der Codebasis quasi zum Prinzip erhoben, was einen wirklich evolutionären Entwicklungsprozess ermöglicht.

7. You will actually write less code

Mit Hilfe moderner IDEs und Refactoring-Werkzeugen schreibt man mit TDD weniger Code als ohne. Wenn man z.B. mit dem Tool ReSharper zunächst einen Test für eine noch nicht existierende Klasse schreibt, wirft ReSharper das Grundgerüst der Klasse auf Knopfdruck automatisch aus. Lästiger Boilerplate-Code muss nicht händisch geschrieben werden.

8. Job security

Bug-freie Software ist auch das Ziel eines jeden Chefs!

9. It actually makes my work more enjoyable

Bei jedem erfolgreichen Test hat man das Gefühl, etwas Wertvolles geschaffen zu haben: ein Stück lauffähiger Software, die man stolz auch anderen Entwicklern zeigen kann.

10. Wrapping it up

Billups´ Fazit: TDD stellt die Qualität und Lauffähigkeit von Software sicher. In Verbindung mit Akzeptanztests kommt man so zu einem System, welches den Anforderungen der Kunden tatsächlich entspricht. Und dies führt nicht zuletzt zu Zufriedenheit und Eintracht auf allen Seiten:

I’ve found that a combination of TDD and acceptance-testing can provide great value to any development team. The business begins to trust again, and this provides a better work environment for everyone. Toran Billups

Geschrieben von
Hartmut Schlosser
Kommentare

Schreibe einen Kommentar

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