Agile Softwareentwicklung stellt nicht nur an die Entwicklungs- und Testteams spezielle Herausforderungen, sondern auch an die Testautomatisierung.
Foto: Anecon
Aufgrund der kurzen Entwicklungszyklen (Sprints), die teilweise nur zwei Wochen lang sind, ist ein umfassender Regressionstest absolut notwendig. Wird diese Maßnahme zur Qualitätssicherung nicht eingesetzt, läuft man Gefahr, dass neue Funktionen bereits bestehende Funktionen beeinflussen. Durch die permanente Entwicklung ist der Aufwand für einen umfassenden Regressionstest sehr hoch, und größtenteils aus zeitlichen und ressourcentechnischen Gründen nicht komplett manuell abdeckbar. Daher sollte bereits in der ersten Iteration mit dem Aufbau einer Regressionstestsuite begonnen werden, und schon zu diesem Zeitpunkt die Voraussetzungen für eine nachhaltige Testautomatisierung geschaffen werden.
Aufgrund des Einsatzes in agilen Softwareentwicklungsprojekten muss das Tool zwei wichtige Merkmale erfüllen:
- Die Automatisierung sollte sich robust gegenüber GUI Änderungen verhalten. Im Idealfall bietet das Werkzeug die Möglichkeit, die Suche nach Elementen an der Benutzeroberfläche selbst zu konfigurieren und somit Problemen bei GUI Änderungen aus dem Weg zu gehen.
- Das Werkzeug muss eine gute Integration in die Continuous Integration und Continuous Delivery bieten – seien es Schnittstellen oder eine komplette Integration des Werkzeuges selbst in eine ALM Suite. Das beste Automatisierungswerkzeug wird in einem agilen Projekt keinen Nutzen stiften, wenn die erzeugten Testfälle nicht in den Prozess der Continuous Integration und Delivery integriert werden können.
Agile Projekte bieten dem Testautomatisierer einen großen Vorteil: Er hat Zugang zum Sourcecode der Applikation. Dazu muss er jedoch Programmierkenntnisse aufweisen. Um die Automatisierungslösung nachhaltig auf stabile Beine zu stellen, muss vorab auch das verwendete GUI Framework analysiert und eine konzeptionelle Vorgehensweise für die Testautomatisierung definiert werden. Trotz der agilen Methode, oder eben deshalb, ist die Erstellung eines Testkonzepts für den gesamten Testprozess sowie ein Automatisierungskonzept empfehlenswert.
Praxiseinblicke.
Anecon unterstützt die HDI Versicherung bei der Umstellung des Bestandsführungssystems in AS400 auf eine State-of-the-art Microsoft.NET Umgebung. Die komplette Entwicklung des Systems erfolgt in der integrierten Entwicklungsumgebung Visual Studio / TFS 2012 mit C# und Microsoft SQL Server. Dabei steht die Flexibilität und Zukunftssicherheit sowohl der Systemumgebung als auch der Anwendung selbst im Vordergrund.
Microsoft bietet mit dem Coded UI Framework ein Automatisierungstool, das in die Entwicklungsumgebung Visual Studio integriert ist. Damit können UI-Aktionen aufgezeichnet und Werte verifiziert werden. Das Ergebnis einer Aufzeichnung ist eine sogenannte UIMap, welche eine grafische Darstellung des generierten Aufzeichnungscodes ist.
Die Testautomatisierung in diesem Projekt hat sich ebenso agil entwickelt, wie die Applikation an sich. Anfangs wurden die simplen Capture Replay-Funktionen des Coded UI Test Builders genutzt, um alle Usereingaben eines Testfalls aufzuzeichnen. Mit zunehmender Komplexität der Applikation wurde diese Methode unwartbar und es wurde auf den empfohlenen Ansatz der multiple UIMaps umgestellt.
Dabei repräsentiert eine UIMap eine Maske in der Applikation. Um die Verbindung zwischen den einzelnen UIMaps herzustellen, war ein durchaus beträchtlicher Programmieraufwand nötig. Auch diese Lösung stieß bald an die Grenzen der Wartbarkeit. Hauptproblem dabei ist, dass der generierte Code und die UIMaps bei manueller Nachbearbeitung nicht mehr synchronisiert werden und dadurch eine große Anzahl an „dead code“ und Inkonsistenzen entstehen.
Die Lösung, die seitens Anecon entwickelt wurde, basiert auf dem Microsoft UI Automa-tion Framework. Da diese Lösung aus purem C#-Code besteht, ist sie einfacher wartbar, unterliegt den strengen Regeln des Programmcodes und ist ein fixer Bestandteil der gesamten Projektstruktur.
Trotz der eigenen Lösung für die UI-Automatisierung kann ein erstellter Automatisierungscode mit wenigen Handgriffen zu einem Testfall verlinkt werden. Ist diese Verlinkung geschehen, steht der Integration in die Continuous Integration und Delivery nichts mehr im Wege. Durch die Verwendung des Team Foundation-Servers und dessen zentraler Verwaltung des Source-
codes, der Work Items, der Testumgebungen und der Deployment-Skripte kann die Continuous Integration und Delivery an einer Stelle zeitnah verwaltet und weiterentwickelt werden.