Wie viel darf Testautomatisierung kosten? Was könnten wir sparen, wenn wir Testautomatisierung systematisch einführen würden und wie lange wird es dauern, bis der Return on Investment „ROI“ erreicht wird? Die Beantwortung dieser Fragen ist wichtig um eine fundierte Entscheidung für oder gegen eine Einführung von Testautomatisierung zu treffen.
Zu beachten gilt, dass mit der Einführung automatisierter Tests nicht einzig die Einsparung von Test-Ressourcen im Vordergrund steht, sondern auch die Möglichkeit, in der gleichen Zeit eine wesentlich höhere Test-Abdeckung zu erzielen, somit die Software-Qualität zu verbessern und kürzere Entwicklungszyklen zu erreichen.
Nun möchte ich erklären, wieso Testautomatisierung wichtig ist. Und auch warum sie in naher Zukunft, Stichwort DevOps und Digitalisierung, immer wichtiger wird. In diesem Kontext spielen vor allem die Beherrschung der Automatisierungskosten eine zentrale Rolle.
Automatisierung und DevOps
Automatisierung ist heute kaum mehr wegzudenken und geniesst einen immer höheren Stellenwert - unabhängig davon, ob man sich in einem agilen oder eher traditionell orientierten Umfeld bewegt.
In der agilen Welt setzen viele Software-Hersteller nicht nur auf die Automatisierung von Regressionstests, sondern auch auf die Integration der Tests in die Continuous Integration (CI). Diese beinhaltet dann Testfälle auf der GUI-, Komponenten- und/oder Schnittstellen-Ebene.
Durch diesen Umstand hält die Testautomatisierung auch im DevOps Einzug, wo der Betrieb (Ops) vor einem Wandel stehen. Dieser ist nicht mehr nur für den Aufbau und die Pflege der (Test-) Infrastruktur zuständig, dem klassischen System Engineering Team, sondern auch für den Aufbau, die Erweiterung und Integration der automatisierten Tests, und somit für das „Continuous Testing“.
Continuous Testing
Automatisierte Tests, die in der CI integriert sind, geben zeitnah Auskunft über den Qualitätszustand der Software. Die Tests, sowohl auf GUI-Ebene als auch auf Komponenten- und/oder Schnittstellen-Ebene, laufen nicht nur automatisch (z. B. nachts), sondern sind in einem komplett automatisierten Build-Prozess eingebettet. Allfällige unerwünschte Nebeneffekte nach einer Softwareanpassung werden unmittelbar nach der Änderung sichtbar. Täglich erhalten die Entwickler und weitere beteiligte Mitarbeiter (Tester, Business-Analysten, Requirements-Engineers, Manager) den Qualitätszustand der letzten Änderungen, was sich direkt auf die Time-To-Market auswirkt. Somit können in kürzeren Intervallen stabilere Releases freigegeben oder ausgeliefert werden.
Automatisierungskosten
Ein in der Praxis verbreitetes Phänomen ist die Ansicht, dass Testautomatisierung so nebenbei eingeführt werden kann, ohne dass man sich über deren Nutzen und die tatsächlichen Kosten Gedanken macht. So manches Testautomatisierungsprojekt, das so nebenbei eingeführt wurde, ist zum Scheitern verurteilt, da zu spät erkannt wurde, was alles für die Testautomatisierung benötigt wird. Oftmals fehlt auch die notwendige Unterstützung seitens Management, weil es sich als schwierig erweist einen direkten Return of Investment (ROI) zu ermitteln. Durch die mangelnde Unterstützung, ist man auch eher nicht bereit anfallende Pflege- und Wartungskosten zu tragen. Dies führt in der Regel zu einem schleichenden Tod der bestehenden automatisierten Testskripte.
Testpyramide
Leider wird bei der Testautomatisierung oft zu viel Gewicht auf das GUI gelegt. Um eine ausgewogene Testautomatisierung zu ermöglichen, ist es aber wichtig, die verschiedenen Automatisierungsebenen zu berücksichtigen. Die Test- oder Automatisierungspyramide gibt dazu eine klare visuelle Übersicht.
Für eine valide Automatisierungsstrategie müssen alle Ebenen bezüglich Automatisierung berücksichtigt werden, wobei der grösste Teil der Automatisierung auf den untersten Ebenen stattfinden soll. Auf der GUI-Ebene hingegen soll so wenig wie möglich automatisiert werden. Bei GUI-Änderungen, besteht die Gefahr, dass der Wartungsaufwand der automatisierten Testskripts sehr hoch ist. Nebst dem Wartungsaufwand sind die Tests auf der GUI-Ebene auch sehr zeitintensiv. Dennoch sollte auch auf dieser Ebene ein gewisser Anteil der Testfälle automatisiert werden:
- Auf dieser Ebene ist es möglich E2E Abläufe aus Kundensicht zu testen.
- Auf diese Ebene ist die Kundensicht und damit die Business-Relevanz sehr hoch, was dazu beiträgt, dass gewisse Testfälle, die nicht auf den unteren Ebenen automatisiert werden können, auf diese Ebene automatisiert werden müssen.
Tooleinsatz
Der stetige Technologiewandel hat in den letzten 20 Jahren dazu geführt, dass die Anzahl der Testtool-Anbieter enorm gewachsen ist, und zwar nicht nur von kommerziellen Anbietern, sondern auch im Open-Source-Bereich. Obwohl letztere kostenlos verwendet werden dürfen, sollte der Aufwand für die Integration in eine komplexe bereits bestehende IT-Infrastruktur nicht unterschätzt werden.
Diese Umstände haben die Evaluation der geeigneten Tools in einem Unternehmen eher schwieriger als einfacher gemacht.
Unabhängig von der Wahl des Testtools ist es ratsam, zusätzlich in die Entwicklung eines Test-Frameworks zu investieren. Viele Toolhersteller betonen in ihrem Leistungskatalog immer noch gerne, wie einfach man Skripte aufzeichnen und abspielen kann. Skripte, die ausschliesslich mittels Capture/Replay entstehen, sind jedoch fragil und kurzlebig. Ohne stabiles Framework können kleinste Änderungen in der zu testenden Software dazu führen, dass viele redundante Korrekturen in den Testskripten nötig werden. Durch die Implementierung einer eigenen einfachen Fachsprache, anhand von Schlüsselwörtern (Key Word Driven Automatisierung) ist man der Lage die technischen Details des Roboters zu verbergen. Dies erlaubt es auch weniger technisch versierten Testern ohne die benötigten Programmierkenntnisse, Testskripte zu entwickeln.
Manchmal ist auch ein Umdenken bei den Software-Entwicklern notwendig, wenn es um die Testbarkeit von einigen Funktionen geht. Sei es die Bereitstellung von zusätzlichen Funktionen (z.B. Schnittstellen), die eine effizientere Überprüfung ermöglichen oder auch Investitionen in die vereinfachte Objekterkennung.
Als letzter Punkt zu erwähnen wäre, das Automatisierungstools oftmals Mühe haben mit der Erkennung von GUI-Objekten von Drittherstellern. Wer den Einsatz solcher Komponenten plant, sollte sich vorab mit der Testautomatisierungsabteilung absprechen. Tut man dies nicht, läuft man Gefahr, dass sich diese Komponenten später nicht oder nur mit erheblichem Mehraufwand automatisieren lassen.
Software Test-Automatisierung?
Testautomatisierung trägt dazu bei, dass die Qualität des Software-Tests und damit auch die Software-Qualität selbst spürbar gesteigert werden kann. Dadurch, dass die Testresultate schnell zur Verfügung stehen, werden kürzere Release Zyklen möglich. Aber, Automatisierung bekommt man nicht umsonst. Man muss nicht nur in ein Tool, sondern auch in eine effiziente und effektive Automatisierungsumgebung investieren.
Wann und wann jetzt keine Test Automatisierung eingesetzt werden soll und Sinn macht hängt von vielen Faktoren ab. Auch an den jeweiligen Szenarien. Wenn Sie sich dazu informieren wollen, zögern Sie nicht uns zu kontaktieren!