Gut kombiniert

Artikel von Holger Kaufmann

Kostengünstige Testautomatisierung von Geschäftsprozessen mit Open Source

Testautomatisierung gehört heute wie selbstverständlich zur Softwareentwicklung. Automatisiertes Testen spart Kosten und Aufwände, entschärft kritische Zeitpfade und liefert genauere, reproduzierbarere Ergebnisse als herkömmliche Softwaretests. Die Praxis hat gezeigt: Je früher automatisierte Tests in die Entwicklung mit einbezogen werden, desto größer ist ihr Nutzen. Scheuten viele Unternehmen bislang die initialen Kosten teurer Testsuites, so bietet sich den Entwicklern heute ein großes Angebot an Open-Source-Tools. Diese Werkzeuge decken jedoch meist nur einzelne Testaspekte ab oder bringen andere Einschränkungen wie Oberflächen, proprietäre Skriptsprache oder eine eigene Bedienphilosophie mit sich. Gleichzeitig sind in den komplexen Systemlandschaften moderner Unternehmen in der Regel mehrere miteinander vernetzte Anwendungen an der Abbildung eines Geschäftsprozesses beteiligt. Das von der viadee IT-Unternehmensberatung in Münster entwickelte viadee-Testframework (vTF) integriert eine Reihe von freien Tools und fasst diese in einer gemeinsamen Architektur und mit einer einheitlichen Ablaufsteuerung zusammen. So entsteht ein lizenzfreies und leistungsstarkes System zur Testautomatisierung auch über Anwendungsgrenzen hinaus. So ist das vTF in der Lage, für jeden Test das passende Werkzeug anzustoßen – auch über unterschiedliche Anwendungen hinweg. Die Ablaufsteuerung ist in Java realisiert, Komponenten und Oberflächen werden unter Verwendung unterschiedlicher Open-Source-Komponenten getestet. Hier existieren im vTF Testklassen für den Test von Web- sowie Windows-Clients. Das vTF erkennt das Bedienelement anhand einer als Template abgelegten Grafik mithilfe von AutoHotkey, und zwar unabhängig von der Position des Elements auf der Maske, seinem Bezeichner oder der zugrunde liegenden Implementierung.

Zur eigentlichen Durchführung von Testfällen liefert das vTF Skripte für Basisoperationen und stellt eine Möglichkeit bereit, diese Operationen in Testfällen zu verwenden. Die durchzuführenden Testfälle sind ebenfalls in Java realisiert. Dabei hat sich eine Drei-Schichten-Architektur bewährt. In der untersten Schicht wird die Basisfunktionalität des Frameworks vorgehalten. Die Domänen-Schicht in der Mitte enthält Funktionsbausteine, die in der Testfall-Schicht verwendet werden. Der Ablauf der Tests wird durch eine Tabelle gesteuert. Sofern das vTF feststellt, dass eine Aktion innerhalb eines Testablaufs nicht erfolgreich war, werden auch alle nachfolgenden Testfälle als nicht erfolgreich gekennzeichnet. Die ursächlich für das Fehlschlagen verantwortliche Aktion wird außerdem geordnet beendet, indem z. B. die zu testende Anwendung geschlossen wird. Dadurch wird sichergestellt, dass nachfolgende Tests erfolgreich durchgeführt werden können. Um Testläufe zu steuern, wird im vTF Maven verwendet. Unterstützung bei der Erzeugung von Berichten in Form von HTML-Seiten bieten JUnit Report bzw. NUnit.

