Nicht nur die Energiewirtschaft oder die Industrie stehen vor den Herausforderungen der Digitalisierung. Damit die Unternehmen Digitalisierungsprojekte vorantreiben können, müssen Software-Anwendungen immer schneller zur Verfügung gestellt werden. Das erhöht auch den Druck auf die Entwicklung von Software. Langwierige Software-Tests müssen vermieden und durch automatisierte Prozesse ersetzt werden.
Automatisierte Tests in der Software-Entwicklung – Nicht nur ein Beschleuniger
Zu Beginn der Entwicklung von Anwendungen ist wenig Funktionalität in einer Software und damit auch relativ geringer Aufwand für die Tests dieser Funktionalität – also viel Entwicklung, wenig Tests. In der weiteren Entwicklung nimmt der Funktionsumfang in mehr oder minder großen Schritten zu. Bei jeder Änderung an der Software, wie zum Beispiel neue Funktionalität oder Wartung durch Bugfixes (das ist eine Korrekturauslieferung für Software) können Seiteneffekte auf bestehende Funktionalitäten niemals komplett ausgeschlossen werden. Dies führt dazu, dass stets die gesamte Funktonalität getestet werden muss. Da der Funktionsumfang weiter wächst, wächst auch der Aufwand für Tests ständig mit.
Werden diese Tests alle manuell durchgeführt, ändert sich das Verhältnis von Aufwänden für die eigentliche Entwicklung zur Testausführung dramatisch – wenig Entwicklung, sehr viel Aufwand für Tests.
Grundsätzliche Vorteile automatischer Tests
Durch die Automatisierung von Tests entfällt der manuelle Aufwand der regelmäßigen und häufigen Ausführung gleicher Tests. Das lohnt sich vor allem im Zeitablauf und bei lang laufenden Projekten/Produkten. Es stellt sicher, dass durch die Tests abgedeckte, zunehmende Menge an Funktionalität wie vorgesehen funktioniert. Wichtig ist, dass die Tests möglichst ganz ohne manuellen Aufwand oder Eingriff ausgeführt werden, sie also vollständig automatisch ausgeführt werden, sobald sich etwas an der entwickelten Software ändert.
In modernen Unternehmen der Software-Entwicklung wird schon seit Jahren die Continuous Integration praktiziert. Kontinuierliche Integration beschreibt den Prozess des fortlaufenden Zusammenfügens von Komponenten zu einer Anwendung. Nur hierdurch ist sichergestellt, dass es bei Änderungen ein schnelles Feedback gibt und damit sehr zeitnah Korrekturen vorgenommen werden können. Bei einer gegebenenfalls erst nach Monaten stattfindenden Testphase sind diese Korrekturen deutlich aufwändiger und teurer (Vgl. z.B. „10er Regel“ oder „rule of ten„).
Die Vorteile dieser Arbeitsweise in überschaubaren Schritten liegen zum einen im kontinuierlichen Arbeitsfluss, zum anderen in der Möglichkeit der frühzeitigen Fehlererkennung. In der Summe ergeben sich Vorteile bei Arbeitseffizienz und Software-Qualität.
Rule of ten
Die Zehnerregel der Fehlerkosten besagt, daß je weiter ein Fehler sich unentdeckt in die späten Phasen des Werdeganges eines Produktes oder Prozesses bewegt – oder gar bis zum Kunden –, umso höher werden die Kosten zur Behebung dieses Fehlers. In jedem Schritt der Entwicklung ist die Behebung eines Problems etwa zehnmal schneller und kostengünstiger als in der nächsten Phase.
Mehraufwand lohnt sich
Die Erstellung automatischer Tests bedeutet zunächst einen Mehraufwand – sinnvollerweise erfolgt dies direkt während der Software-Entwicklung und kontinuierlich. Vergleicht man diesen Mehraufwand mit dem Aufwand für die Entwicklung, bleibt das Verhältnis relativ konstant. Allerdings steigt erfahrungsgemäß mit zunehmender Komplexität einer Software auch der Testaufwand. Während der Aufwand für manuelle Tests bei komplexen Systemen explodieren würde, kommen nun die Vorteile automatischer Tests voll zum Tragen. Fehler werden frühzeitig erkannt und von den Entwicklern behoben. Die Entwickler können ihre Änderungen so oft wie möglich in die gemeinsame Code-Basis integrieren. Damit bleibt also auch langfristig der Gesamtaufwand für die Entwicklung inklusive Tests stabil und explodiert nicht so, wie bei manuellen Tests.