Moderne Internet-Technologien haben heute längst in nahezu allen Bereichen des Wirtschaftslebens Einzug gehalten. Mit ihrer wachsenden Verbreitung und kontinuierlichen Verbesserung geht die Entwicklung einher, dass bestehende Geschäftsprozesse „Internet enabled“ werden oder sogar gänzlich neue Geschäftsfelder im Umfeld von Webanwendungen entstehen. Denn viele dieser Lösungen bieten Funktionalitäten, die mit herkömmlichen Desktopapplikationen nicht möglich wären. Allerdings gilt es bei der Erstellung und Weiterentwicklung von Webanwendungen zum einen die Kenngrößen von „ROI“ und „time to market“ zu berücksichtigen, zum andern müssen sowohl kundenbezogene als auch die eigenen Qualitätsansprüche gewährleistet werden. Die optimale Balance zwischen diesen Anforderungen zu erreichen, ist der Schlüssel zum Erfolg. Um hierbei nichts dem Zufall zu überlassen, stehen effiziente Testverfahren mit entsprechend effizienten Testinstrumenten zur Verfügung. Denn insbesondere zum Zwecke der Qualitätssicherung ist das intensive Testen der jeweiligen Anwendung unverzichtbar – und dies bedeutet in der Regel einen zusätzlichen finanziellen und zeitlichen Aufwand. Das Software- und Systemhaus itCampus hat nun mit „web2test“ ein neues Testwerkzeug entwickelt und auf den Markt gebracht, das alle Anforderungen erfüllt, die das Testen moderner Webapplikationen mit sich bringt und zugleich erheblich dazu beiträgt, den Aufwand für die Erstellung und Pflege der Tests zu minimieren. Die neue Testsoftware steht ab sofort unter web2test zum Download zur Verfügung.
Vor dem eigentlichen Test muss zunächst eine entscheidende Frage geklärt werden: Will ich manuell oder automatisiert testen? Aufgrund der stetig steigenden Komplexität von Webanwendungen ist manuelles Testen – wenn überhaupt – nur noch mit großem zeitlichem und personellem Aufwand möglich. Moderne Webanwendungen zeichnen sich durch eine Vielzahl von Elementen und Interaktionsmöglichkeiten innerhalb der Benutzeroberfläche aus, die allesamt im Test einbezogen und überprüft werden müssen. Zu dem allgemein hohen Testaufwand kommt hinzu, dass besonders umfangreiche Benutzeroberflächen mit vielen GUI-Elementen im manuellen Verfahren schnell auch das Testpersonal an ihre Grenzen bringen. So müssen z. B. gleiche oder ähnliche Daten per Hand in hunderte Eingabemasken eingegeben werden – eine Situation, die zwar volle Konzentration erfordert, aber kaum eine intellektuelle Herausforderung darstellt und schnell dazu führen kann, dass die Arbeit mit abnehmender Motivation nur noch nachlässig ausgeführt wird. Deshalb verwundert es nicht, dass mit Hilfe manueller Tests in der Praxis häufig nur sporadisch bestimmte Teilbereiche überprüft oder – im ungünstigsten Fall – gar keine Tests durchgeführt werden.
Als bessere Alternative empfehlen sich automatisierte Testverfahren. Bei dieser Variante werden mit Hilfe einer Software Testskripte erstellt, die sich im Anschluss automatisch abspielen lassen. Das reduziert den Zeit- und Personaleinsatz und vermeidet, dass sich triviale Arbeitsabläufe ständig wiederholen. Außerdem lassen sich Tests auf diese Weise ohne großen zusätzlichen Aufwand gleich mehrfach durchführen.
Trotz dieser Vorteile, die eindeutig für eine Testautomatisierung sprechen, wird ein Großteil der Webanwendungen noch immer manuell getestet. Die Frage nach dem Warum lässt sich mit den Besonderheiten moderner webbasierter Softwaresysteme beantworten: Viele automatisierte Verfahren scheitern entweder an dynamischen Inhalten, die bei der Verwendung von Ajax heutzutage fast schon zur Regel geworden sind, oder sie verursachen einen viel zu hohen Pflegeaufwand, weil Layout-Änderungen oder unterschiedliche Plattform-/Browserkombinationen ständige Anpassungen an den bereits erstellten Testskripten notwendig machen.
Beim automatisierten Testen kommen verschiedene Ansätze in Betracht – je nachdem, was und in welchem Umfang getestet werden soll. Geht es ausschließlich um eine simple Überprüfung der Geometrie oder der im Browser dargestellten Web-Inhalte, kommen in der Praxis zumeist Werkzeuge zum Einsatz, die Screenshots miteinander vergleichen. Das Problem dabei ist allerdings, dass diese Tests statisch sind. Ändert sich das Layout der Webseite im Vergleich zum Status der Inhaltsseite zum Zeitpunkt der Aufnahme, schlagen die Tests sofort fehl. Ein einziger geänderter Wert in einer Zeile einer Tabelle ist dafür schon ausreichend. Um dies zu vermeiden, müssen alle Vorbedingungen genau abgebildet und vor dem Test entsprechend sichergestellt werden – und dies erweist sich häufig als äußerst aufwendig.
Neben Layout-Änderungen lässt sich aber auch die komplette Funktionalität von Webseiten, Portalen und webbasierten Applikationen überprüfen. Wer automatisierte funktionale Testen von Webanwendungen durchführen und dabei keine speziellen Modifikationen am Testsystem vornehmen möchte, hat folgende Möglichkeiten:

Abbildung 1: zeitliche Einordnung manueller und automatischer Tests mit und ohne web2test in den Entwicklungsprozess
Bei der neuen von itCampus entwickelten Testsoftware web2test wird per Capture & Replay das GUI der Anwendung getestet. Warum? Weil mit diesem Ansatz die Funktionalität auf Ebene der Anwendungsoberfläche überprüft werden kann – im Gegensatz zu HTTP-Unit-Tests und zu HTTP-Request/Response, die beide unterhalb der Präsentationsschicht auf Übertragungsebene ansetzen. So kann auch das Verhalten der Oberfläche mit berücksichtigt werden und es sind sowohl funktionale Tests als auch Layout-Überprüfungen problemlos möglich.
Außerdem werden bei web2test alle Nutzerinteraktionen komponentenbezogen aufgenommen. Damit werden mögliche Events vorgebeugt, die unbeabsichtigt vom Betriebssystem oder von anderen Anwendungen abgefangen werden können – wie etwa ein Mausklick auf eine feste Position des Bildschirms. Denn solche Events behindern nicht nur den Test, sie können auch zu unerwünschten Reaktionen dieser Anwendungen führen.
Die Verbindung aus komponentenbezogener Aufnahme und dem Abspielen auf Ebene der Anwendungsoberfläche sorgt für eine reale Nutzersimulation des Testwerkzeuges. Und sie stellt die bislang einzige Möglichkeit dar, um eine 100%-ige Unterstützung von Ajax/dynamischem HTML (DHTML) sicherzustellen. Was das Testen von Ajax und dynamischen HTML (DHTML) allgemein so problematisch macht: durch beide Techniken kann nur ein Teilbereich einer Webseite neu geladen oder gar die Oberfläche dynamisch verändert werden. Da diese Änderungen erst nach Ankunft des HTML-Dokumentes im Browser umgesetzt werden, lassen sich solche Anpassungen auch erst nach Fertigstellung der Seite im Browser testen – und genau das ist bei der realen Nutzersimulation der Fall.
Um Nutzerinteraktionen komponentenbezogen aufnehmen zu können, müssen die Komponenten jedoch auch eindeutig identifiziert werden. Die meisten Werkzeuge nutzen hierfür entweder die starren Strukturinformationen der HTML-Dokumente oder eindeutig vergebene Namen bzw. IDs. Beide Herangehensweisen stoßen jedoch bei Anwendungen, die Ajax oder DHTML nutzen, schnell an ihre Grenzen. Grund: Eine dynamische Anpassung der Oberfläche führt auch zu einer Veränderung der Struktur, zudem werden die Namen und IDs in Verbindung mit diesen Techniken häufig ebenfalls dynamisch vergeben. Anders bei web2test: In die itCampus-Testsoftware wurden verschiedene Heuristiken integriert, die auch in diesen Fällen eine intelligente Wiederauffindung von Komponenten ermöglichen. Die Algorithmen berücksichtigen dabei sowohl die hierarchische Struktur des GUI als auch alle verfügbaren Informationen zu den Komponenten (z. B. Titel oder Beschriftungen) und nicht zuletzt auch die Geometrie der Komponenten.
Ebenfalls in diesem Zusammenhang von Bedeutung: die Sichtbarkeit der darzustellenden Elemente. Werden bei funktionalen Tests alle im Browser darstellbaren Elemente einer Webseite betrachtet, lässt sich nur schwer überprüfen, ob Nutzeraktionen während eines bestimmten Zustandes der Webseite überhaupt möglich oder zulässig sind. web2test verfügt dagegen über zahlreiche Algorithmen, die die Informationen über die Sichtbarkeit jedes Elementes exakt auswerten.
Die intelligente Wiederauffindung von Komponenten löst aber neben den genannten auch noch ein weiteres Problem: der im Vergleich zu manuellen Verfahren späte Testbeginn (Vgl. Abbildung 1). Trotz aller bekannten Vorteile ist dieser Einwand häufig das schlagende Argument, sich gegen das automatisierte Testen zu entscheiden. Und er war bislang durchaus berechtigt, musste doch zuerst das Layout der Webanwendung vollständig abgeschlossen sein, bevor man mit dem Erstellen der Testskripte beginnen konnte.
Mit web2test können diese Einwände weitgehend kompensiert werden. Denn dank der verschiedenen Heuristiken zur Wiederauffindung von Komponenten sind Testskripte, die mit web2test erstellt wurden, tolerant gegenüber Layout-Änderungen. Der Anwender hat damit die Möglichkeit, bereits vor Vollendung des Layouts mit dem Erstellen der Testskripte zu beginnen. Dies führt bei gleichbleibender Qualität zu einer Verkürzung des Projektzeitraumes (Vgl. Abbildung 1). Mit diesem Feature verfügt web2test über einen besonderen Mehrwert, der dem wachsenden Bedürfnis nach einem möglichst frühen Markteintritt Rechnung trägt. Oder anders ausgedrückt: Auch der Zeitpunkt der Fertigstellung kann über den Erfolg oder Misserfolg eines Projektes entscheiden. Und je höher der Zeitgewinn, umso größer auch die Kostenersparnis.
Ein weiterer Aspekt, der für das automatisierte funktionale Testen mit web2test spricht: Testskripte sind deutlich robuster, wenn sie gegenüber Layout-Änderungen tolerant sind. Werden zu einem späteren Zeitpunkt Änderungen am GUI vorgenommen, lassen sich die Tests – oder mindestens Teile davon – wiederverwenden. Somit entfällt der bisherige Hauptkritikpunkt am Capture & Replay-Ansatz, der besagte, dass Tests nach Layout-Änderungen neu aufgenommen werden müssen (Vgl. Abbildung 2). Dank web2test ist dies nicht mehr notwendig.