Am Anfang jeder Testautomatisierung steht (wie auch bei manuellen Softwaretests) die Entwicklung von Testfällen auf Basis fachlicher Anforderungen. Sobald die ersten funktionsnahen Systemtests durchgeführt werden, können zuvor erstellte Testfälle im Rahmen von Regressionstests wieder herangezogen und so schließlich als für die Automatisierung geeignete Kandidaten identifiziert werden. Hat das System einen höheren Reifegrad erreicht, können die ausgewählten Testfälle nach und nach um detailliertes Wissen über die Bedienung der Anwendung und den fachlichen Ablauf ergänzt und somit für die Automatisierung vorbereitet werden. Geschäftsprozesse werden in modulare Aktionen heruntergebrochen, notwendige Varianzen durch Eingabeparameter abgedeckt. Für die Anreicherung der Testfälle mit implizitem Testerwissen sollte der Automatisierer eng mit dem Experten für die Fachlichkeit des Testobjektes zusammenarbeiten. Im ersten Schritt sollten Standardprozesse getestet werden, um die wesentlichen Kernfunktionalitäten des Systems zu überprüfen. Nach jedem Entwicklungsschritt des Testfalls wird dieser auf das erwartete Ergebnis hin überprüft und Fehler werden ggf. korrigiert. Einzelne Funktionen des Testfalles können unter Umständen im Skript anderer Testfälle wiederverwertet werden, die dann auch Sonderfälle und Spezialitäten entlang der wichtigsten Geschäftsprozesse abdecken.

Auch nichtfunktionale Tests lassen sich mit dem viadee-Testframework (vTF) realisieren: Durch die Einbindung von JUnit-Tests, z. B. im verbreiteten Lasttest-Tool JMeter, ist es möglich, mehrere Instanzen eines Anwendungsfensters aufzurufen und die Anwendungslast über eine Vervielfachung der Benutzeroberfläche zu erzeugen. Wenn dadurch kein aussagekräftiger Lasttest möglich sein sollte, so kann durch die Erweiterung des Ansatzes und den Aufruf mehrerer Oberflächeninstanzen ein gewisses „Grundrauschen“ in den Serverkomponenten einer Anwendung erzeugt werden. Dadurch wird z. B. die Aussagekraft der Tests von Reporting-Komponenten einer Anwendung erhöht. Weitere nichtfunktionale Tests wie z. B. Zuverlässigkeitstests lassen sich durch den vTF-Ansatz sehr einfach verfolgen, indem Testfälle in einer Schleife mit beliebiger Länge durchgeführt werden. Dabei sind auch Tests von Fehleingaben und die Umsetzung von Robustheitstests durch die Abwandlung von Testfällen möglich. Bei der Umsetzung dieser Tests ist zum einen darauf zu achten, dass mögliche Fehlersituationen erkannt werden und ein Test wenn nötig sinnvoll abgebrochen wird. Zum anderen sollte ein generelles Vorgehen bei unerwarteten Fehlern vorgesehen werden.

Das viadee-Testframework ist lizenzkostenfrei. Allerdings sind die Lizenzkosten nur ein kleiner Aspekt bei der Kosten-Nutzen-Bewertung von Test-Automatisierungsmaßnahmen. Die meisten Kosten verursachen die Umsetzung und Pflege der automatisierten Testfälle. Hier kann man durch gute Planung die Kosten in Grenzen halten. Mithilfe eines gut aufgebauten und strukturierten Testfallkatalogs und durch eine Priorisierung der Umsetzung nach Risikogesichtspunkten kann ein gutes Kosten-Nutzen-Verhältnis erreicht werden.

Die Umsetzung aktueller Methoden der Softwareentwicklung, wie z. B. einer Continuous-Integration-Strategie, ist ohne Testautomatisierung nicht denkbar. In Zukunft werden neben Windows- und Web-Anwendungen auch andere Plattformen eine größere Rolle spielen. Aktuell drängen sich hier gerade Betriebssysteme für mobile Plattformen in den Vordergrund. Auch für OS X, iOS, Android und Linux gibt es bereits vielversprechende Frameworks und Anwendungen, die Testautomatisierung ermöglichen. Das vorgestellte Testframework bietet durch seine plattformunabhängige Implementierung die Möglichkeit, diese Betriebssysteme zu integrieren und somit vorhandene Komponenten für die Parametrisierung, Testumsetzung und das Berichtswesen wiederzuverwenden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Kategorien

Recent Posts