Wann ist Testautomatisierung sinnvoll?”

Die Frage danach, wann Testautomatisierung sinnvoll ist, lässt sich am vollständigsten durch die Beantwortung der folgenden Fragen klären:

  • Was ist eigentlich Testautomatisierung?

  • Wann ist der richtige Zeitpunkt um Testautomatisierung zu implementieren?

  • Welche Vor- und Nachteile bringt Testautomatisierung mit sich?

DevOps Kultur

DevOps lebt von den Menschen, die an dieser Kultur beteiligt sind. Es besteht zwar grundsätzlich aus Prozessen, Tools und Kulturkomponenten, aber eine Kultur kann bekanntlich nicht gekauft werden, sondern muss gelebt werden. Dabei besteht DevOps nicht nur aus der interdisziplinären Zusammenarbeit von Development und Operations, sondern auch von der, der allen anderen am Produktlebenszyklus beteiligten Komponenten, wie Product Owner, Security oder Testing. Um zu erreichen, dass diese Herangehensweise im Unternehmen gelebt wird, braucht es mehr als nur das Einstellen eines DevOps Engineers oder der Etablierung neuer Prozesse- die ganze Organisation muss dazu beitragen. Im besten Fall gibt es Leader, die die Zusammenarbeit der unterschiedlichen Teams fördern und zu einer gemeinsamen Philosophie beitragen. Der Schlüssel zum Erfolg liegt hier im Ausbrechen aus alten Denkmustern, wie „Systemadministator vs. Programmierer“. Nur, wenn diese Aufspaltung aufgeweicht wird, kann eine DevOps Bewegung erfolgreich im Unternehmen gelebt werden. Denn es ist nicht zu vergessen, dass es sich hierbei weniger um eine Methodologie oder ein Management-Framework handelt, sondern vielmehr um eine holistische Herangehensweise beziehungsweise Philosophie.

Was ist eigentlich Testautomatisierung?

Testautomatisierung ist ein automatisiertes Testverfahren, das Test-Aktivitäten anhand von Skripten und Tools automatisiert. In der Regel bezieht sich der Begriff Testautomatisierung auf den Bereich der Software-Qualitätssicherung.

Bei der Testautomatisierung wird ein Softwareprodukt mit selbst entwickelter Testsoftware oder auf dem öffentlichen Markt erhältlichen Testautomatisierungs-Tools auf Fehler geprüft. Zudem kann man anhand der Testprotokolle die generelle Qualität der Software evaluieren. Das Testautomatisierungstool kann auf die Testsoftware zugreifen und kann sie steuern. Die meisten dieser Tools arbeiten mit sogenannten Verifikationspunkten. Mit diesem Verifikationspunkten kann das Tool prüfen, ob das Ergebnis des Tests mit dem erwarteten Ergebnis übereinstimmt. Falls das Ergebnis nicht übereinstimmt, verzeichnet das Testautomatisierungstool eine Anomalie im Protokoll.

Ob es sich bei den Anomalien tatsächlich um Fehler handelt, muss für gewöhnlich manuell geprüft werden. Das Testautomatisierungstool kann zum Beispiel auch eine Anomalie verzeichnen, falls eine neue Version der Testsoftware geprüft wird und das Testautomatisierungstool nicht an die Neuerungen in der Software angepasst wurde.

Wann ist der richtige Zeitpunkt um Testautomatisierung zu implementieren?

Wenn bei der Qualitätssicherung einer Software die Geschwindigkeit eine wichtige Rolle spielt und zugleich die vorhandenen Ressourcen begrenzt sind, ist die Testautomatisierung quasi unumgänglich. Automatisierte Tests benötigten nämlich im Vergleich zu manuellen Testern nur einen Bruchteil der Zeit und der Ressourcen für die Prüfung einer Software.

Man sollte jedoch nicht einfach willkürlich mit der Automatisierung der Tests beginnen. Es empfiehlt sich zunächst, den aktuellen Zustand der Software zu analysieren und davon ausgehend Ziele und Anforderungen zu definieren. Sobald die automatisierten Tests gestartet sind, durchlaufen sie immer wieder dieselben Regressionstests. Anhand dieser wiederholten Tests kann man die Qualität der Software bestimmen und vorhandene Fehler ausfindig machen. Als Entwickler erhält man somit sehr schnell einen umfassenden Überblick auf die Software, ohne dabei unnötig viele Ressourcen zu verschwenden.

Testautomatisierung wird also nicht generell benötigt, um die Qualitätssicherung bei Software durchzuführen. Doch gerade bei komplexeren Software-Projekten, die viele Regressionstests benötigen, ist die Testautomatisierung eine gute Wahl. Wenn eine Software hingegen häufig maßgeblich verändert wird, lohnt sich die Testautomatisierung nicht wirklich, da die Wartung der Testskripte und Testautomatisierungstool zu viel Aufwand benötigt.

Die Testautomatisierung ist aktuell besonders im Bereich der agilen Entwicklung gefragt. Wenn man den Erfahrungsberichten von Agile-Experten und den Best Practices der agilen Entwicklung Glauben schenken mag, scheinen automatisierte Tests vor allem bei kurzen Iterationen die richtige Wahl zu sein. So können die Tests zum Beispiel während der Nacht durchlaufen und automatisch nach jedem Code-Check-in mit einem eigenen Build-Prozess gestartet werden.

