Agile / Software-Test / Testautomatisierung

Testautomatisierung in agilen Projekten – die Herausforderungen

Besonders in agilen Projekten erhält die Testautomatisierung im Bereich des Systemtest immer größere Bedeutung. Dabei sind es nicht mehr nur technische Herausforderungen, sondern immer mehr auch methodische und konzeptionelle Aspekte sowie Transparenz und Nachhaltigkeit im erweiterten Softwarelebenszyklus. Microsoft bietet mit dem Coded UI Testframework die Möglichkeit, automatisierte UI Tests direkt in Visual Studio zu erstellen.

Testautomatisierung in agilen Projekten

Beim ANECON & Microsoft Praxisupdate 2014 am 27. Februar zeigte ich in meinem Vortrag Best Practices und Herausforderungen des Coded UI Testframeworks und die Integration der automatisierten Tests in Continuous Integration und Delivery anhand eines laufenden Projekts.

 

Herausforderungen

Agile Softwareentwicklung stellt nicht nur an die Entwicklungs– und Testteams spezielle Herausforderungen, sondern auch an die Testautomatisierung, die verwendeten Tools und den Testautomatisierer an sich. Im Folgenden möchte ich diese speziellen Herausforderungen an Tools und an den Testautomatisierer genauer beschreiben und einen Einblick in die Testautomatisierung mit Microsoft Coded UI in einem laufenden Projekt gewähren.

 

Will man ein Testautomatisierungswerkzeug in einem agilen Projekt einsetzen, muss dies zwei wichtige Merkmale erfüllen.

  • Erstens sollte sich die Automatisierung an sich  robust gegenüber GUI Änderungen verhalten, was besonders in agilen Projekten durchaus oft während eines Sprints vorkommt. 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.
  • Zweitens muss das Werkzeug 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.

 

Was sind nun die speziellen Anforderungen an den Testautomatisierer?

  • Programmiererfahung
  • Analytische Fähigkeiten
  • Konzeptionelle Vorgehensweise

Agile Projekte bieten dem Testautomatisierer einen großen Vorteil: Man hat Zugang zum Sourcecode der Applikation. Dadurch erschließen sich unzählige Möglichkeiten, eine gute Basis für eine nachhaltig stabile und erfolgreiche Automatisierung zu schaffen. Dazu muss der Testautomatisierer 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 Automatisierung definiert werden. Trotz der agilen Vorgehensweise, oder eben deshalb, ist die Erstellung eines Testkonzepts über den gesamten Testprozess im Projekt und ein Automatisierungskonzept für die Testautomatisierung sehr empfehlenswert.

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.

 

Praxiseinblick

Die Testautomatisierung in diesem aktuellen Kundenprojekt 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 straight forward 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. Leider stieß auch diese Lösung 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 meine Kollegen und ich dann dafür entwickelten, war eine selbst programmierte Lösung, basierend auf dem Microsoft UI Automation 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 einfachen 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.

 

In einem meiner nächsten Beiträge werde ich mehr in die technische Materie der Testautomatisierung eintauchen. Bis dahin können Sie hier gerne auch die Slides downloaden zu meinem Vortrag „Real Life Automation“ beim ANECON & Microsoft Praxisupdate am 27.02.2014 rund um Testautomatisierung in agilen Projekten.

Passende Artikel

Kommentare gesperrt.