Abbildung 2: Konventionelles CR-basiertes Testverfahren (Grafik entnommen aus C. Sensler, M. Kunz, P. Schnell Testautomatisierung mit modellgetriebener Testskript-Entwicklung; (http://www.sigs.de/publications/os/2006/03/kunz_sensler_OS_03_06.pdf zuletzt abgerufen am 04.09.2008)
Ein weiteres Problem beim GUI-bezogenen funktionalen Testen von Webanwendungen sind verschiedenste Browser- und Plattformunterschiede. So gibt es beispielsweise bekannte Probleme des IE6 bei der Darstellung von transparenten PNGs; IE7/IE8 kann unter Windows XP die Inhalte optional mit ClearType rendern und unter Windows Vista lässt sich ClearType sowohl lokal im Browser als auch global für das Betriebssystem konfigurieren. Aber auch bei identischen Randbedingungen auf verschiedenen Windowsversionen werden Inhalte z. T. verschieden umgesetzt. In einigen Fällen kommt es sogar zu leichten Abweichungen bei der Geometrie.
Testet man weiter in die Breite und verwendet neben dem Internet Explorer andere Browser wie z. B. Firefox oder SeaMonkey, kommen zu den betriebssystembedingten Unterschieden auch noch Rendering-Unterschiede zwischen den einzelnen Browsern hinzu. Verstärkt werden diese Abweichungen, wenn invalides HTML verwendet wurde – was aus Sicht des Anwenders kein Problem darstellt, solange die Inhalte ohne Fehlermeldung dargestellt werden können.
Es muss also jede Browser-/Plattformkombination überprüft werden, um Rendering-Unterschiede und daraus resultierende Fehlfunktionen der Webanwendung ausschließen zu können. Für das automatisierte Testen bedeutet dies, dass theoretisch für jede dieser Kombinationen eine eigene Testsuite angelegt werden muss. Um diesen Mehraufwand zu vermeiden, verfolgt web2test neben der Unterstützung einer Vielzahl von Browsern auch einen plattform- und browserunabhängigen Ansatz. Für eine optimale Berücksichtigung der Unterschiede beim Rendering sollte beim Testen außerdem eine möglichst reale Betriebs- und Testumgebung zur Verfügung stehen. web2test nutzt deshalb im Gegensatz zu anderen Testwerkzeugen die auf dem System vorinstallierten Browser und verzichtet auf zusätzliche Plugins oder sonstige Erweiterungen. Auf diese Weise lassen sich auch dynamische Browsereinstellungen wie Proxies, vorhandene Cookies oder die Lokalisierung sitzungsspezifisch anpassen. Erweiterte Anforderungen wie z. B. der Zugriff auf DOM- und Browserevents lassen sich skriptbasiert über XML und Python umsetzen.

Abbildung 3: Oberfläche von web2test
Trotz der umfangreichen Skripting-Optionen wurde aber darauf geachtet, dass das Erstellen von Testskripts schnell, modular und auf Grund intuitiver Benutzeroberfläche auch ohne Programmierkenntnisse möglich ist (Vgl. Abbildung 3).
web2test wurde als Kooperationsprojekt der itCampus Software- und Systemhaus GmbH und dem Softwareentwicklungshaus Quality First Software (QFS) entwickelt und ist eine Erweiterung des von QFS seit mehreren Jahren erfolgreich vermarkteten JAVA GUI Testtool QF-Test. Sämtliche Funktionen von QF-Test zur Ablaufsteuerung und zum Testcase-Management stehen Dank web2test somit jetzt erstmalig auch für webbasierte Anwendungen zur Verfügung.
[1] Dustin, E.; Rashka, J.; Paul, J.: Software automatisch testen, Springer Verlag, Berlin, Heidelberg, New York, 2000
[2] Andrae, C.: Erstellung von Softwarekomponenten zur Testautomatisierung von webbasierten Anwendungen, Berufsakademie Sachsen, Staatliche Studienakademie Dresden, 2004.
[3] Max, T.: Entwicklung eines Testframeworks zum Test eines Co-Browsing-Systems, Universität Leipzig, 2005.
[4] Tymoshenko, V.: Entwicklung einer dynamischen und plattformunabhängigen Bibliothek für die externe Anbindung von Web-Browsern, Hochschule für Technik, Wirtschaft und Kultur Leipzig, 2006
[5] Landmann, J.: Evaluation und Konzeption eines automatisierten Ergonomie-Testwerkzeugs für die Software-Entwicklung, Universität Halle, 2007
[6] Herron, D.: AJAX Application Testing, http://weblogs.java.net/blog/robogeek/archive/2007/07/ajax_applicatio.html, 2007
[7] Markiewicz, B. : Abstraktion von GUI-Widgets zur Optimierung der Plattformunterstützung von C/R-Testautomatisierungen, Hochschule für Technik, Wirtschaft und Kultur Leipzig, 2007