Warum automatisiertes Testen sinnvoll ist
Durch stetig wachsende Anforderungen und die steigende Komplexität in Softwareprojekten lässt sich der Gesamtumfang der Software nur noch schwer überblicken. Änderungen an einer bestehenden Software können Fehler verursachen, die im ersten Blick nicht direkt abzusehen sind. Wechselwirkungen zu einer bestehenden Funktion der Software sind keine Seltenheit. Ein manuelles Testen ist an dieser Stelle nicht nur langwierig, sondern eben auch fehleranfällig.

An dieser Stelle ist es natürlich sinnvoll, diesen manuellen Prozess soweit es geht zu automatisieren. Denn mit Hilfe von automatisierten Tests lassen sich gerade kritische und wichtige Stellen in der Software einfach und schnell testen. Und dies auch schon bereits sehr früh innerhalb des gesamten Entwicklungsprozesses.

Ich will im Folgenden nicht groß drauf eingehen, wie man genau die Software durch automatisierte Tests abdeckt oder ob man mehr Unit oder doch mehr Integration Tests schreiben sollte. Vielmehr will ich generell verschiedene Vorteile und Sichtweisen aufzeigen, die meiner Meinung nach sehr gut beschreiben, warum automatisiertes Testen wichtig ist.

Automatisiertes Testen hilft dem Entwickler

Man muss als Entwickler nicht einmal direkt testgetrieben arbeiten, um den Vorteil von Tests nutzen zu können. Auch im Anschluss an die eigentliche Entwicklung geschriebene Tests helfen an erster Stelle dem Entwickler selbst. Einmal geschriebene Tests lassen sich immer wieder ausführen, so dass im Entwicklungsprozess der Anteil vom manuellen Testen reduziert wird. Der Entwickler kann sich also auf das wesentliche konzentrieren.

 Zudem hat der Entwickler eine Art Sicherheit, dass der vor Monaten entwickelte Programmcode auch nach mehreren Änderungen und Erweiterungen weiterhin funktioniert. Gerade wenn das Projekt größer wird, die Anzahl an Code wächst oder auch Entwickler zwischen Projekten wechseln, verliert man als Entwickler schnell den Überblick.

Test als eine Art der technischen Dokumentation

Kommen neue Entwickler in das Team, so spiegeln die Tests die konkreten Anwendungsfälle der Anwendung wieder. Gerade Integrations- bzw. Functional-Tests vermitteln zum Beispiel dem Entwickler alleine durch das Lesen der Tests einen ersten groben Überblick, welche Funktionen die Anwendung beinhaltet, wie die Interaktion mit gewissen Programmteilen funktioniert oder wie genau auf Benutzer- oder Programmfehler reagiert wird.

Automatisiertes Testen ist zu teuer

Ein Argument, was ich als Entwickler und Projektmanager in vielen Projekten leider schon sehr häufig gehört habe: Das Erstellen von automatisierten Tests ist zu teuer. Auf den ersten Blick ist das Argument natürlich stichhaltig. Die Tests müssen alle zusätzlich entwickelt werden, was wertvolle Zeit und demnach auch Geld kostet. Der Aufwand für die Tests darf auch nicht unterschätzt werden, da sie gerade zu Beginn der Entwicklung zeitaufwändig sind.

Auf den ersten Blick sind dies alles nahezu vernichtende Argumente, die gegen die Verwendung von automatisierten Tests sprechen, wäre da nicht das große Aber. Natürlich ist ein Mehraufwand durch zusätzliche Entwicklungsleistung teuer. Auch die notwendige Erfahrung auf Entwicklerseite ist notwendig, um nicht nur die Tests an sich entwickeln zu können, sondern vor allem auch eine Software, die grundsätzlich durch Tests abgedeckt werden kann.

Mit Hilfe von automatisierten Tests die Qualität im Projekt steigern

Allerdings ist der Kostenaspekt nur sehr kurz gedacht. Natürlich sind automatisierte Tests nicht generell für jedes Softwareprojekt sinnvoll. Für kleinere Projekte, in denen die Software nur sporadisch weiterentwickelt wird, sind natürlich schlechte Kandidaten und stehen im Kosten-Nutzen-Verhältnis natürlich auf verlorenem Posten. Projekte, in denen viele verschiedene Entwickler über einen langen Zeitraum häufig Anpassungen vornehmen und neue Funktionen in der Software ergänzen, sind dagegen prädestiniert, um die Software durch automatisierte Tests abzudecken. Gerade für Softwareprojekte, die unternehmenskritische Bestandteile haben, sind automatisierte Tests meiner Meinung nach ein fester Bestandteil der Entwicklung und kein optionaler Punkt, der als erstes gestrichen wird, wenn die Kosten des Projektes am Ende doch zu hoch sind.

Natürlich sind auch automatisierte Tests kein Allheilmittel gegen Fehler in der Software. Ein sinnvoller Anteil an Testabdeckung ist jedoch mittelfristig gesehen kostengünstiger als die vermeintliche Einsparung zu Beginn. Die initialen Kosten sind zwar durchaus höher und müssen zusätzlich investiert werden, da die Fehleranfälligkeit aber auf lange Sicht gesehen abnimmt, ist dadurch automatisch eine zusätzliche Qualität im Projekt zu erzielen.

Fazit

Automatisiertes Testen hilft grundsätzlich die Fehleranfälligkeit zu verringern und die Zeit, die für das manuelle Testing anfällt, um ein Vielfaches zu senken. Natürlich kostet die Umsetzung der automatisierten Tests Zeit und Geld. Das notwendige Knowhow ist ebenso wichtig, damit die automatisierten Tests auch wirklich ihren Zweck erfüllen. Die Kosten können sich aber je nach Projekt auch schnell wieder rentieren, wenn mehrere Entwickler effizienter mit der Weiterentwicklung beschäftigt sein können, anstatt mühsam Fehler in der Software beheben müssen.