Strukturierte Verbesserungen dank Testautomatisierung

Ein Testautomatisierungsverfahren benötigt drei Testebenen, um einen Continuous Delivery-Prozess zu ermöglichen. Hierbei handelt es sich um Unit-, Integrations-, und UI-Tests. Wenn ein Testautomatisierungsverfahren diese Tests in vollautomatisierter Form enthält, können regelmäßig schnell und zuverlässige Deployments durchgeführt werden.

Im Unit-Test werden einzelne Methoden geprüft. Die anderen Methoden und das Verhalten des entsprechenden Code-Abschnittes sind für diesen Test irrelevant. Mit dem Integrationstest wird überprüft, ob die Komponenten der Software problemlos im Rahmen von kontinuierlichen Prozessen miteinander kooperieren. Der Integrationstest enthält beispielsweise die Schnittstellenprüfung der Code-Module. Der letzte Abschnitt der Continuous Delivery Testsverfahren wird aus den UI-Tests gebildet. Bei diesen Tests wird das User Interface (UI) mit simulierten Eingaben auf Fehler und Probleme geprüft. In der Regel wird zudem die Korrektheit der dargestellten Grafiken und Bilder untersucht.

Welche Vor- und Nachteile bringt Testautomatisierung mit sich?

Die Automatisierung von Tests durch Testskripte und Testautomatisierungstool erleichtert und beschleunigt die Fehlersuche. Einer der wichtigsten Vorteile, die Testautomatisierung mit sich bringt ist die Kapazitätserweiterung. Da die Tests automatisch von einer Software durchgeführt werden, können sich Mitarbeiter auf komplexe Aufgaben fokussieren, die mehr Kreativität und Erfahrung benötigten.

Man kann jedoch nicht generell sagen, dass “Testskripte” besser sind als “menschliche Tester”. Die Effektivität ist stets von der jeweiligen Software abhängig. Bei einem menschlichen Tester, der jeden Tag acht Stunden lang Regressionstests durchführt und alle paar Tage dieselben Tests wiederholen muss, wird man garantiert nach einiger Zeit eine gewisse Betriebsblindheit feststellen können. Als Mensch ist es ganz normal, ab und zu mal einen Fehler zu übersehen, besonders bei einer repetitiven Arbeitsweise.

Testskripte können jedoch auch Fehler enthalten und Testautomatisierungstools können Bugs besitzen. Zudem kann es vorkommen, dass bei einer Veränderung der Software nicht die notwendigen Korrekturen in der Testautomatisierung implementiert werden. In diesem Fall macht das Testskripte zwar noch seine Durchläufe, die Software wird jedoch nicht mehr vollständig geprüft. Dies kann dazu führen, dass Fehler in der Software verschleiert werden. Das Protokoll des Testskriptes würde diese Fehler also nicht anzeigen. Wenn Fehler nicht rechtzeitig entdeckt werden, kann dies Probleme in den späteren Phasen der Entwicklung verursachen. Diese Fehler hätte ein menschlicher Tester möglicherweise nicht übersehen. Ein Testskript prüft die Software eben nur anhand der vorgegebenen Parameter.

Ein Testautomatisierungsskript besitzt zudem natürlich keine eigene Intelligenz. Menschliche Tester können beim Testen von Software auf ihre bisherige Erfahrung zurückgreifen und haben somit die Möglichkeit, auch abseits des aktuellen Teststeps Fehler zu erkennen. Hier kommt man in den Bereich der explorativen und erfahrungsbasierten Tests.

Die Testautomatisierung sollte also niemals als genereller Ersatz für manuelles Testen verstanden werden. Sie trotzdem ein sehr hilfreiches Instrument für die Qualitätssicherung von Software und wird deswegen vor allem bei großen Software-Projekten, die eine komplexe Struktur besitzen, eingesetzt.

Automatisierte Tests sind eigene Softwareprojekte

Automatisierte Tests erhalten in vielen Software Unternehmen nicht genug Beachtung. Vielen Entwickler sind davon überzeugt, dass Testautomatisierung ganz einfach neben der eigentlichen Entwicklung stattfinden kann. Diese Mentalität kann besonders bei großen Softwareprojekten zu fatalen Folgen führen. Die Komplexität der Testautomatisierung ist nämlich oftmals schon nach kurzer Zeit so hoch, dass sie wie ein richtiges Softwareprojekt behandelt werden muss. So benötigt man beispielsweise eine spezielle Versionskontrolle, damit der Code der Testskripte sein eigenes Sourcecode-Repository besitzt, mit dem Änderungen an den Testskripten leicht nachvollzogen werden können.

Die Testautomatisierung muss definitiv in der Projektplanung der zu testenden Software berücksichtigt werden. Zudem benötigt man ein gewisses Budget für die Arbeitskräfte, die Testwerkzeuge und die Testumgebung. Idealerweise sollte man außerdem ein Bug-Tracking-Tool integrieren, sodass potenzielle Fehler in der Testautomatisierungs-Lösung gesammelt und behoben werden können.