Definition Testautomatisierung und Nutzen
Der Begriff Testautomatisierung lässt sich in zwei Wörter aufteilen; Test und Automatisierung. Es geht daher um das Automatisieren aller für einen Testablauf vorgegebenen Schritte oder Aktivitäten. Die Testautomatisierung lässt sich theoretisch für alle Arten von Tests anwenden. Es spielt dabei keine Rolle, ob es sich um Tests bezüglich Hardware oder Software handelt. Im Zusammenhang mit dem Thema ISTQB liegt hier der Fokus allerdings auf den Softwaretests.
Bereits im ISTQB – CTFL(Certified Tester Foundation Level) spielt das Thema Testautomatisierung eine kleine Rolle. Dort wird die Frage gestellt, warum es sinnvoll ist, Testaktivitäten zu automatisieren. Der Grund ist, speziell bei der Softwareentwicklung, offensichtlich. In kurzen Abständen kommen dort immer wieder neue Updates zu den Softwareständen. Damit die neuen Versionen genauso getestet werden müssen wie die vorherigen, ist es zweckmäßig das Testen möglichst zu automatisieren. Die Umsetzung erfolgt über verschiedene Tools zur Testautomatisierung. Meist in Form von Programmen, welche es erlauben die gewünschten Testumgebungen inklusive der einzelnen Testaktivitäten für die Software zu simulieren.
Vorteile
Die Testautomatisierung bietet viele Vorteile, hat aber auch Nachteile, welche stets bedacht werden müssen. Zu den größten Vorteilen zählt ohne Weiteres das schnellere Testen. Ist eine Automatisierung einmal erstellt und funktioniert, dann können sich wiederholende Test in minimaler Zeit durchgeführt werden. Dazu kommt, dass die Ergebnisse sehr konsistent sind. Das Programm führt immer den gleichen Test mit den gleichen Parametern durch. Die Fehler die ein Mensch im Test machen kann, werden eliminiert und die Testabdeckung wird im Regelfall ebenfalls verbessert. Dadurch werden Kosten, insbesondere der Fehlerbehebung stark reduziert. Auch die zum Testen verfügbaren Ressourcen können wirksamer genutzt werden.
Durch den automatischen Ablauf können die Tester sich um Testfälle kümmern, bei denen keine Automatisierung möglich ist, da eine menschliche Unterstützung zur Testdurchführung benötigt wird. Somit ergibt sich eine große Flexibilität hinsichtlich der Zeitplanung zum Testen.
Nachteile
Allerdings gibt es bei der Testautomatisierung auch Nachteile. Ganz klar ist dabei der Initiale Aufwand an Geldern und Zeit zur Erstellung einer geeigneten Automatisierung zum Ausführen der entsprechenden Testaktivitäten. Es muss analysiert werden in welcher Umgebung seitens Entwicklung und Testing die Automatisierung stattfinden wird. Des Weiteren muss die Frage der benötigten Tools geklärt werden sowie der Einrichtung und Wartung. Selbstverständlich spart eine Automatisierung auf lange sich Kosten, aber hat einen nicht zu unterschätzenden Initialaufwand.
Ein weiterer Nachteil ist, dass eine Testautomatisierung nicht einfach nebenbei aufgebaut und angepasst werden kann. Für verschiedene Zwecke gibt es verschiedene Werkzeuge bzw. Programme. Daher sind Spezialisten von Nöten, die eine entsprechende Automatisierung, angepasst an die Bedürfnisse, einrichten sowie warten. Des Weiteren erhöht sich dadurch die Komplexität des Projekts. Schulungen für die Fachkräfte müssen eingeplant und die Organisationsstruktur muss adaptiert werden. Außerdem darf der Terminplan und das Ziel des Projekts nicht aus den Augen verloren werden. Immerhin soll die Automatisierung beim Erreich des Ziels helfen, anstatt es zu behindern. Ein Ablenken der Tester und Entwickler von ihren eigentlichen Aufgaben darf unter keinen Umständen hervorgerufen werden.
Neben den Vorzügen der Testautomatisierung, muss auch abgewogen werden, ob sich diese für den Testaufwand und die testziele lohnt, da nicht alle Tests automatisiert werden können. Dazu zählt zum Beispiel exploratives Testen, da eine Automatisierung Spezifikationen und Vorgaben braucht. Daher muss zuvor immer evaluiert werden, ob der Initialaufwand dem Nutzen über die Zeit sowie den Kosten gerecht wird. Eine Testautomatisierung macht nicht pauschal jegliches Testen besser.
Goldene Regeln
Um eine Testautomatisierung erfolgreich einzuführen und zu leben, gibt es sechs sogenannte „goldene Regeln“ von Wilson Campero, welcher ein Spezialist für Softwaretesting ist. Diese können als Gedankenanstöße gewertet werden. Wie oben angedeutet, hilft eine Testautomatisierung niemanden, wenn diese nur eingeführt wird. Dahinter stecken weitere Faktoren, wie die Eihaltung von Prozessen oder das Beachten von wichtigen sowie kritischen Themen. Auch eine entsprechende Vorbereitung darf niemals fehlen. Nur so kann eine Automatisierung auch für ihren Zweck, zum Einsparen von Zeit und Kosten mit gleichzeitiger Sicherung von Qualität, verwendet werden.
Die erste Thematik ist die Testbarkeit. Hierbei sollte die Frage beantwortet werden, ob eine Testautomatisierung überhaupt möglich ist. Bei der Entwicklung von Software steht die Funktionalität als Ziel im Vordergrund und nicht eine Kompatibilität zum automatisierten Testablauf. Unter Umständen kann das Testobjekt aber auch für eine Automatisierung angepasst werden. Wichtig ist dabei allerdings, dass wenn die Möglichkeit zum automatisierten Testen vorhanden ist, diese nicht durch zukünftige Updates eliminiert wird.
Zweite Regel bildet die Testarchitektur. Dabei gilt es anhand der Teststufen zu überlegen, wo automatisieren möchte. Auf der Komponenten- oder Integrationsebene machen Testautomatisierungen den meisten Sinn. Für die Komponententests müssen die einzelnen Komponenten immer wieder auf die gleiche Art und Weise getestet werden. Beim Integrationstest können Schnittstellen automatisiert angesteuert werden. Im Falle des Systemtests lohnt sich die Automatisierung für die Regressionstests, wenn absehbar ist, dass diese öfter durchgeführt werden müssen, wie zum Beispiel bei agilen Projekten. Nicht-funktionale Tests sind ebenfalls sehr gut geeignet.
Änderungen an Testobjekt sowie Umgebung sind der dritte Aspekt, den es zu bedenken gilt. Für einen Test können sich über den Entwicklungsprozess verschiedene Parameter ändern. Das Testobjekt, die Software, selbst wird immer weiterentwickelt, bekommt neue Features oder es werden Fehler behoben. Ebenso kann sich die Testumgebung ändern indem neuen Versionen von Applikationen, Verlinkungen, Nutzer- oder auch Serverdaten ändern können. Diese Änderungen sollten bereits vorher bedacht werden, um einer Aufwändigen Anpassung der Testautomatisierung gegenzusteuern bzw. entsprechende Schritte einplanen zu können. Daten, welche für die verschiedenen Tests relevant sind, sollten separat in einer Datenbank gespeichert werden. Das erleichtert die Aktualisierung und Verwaltung der Testdaten enorm. Des Weiteren ist es von großer Hilfe Richtlinien für die Programmierung der Software einzuführen sowie einzuhalten. Das macht auf lange Sicht sowohl das Gestalten einer Automatisierung als auch eine Fehlersuche erheblich einfacher.
An vierter Stelle kommt das Reporting. Ein Reporter ist in jeglicher Hinsicht ein Muss, um überprüfen zu können, ob die gewünschte Qualität des Testens passt. Dabei soll auf Metriken sowie Daten zurückgegriffen werden, damit die Funktionalität der Testautomatisierung anhand eines Berichts, welcher auf diesen Daten beruht, ausgewertet werden kann. Auch das sollte vor Einführung der Testautomatisierung bereits thematisiert und vorbereitet werden.
Die fünfte Regel ist der sogenannte Proof of Concept (PoC). Es Gibt auch hier nicht das „eine“ Werkzeug, welche alle Tests austomatisiert ablaufen lässt. Je nach Teststufe und Anforderungen müssen Testabläufe individuell geplant werden. Mit dem PoC soll gezeigt werden, ob für den angedachten Testprozess unter den gestellten Anforderungen eine Automatisierung möglich ist. Der PoC stellt dabei einen eigenen Meilenstein im Entwicklungsprozess da.
Die letzte Regel beschäftigt sich mit der Einführung einer neuen Rolle ins Projekt; den Test Automation Engineer. Dieser verfügt über fundamentiertes Wissen sowohl aus dem Testing als auch aus der Softwareentwicklung, welches er auch dringend benötigt. Nicht nur, dass er Testfälle entwerfen und ein Verständnis für das Testen braucht; er benötigt genauso das Wissen der Softwareentwicklung, um eine ausgereifte Testautomatisierung für die spezifizierten Anforderungen entwickeln zu können.
Fazit
Es wird deutlich aufgezeigt, dass hinter einer Testautomatisierung ein hoher initialer Aufwand an Überlegungen, Zeit und auch Kosten steckt. Es müssen zusätzliche Überlegungen getroffen werden, um eine weitere Instanz ins Projekt einzubringen. Darin enthalten ist eine parallele Software- und Testentwicklung sowie die Schulung und Einarbeitung weiterer Spezialisten, welche unter Umständen keinen direkten Bezug zum eigentlichen Produkt haben. Ist dieser Initialaufwand allerdings erfolgreich, dann können ein großer Kosten- sowie Zeitaufwand für sowohl das Testen als auch die Wartung, sprich Wartung- und Regressionstest, eingespart werden. Das heißt, es kann bessere Qualität bei geringeren Kosten geliefert werden.
Quellen:
- https://www.qytera.de/blog/testautomatisierung-tipps-goldene-regeln
- https://www.redbots.de/blog/vorteile-nachteile-testautomatisierung/
Auf einen Blick:
Was versteht man unter Testautomatisierung?
Der Begriff Testautomatisierung lässt sich in zwei Wörter aufteilen; Test und Automatisierung. Es geht daher um das Automatisieren aller für einen Testablauf vorgegebenen Schritte oder Aktivitäten. Die Testautomatisierung lässt sich theoretisch für alle Arten von Tests anwenden.
Was sind die Vorteile von Testautomatisierung?
Welche Nachteile hat die Testautomatisierung?
Was sind die Goldenen Regeln der Testautomatisierung?
Um eine Testautomatisierung erfolgreich einzuführen und zu leben, gibt es sechs sogenannte „goldene Regeln“ von Wilson Campero:
- Testbarkeit
- Testarchitektur
- Änderungen an Testobjekt sowie Umgebung
- Reporting
- Proof of Concept (PoC)
- Einführung einer neuen Rolle ins Projekt: Test Automation Engineer