Mehr Tempo, mehr Qualität durch Testautomatisierung
Um in Zeiten sich stetig verkürzender Release-Zyklen trotzdem eine hohe Qualität garantieren zu können, muss entsprechend auch in immer kürzeren Abständen getestet werden. Gleichzeitig erhöht sich durch die Erweiterung der Anwendung um neue Features auch die Menge an Code, der getestet werden muss. Es liegt auf der Hand, dass manuelles Testen hierbei irgendwann an seine Grenzen stößt. Die Lösung für dieses Problem lautet Testautomatisierung. So viele Vorteile eine automatische Testdurchführung auch verspricht, bei der Umsetzung können gleich mehrere Fallstricke lauern. Umso größere Bedeutung kommt daher der richtigen Strategie beim Vorgehen zu.

Marktsituation - Testautomatisierung
Die Softwareentwicklung der letzten Jahre war geprägt von einer ganzen Reihe von Entwicklungen in den unterschiedlichsten Bereichen. Ein zentrales Thema hierbei war die Beschleunigung der Geschwindigkeit, mit der neue Releases erstellt werden. Um diese Verkürzung der Release-Zyklen zu erreichen, wurden Konzepte wie CI/CD erdacht, wobei klarerweise der Automatisierung von Prozessen eine Schlüsselrolle zukommt. Getrieben durch diese Entwicklungen erhöht sich dementsprechend auch die Dringlichkeit, mit der bestehende Anwendungen modernisiert und moderne Konzepte und Technologien eingeführt werden, um im Wettbewerb nicht den Anschluss zu verlieren. Ebenso kann es vorkommen, dass im Rahmen der Digitalisierung zusätzliche Vorgaben seitens des Gesetzgebers zu erfüllen sind, was automatisch eine Anpassung der Anwendung nach sich zieht. Es gibt daher viele verschiedene Ursachen, die zu größeren Änderungen der Anwendung führen. Eine umso entscheidendere Bedeutung kommt dabei dem Testen zu, um sicherzustellen, dass auch nach den Änderungen die Anwendung fehlerfrei läuft. Es liegt jedoch auf der Hand, dass bei Einsatz moderner Konzepte wie CI/CD die bisherige Art zu testen nicht mehr ausreicht, sondern ebenfalls modifiziert werden muss. Oder mit anderen Worten: was benötigt wird, ist eine Testautomatisierung.
Herausforderungen - Testautomatisierung
Um genauer zu verstehen, wie das Testen verbessert werden kann und welchen Mehrwert eine Testautomatisierung bietet, ist es hilfreich, sich einen Überblick darüber zu verschaffen, welche Probleme bei der bisherigen Art zu testen auftreten können. Im Folgenden sind beispielhaft einige Probleme aufgeführt, die vor allem für den Testablauf älterer Anwendungen nicht untypisch sind:
- Auf der Ebene der Testdurchführung – Manuelles Testen:
Oftmals werden die Testfälle von Hand ausgeführt. Dies bindet einerseits Arbeitszeit, die sinnvoller eingesetzt werden kann. Andererseits ist ein Tester gezwungen immer wieder dieselben Schritte auszuführen, was zu einer größeren Fehleranfälligkeit führt. Darüber hinaus wird ausschließlich während der Arbeitszeit getestet, was letztendlich zu einer automatischen Obergrenze hinsichtlich der Testabdeckung führt. Letztlich muss man sich immer im Klaren darüber sein, dass das Testen selbst Bestandteil eines Entwicklungszyklus ist. Dies bedeutet jedoch auch, dass bei erfolgreicher Automatisierung aller übrigen Prozesse (->CI/CD) das manuelle Testen als Flaschenhals fungiert. - Auf der Ebene der Testfallerstellung – lineare Skripterstellung:
Speziell für den Fall, dass die Testdurchführung nicht ausschließlich manuell, sondern über Testskripte erfolgt, spielt der verwendete Testansatz eine große Rolle für eine effiziente und langfristig wartbare Testgestaltung. Ein oftmals intuitiv verwendeter Ansatz ist die sogenannte lineare Skripterstellung, bei der jeder Testfall sein eigenes Testskript erhält, und zwar auch dann, wenn sich die Testfälle nur sehr wenig voneinander unterscheiden. Auf diese Weise bleiben jedoch Gemeinsamkeiten zwischen Testfällen unberücksichtigt. Dies hat zur Folge, dass die Einarbeitung von Änderungen sehr lange dauern, da jedes Testskript separat angepasst werden muss. - Auf der Ebene der Testumgebung – schlechtes Design:
Das Testen größerer Anwendungen ist ein komplexer Prozess, bei dem oftmals mehrere Systeme und Tools integriert werden müssen. Ebenso evident ist die Tatsache, dass in der Regel der gesamte Testprozess aus einer Vielzahl an Testfällen besteht. Beides führt zu entsprechenden Anforderungen hinsichtlich der Organisation des Testens. Sollte diesen Anforderungen nicht in hinreichendem Maße Rechnung getragen werden – etwa weil jeder Tester seine eigenen Testfälle erstellt, ohne dass eine einheitliche Struktur beachtet wird – so führt dies schnell zu Problemen mit der Wartbarkeit. Langfristig werden nicht wartbare Testsysteme nicht mehr verstanden und somit auch nicht mehr benutzt. Im schlimmsten Fall muss dann das Testsystem noch einmal neuentwickelt werden. - Auf der Ebene der Testorganisation – spätes Testen:
Oftmals findet das Testen ganz zum Schluss statt. In der Regel führt dies jedoch dazu, dass die Behebung von Fehlern aufwendiger ist als dies in einem früheren Stadium der Fall gewesen wäre.
- Auf der Ebene der Testdurchführung – Manuelles Testen:
Lösung und Methodik
Um die oben erwähnten Probleme zu vermeiden, lohnt es sich also die Art des Testens in Richtung Testautomatisierung zu modernisieren. Ein Vorgehen bestehend aus folgenden Schritten hat sich dabei bewährt:
- Analyse: In diesem Schritt werden zunächst alle für die Umsetzung der Testautomatisierung benötigten Informationen über die Anwendung und die bestehende Art zu testen gesammelt. Da jede Anwendung einzigartig ist, hat dies natürlich auch Einfluss auf das Testen der Anwendung. Bei der Analyse muss es daher u.a. darum gehen, die kundenspezifischen Eigenheiten hinsichtlich des Testens herauszuarbeiten, um sich daraus ergebende Schwierigkeiten für die Umsetzung der Testautomatisierung frühzeitig zu erkennen. Wichtig dabei ist es, die gesamte Testsituation in den Blick zu nehmen, d.h. sowohl technische als auch nicht-technische Faktoren wie z.B. den optimalen Einsatz der zur Verfügung stehenden Tester. Ziel dieses Schrittes ist es, aus der Analyse eine Teststrategie zu formulieren, die den Rahmen für das weitere Vorgehen hinsichtlich der Testautomatisierung setzt.
- Testerstellung/Testmodifizierung: Es liegt auf der Hand, dass das Vorhandensein von Testskripten essenziell für die Testautomatisierung ist. Das Vorgehen in diesem Schritt wird daher maßgeblich von der Ausgangslage bestimmt. Bei einem Kunden, der noch über keinerlei Testskripte verfügt – etwa, weil bislang nur manuell getestet wurde – werden in diesem Schritt die Testskripte erstellt. Existieren andererseits bereits Testskripte, so geht es in diesem Schritt um eine Verbesserung der bestehenden Tests. Entscheidend hierfür ist die Wahl des für die Situation beim Kunden am besten geeigneten Testansatzes. Dies kann z.B. das schlüsselwortgetriebene Testen sein. Außer durch sein Knowhow unterstützt EasiRun diesen Prozess durch eine Reihe weiterer Tools z.B. durch ein Record-and-Replay Werkzeug für das Testen von Oberflächen.
- Testautomatisierung: In Schritt 2 wurden Testskripte erstellt, über die die einzelnen Testfälle ausgeführt werden, und somit eine notwendige Vorarbeit für eine Testautomatisierung geleistet. Eine vollständige Testautomatisierung ist jedoch noch nicht ganz erreicht, da die Testskripte immer noch manuell gestartet und ausgewertet werden müssen. In diesem Schritt geht es daher darum auch diese Arbeitsprozesse noch zu automatisieren, wobei EasiRun ein Testframework bereitstellt, das dies automatisch erledigt. Wichtig hierbei sind vor allem zwei Dinge:
- Automatisierung des Testdurchlaufs: Die Erwartung an eine vollständige Testautomatisierung besteht darin, dass Testfälle sowohl automatisch ausgeführt als auch ausgewertet werden. Am Ende soll es möglich sein, dass ein vollständiger Durchlauf aller Testfälle von selbst regelmäßig zu einer bestimmten Uhrzeit startet. Ebenso ist es sinnvoll, dass die Testautomatisierung in einer Weise erfolgt, die sich nahtlos in eine mögliche Automatisierung der übrigen Entwicklungsprozesse im Rahmen von CI/CD einfügt.
- Verwaltung der Testfälle: Die Automatisierung der Testdurchführung ist die eine Sache. Allerdings stehen die Ergebnisse der Tests ja gerade am Anfang weiterer Arbeiten, nämlich der Identifizierung von Fehlern im Code und deren Behebung. Damit dies auch langfristig auf einfache Weise möglich ist, muss das Testframework die Ergebnisse der Testausführung und Testauswertung in strukturierter Form darstellen, damit sich ein Nutzer leicht zurechtfindet. Dies ist von entscheidender Bedeutung, da ein vollständiger Testdurchlauf leicht über hundert Testfälle enthalten kann und die Zahl der Testfälle auf Grund der durch die Testautomatisierung gegebenen Möglichkeit, die Testabdeckung zu verbessern, tendenziell eher steigen wird.
Das Testframework berücksichtigt den ersten Punkt dadurch, dass es die Testskripte in eine Pipeline einbindet. Auf diese Weise kann zum einen die Uhrzeit, zu der der Testdurchlauf beginnen soll, eingestellt werden. Zum anderen besteht die Möglichkeit, bei Umsetzung von CI/CD die Pipeline in das Pipeline-System der übrigen Entwicklungsprozesse einzubinden. Der zweite Punkt wird durch ein klares Design des Testframeworks erfüllt, das einem eine Übersicht über die Testergebnisse aller Testfälle anbietet und für jeden Testfall eine schnelle Fehlerlokalisierung ermöglicht. Ebenso bietet das Testframework eine Testhistorie an, die einem erlaubt die Ergebnisse älterer Testdurchläufe – z.B. der Testdurchlauf des letzten Releases – einzusehen.
Warum EasiRun
EasiRun hat langjährige Kompetenzen in der Entwicklung und Umsetzung effizienter Teststrategien und unterstützt unsere Kunden mit kundenangepassten Lösungen entlang des gesamten Testautomatisierungsprozesses. Von der Analyse über die Testerstellung bis hin zur vollständigen Automatisierung stellen wir sicher, dass technische und organisatorische Anforderungen optimal berücksichtigt werden. Durch den gezielten Einsatz unserer Tools und Frameworks ermöglichen wir eine nahtlose Integration in bestehende Entwicklungsprozesse und schaffen damit einen nachhaltigen Mehrwert für unsere Kunden.