Fehlende Testbrille, langsame Entwicklung - Der unterschätzte Wert von Tests
Ich bin immer wieder erstaunt, wie viele Entwickler:innen auf Tests verzichten.
Ich muss mir mal etwas vom Herzen schreiben: Ich bin immer wieder erstaunt, wie viele Entwickler:innen auf Tests verzichten.
Woran liegt das?
In diesem Artikel möchte ich die mir immer wieder begegnenden Gründe aufgreifen, sortieren und am Ende hoffentlich ein paar Impulse geben.
Das bezahlt der Kunde nicht. - Ein Satz, den ich zu häufig gehört habe. Ich lasse ihn hier mal so stehen, ohne ihn weiter zu kommentieren.
Ein Kulturproblem? - Warum Tests in vielen Anwendungen zu kurz kommen, könnte in der Unternehmenskultur liegen. Tests werden als Zeitfresser angesehen. Einzelne Entwickler:innen in leitenden Positionen haben eventuell keine positiven Erfahrungen mit Tests gemacht und geben diese Einstellung an ihre Teams weiter.
Fehlendes Verständnis für den Wert von Tests? - Sie werden als nice to have betrachtet, als etwas das man machen kann, wenn Zeit übrig ist.
Druck von Stakeholdern? - Feature Requests, Deadlines und andere Prioritäten sorgen dafür, dass keine Zeit bleibt um die Axt zu schärfen. Sätze wie “Ich muss das jetzt schnell fertig machen. Wenn ich jetzt mit Tests anfange, dann brauche ich viel länger.” höre ich immer öfter.
Legacy-Systeme als Blocker? - Alte (leider auch neue) Codebasen wurden oft ohne Testbarkeit im Hinterkopf geschrieben. Den Code nachträglich testbar zu machen, erfordert einen erheblichen Aufwand, der oft nicht betrieben wird.
Mangelnde Schulung und Bewusstsein? - Tests werden als mühsam und kompliziert angesehen, weil das Wissen fehlt, sie strukturiert und effizient einzusetzen.
Der wahre Grund
Man kann es sich schon denken: All diese Gründe bilden einen Kreislauf, den es zu durchbrechen gilt. Teams, die keine Erfahrung mit Tests haben, schaffen auch keine Kultur, in der sie selbstverständlich sind.
Dabei spüre ich in allen Gesprächen, dass es nicht an der Unwilligkeit liegt, Tests zu schreiben. Vielleicht ist es die Sorge davor etwas falsch zu machen oder die Scham zuzugeben, dass man nicht weiß wie und wo man anfangen soll.
Zwei Impulse zum Umdenken
Tests beschleunigen die Feature-Entwicklung
Entgegen der Meinung, dass Tests die Entwicklung verlangsamen, beschleunigen sie sie tatsächlich. Ich erlebe immer wieder, dass viel Zeit damit verbracht wird, eine gewisse Datenkonstellation herzustellen, die Anwendung zu starten, mithilfe der UI zu navigieren und zu prüfen, ob das Feature funktioniert - Und das bei jedem kleinen Schritt.
Die Zeit, die in diesen manuellen Prozess gesteckt wird, könnte alternativ in das Schreiben eines Tests investiert werden, der, sobald er geschrieben ist, immer wieder ausgeführt werden kann. - Das spart Zeit und Nerven.
Tests geben Kontrolle und Selbstvertrauen
Ohne Tests ist es schwer Vertrauen in den eigenen Code zu haben. Fällt im Review ein Fehler auf der eine kleine Änderung erfordert, bevor das Feature in Produktion gehen kann, ist auf einmal Zeitdruck da. Eilig wird der Code angepasst und beim manuellen Testen hoffentlich nichts übersehen. - Das ist Stress pur.
Tests bieten die Sicherheit, dass Seiteneffekte schnell entdeckt und Änderungen zuversichtlich implementiert werden.
Meine Tipps für den Einstieg
Klar, man kann nicht erwarten, dass nach Feierabend noch Zeit und Energie in das Lernen von Tests fließen kann. Wie also während der Arbeit starten?
- Schnelle Erfolge - Fang bei Funktionen an, die leicht zu testen sind, weil sie z. B. keine Abhängigkeiten haben und kein komplexes Setup benötigen. Dieser “Quick Win” kann helfen, das Vertrauen in Tests zu stärken und ihre Akzeptanz zu erhöhen.
- Test-First denken - Versuche dich an Test-Driven Development (TDD). Auch wenn du es nicht durchgehend anwendest, hilft es dabei, Tests als integralen Bestandteil der Entwicklung zu sehen, statt als nachträgliche Absicherung.
- Legacy-Code refaktorisieren - Anstatt alles in einem großen Wurf testbar zu machen, fang an, bestehende Teile des Codes nach und nach zu refaktorisieren. Teile auf, extrahiere Funktionen und gestalte sie so, dass sie testbar werden.
- Pairing und Mentoring - Arbeite mit Kolleg:innen zusammen, die mehr Erfahrung mit Tests haben, oder biete dich selbst an, anderen zu zeigen, wie man Tests sinnvoll implementiert. So förderst du eine Kultur des Wissensaustauschs und machst Tests zur Selbstverständlichkeit im Team.
Fazit: Mehr Komfort, mehr Kontrolle
Letztlich machen Tests den Entwicklungsprozess nicht nur robuster, sondern auch komfortabler. Sie geben dir die Möglichkeit, in isolierten, kontrollierten Umgebungen zu arbeiten, Fehler schnell zu entdecken und sicherzustellen, dass Änderungen nicht mit unerwarteten Seiteneffekten einhergehen. Und genau das macht es so verwunderlich, dass so viele Unternehmen auf diesen Luxus verzichten. Tests sind kein nice to have sondern ein unverzichtbares Werkzeug, um effizient und stressfrei arbeiten zu können.
PS Ich hatte das Glück einige Jahre bei Schleupen SE zu lernen, sodass ich eine gute Testhygiene mitbekommen habe. Danke dafür! 🙏 Heute halte ich die Testfahne hoch und versuche, sie zu etablieren. Wenn du Fragen hast oder Unterstützung brauchst, melde dich gerne bei mir. Ich freue mich, von dir zu hören! 🚀 - und denke immer daran: der Code ist irgendwo da draußen. 👽