Automatisiertes Testen – und jetzt?

Das Software-Projekt wurde durch automatisierte Tests erweitert? Klasse! Ein großer Schritt wurde gemacht das Projekt in ganz neue Sphären der Softwareentwicklung zu bringen!

Oh, es sind nur eine Hand voll Tests? Und das letzte mal wurden sie vor vier Monaten ausgeführt? Das muss anderes werden.

Automatisierte Tests müssen gelebt und gepflegt werden. Sie müssen als Hilfswerkzeug für Softwareentwicklung verstanden werden, um deren Arbeit zu beschleunigen und deren Arbeitsqualität enorm zu steigern. Hier muss der vollständige Prozess von der Anforderung bis zur Produktivnahme betrachtet werden.

Es gibt einige Möglichkeiten das Schreinen und Auswerten von Automatisierten Tests mit dem normalen Arbeitsablauf verschmelzen zu lassen. Test Driven Development hilft Tests zu schreiben. Zum Auswerten bieten meisten Entwicklungsumgebung die Möglichkeit automatisierte Tests nach jedem Kompilieren auszuführen, oder gar nach jedem Speichern und das Ergebnis übersichtlich darzustellen.

Automatisierte Tests können auch der Ausgangspunkt sein neues zu erforschen, etwas neues auszuprobieren, aber auch um Code zu dokumentieren. Tests enthalten das Wissen über welche Auswirkungen eine Funktion hat und wie diese anzuwenden ist, ohne mit Implementationsdetails zu verwirren.

Nun nehmen wir mal an, dass das automatisierte Testen ein Teil des Arbeitsablaufs oder gar der Kultur geworden ist. Was kann man noch damit anstellen?

Aufräumen. Die Codequalität ist ein großer Faktor wenn es darum geht, wie schnell eine Änderung durchzuführen werden kann. Daher ist es wichtig auch bestehenden Code zu überarbeiten und aufzuräumen. Wurde mal geschleudert, um eine Deadline einzuhalten? Kein Problem, wenn danach der Code bereinigt wird. Aber Codezeilen hin und her zu schieben birgt die Gefahr eine Funktionalität ungewollt zu verändern. Hierbei helfen die automatisierten Tests ungemein. Sie zeigen an ob Code-Bereinigungen Auswirkung auf die Funktion haben. Und das nach jedem kleinen Bereinigungsschritt.

Umbaumaßnahmen. Das einführen von neuen Technologien birgt immer das Risiko, dass sie sich ein Stück weit anders verhalten, als es erwartet wurde. Viele Probleme können mit automatisierten Tests schon früh in der Entwicklung erkannt werden, da die das andere Verhalten der neuen Technologie erkennen. Manchmal reicht es das neue Verhalten in die Software einfließen zu lassen, ab und zu kann es auch die Grundlage sein sich gegen die neue Technologie zu entscheiden. Diese Entscheidungen können an Hand der Tests auf Fakten getroffen werden, und nicht nur auf eine Panikreaktion, weil am Produktivnahmewochenende nach 11 Stunden manuellen Auslieferns irgendwie nichts mehr so funktioniert, wie es angedacht war.

Automatisches Ausliefern. Wenn wir schon beim Thema sind: durch automatisierte Tests kann die Korrektheit und Qualität eines auszuliefernden Artefakts geprüft werden. Eine CI/CD-Pipeline beinhaltet dafür einen eigenen Schritt, der die Tests ausführt und das Ergebnis evaluiert. Werden Fehler festgestellt, dann wird die Pipeline angehalten und das Artefakt wird nicht ausgeliefert. Durch das Automatisieren der Tests und des Deployments werden Fehler langfristig reduziert. Eine Datei wurde beim Ausliefern vergessen? Dann wir sie ins Deployment-Skript aufgenommen, und der Fehler passiert nicht mehr. Auf dem Testsystem wurden die Datenbankverbindungen der Produktivdatenbank hinterlegt und die Hälfte der Tabellen sind jetzt leer? Einmal korrekt in der CI/CD-Pipeline konfiguriert und schon kann es keine Verwechslung mehr geben.

Durch das Automatisieren von Tests werden viele Fehlerquellen eingedämmt oder gar eliminiert. Mitarbeiter können sich Aufgaben widmen, die sie mehr fordern und fördern, als repetitive Aufgaben zu erledigen. Automatisierte Tests haben so viel mehr Potential als nur einen kleinen Fehler zu identifizieren.

Schreibe einen Kommentar