Automatisierte Tests sind wie Checklisten

Seien wir ehrlich: Softwareentwicklung ist harte Arbeit. Es geht nicht nur darum, einer Maschine beizubringen etwas zu tun -- das wäre ja einfach! Nein, es geht vor allem darum dafür zu sorgen, dass ich und andere in Zukunft daran weiterarbeiten können. Automatisierte Tests helfen dabei.

Wie muss man sich solche Tests vorstellen? Automatisierte Tests sind wie Checklisten, die ich schreibe und der Computer überprüft.

Eine solche Liste formuliert Anforderungen an die Software. Spezielle Programme arbeiten diese Listen Punkt für Punkt ab und zeigen, wo die Software sich anders verhält als gewollt.

Jeder, der sich einmal bei einer E-Mail-Adresse vertippt hat, weiß, wie pingelig Computer sein können, wenn etwas nicht genau ihren Erwartungen entspricht. Die Dinger sind ganz schön stur, gell?

Genau das macht man sich in Tests zunutze.

Dokumentation und Sicherheitsnetz in einem

Was bringen automatisierte Tests? Zunächst einmal eine rudimentäre Dokumentation, was die Software alles kann (vorausgesetzt, alle Tests laufen ohne Fehler durch und sind selbst nicht fehlerhaft programmiert).

Außerdem wird die Wartbarkeit der Software mit Tests erhöht. Jede noch so kleine Änderung kann Auswirkungen auf das Verhalten des gesamten Systems haben, wie auch XING weiß:

Jede neue Codezeile in einem Programm kann die exisitierenden Funktionalitäten beeinträchtigen.

Irgendwie beängstigend, oder? Ohne Tests ist man da als Entwickler weniger motiviert, Änderungen vorzunehmen. Mit Tests sieht die Sache anders aus.

Brillante Idee für ein neues Feature? Schreibe einen Test und entwickle dann die Funktion.

Unleserlicher Programmcode, der zwar tut was er soll, aber trotzdem verbessert werden muss? Kein Problem: Tests geben einem das gute Gewissen, dass sich am Verhalten der Software nichts geändert hat.

Bug gefunden? Der lässt sich mit einem Test nachstellen und dann beheben. So ist man davor geschützt, denselben Fehler nochmal zu machen.

Think big

Für große Projekte ist ein Argument für Tests unschlagbar: Wirtschaftlichkeit. Tests machen Änderungen an großen Systemen überhaupt erst möglich. Software zu warten, die über Jahrzehnte gewachsen ist und deren erste Autoren die Firma längst verlassen haben, ist ohne Tests ein Albtraum. Häufig ist eine Neuentwicklung unumgänglich -- und das kostet!

Für Kunden heißt das übersetzt: Tests sichern die Weiterentwicklung. Und das kann nur gut sein.

Die Kehrseite der Medaille

Natürlich können Tests genauso fehlerhaft sein wie andere Programme auch. Dagegen hilft meist nur Erfahrung, um Probleme zu erkennen und zu vermeiden.

Auch die Investition, die für die Entwicklung von Tests notwendig ist, ist nicht zu vernachlässigen: Nicht selten sind Tests länger als die eigentlichen Programme -- sogar in einem Mini-Projekt wie Headhunter ist der Test mehr als doppelt so lang wie das Programm selbst.

Ausblick

Dieser Aufwand ist es scheinbar auch, was manchen Manager davon abhält, in Tests zu investieren. Schade. Solche Firmen werden es in Zukunft schwer haben, Nachwuchs-Entwickler zu finden.

Man kann nur hoffen, dass sich Tests auch bei Kleinst-Projekten durchsetzen. Gerade für Hobbyprojekte kann es durchaus hilfreich sein, das vollständig getestete Programm an jemanden abzugeben, wenn man selbst keine Zeit mehr hat.

[Foto von Jen Rabulan-Bertram, CC-Lizenz]

Aktualisiert: