Automatisierte Tests über Weboberflächen

Fast jeder kennt das Problem. Man implementiert neue Funktionalität, führt eventuell noch paar Code-Optimierungen durch und lässt anschließend Unit-Tests laufen. Obwohl alle Tests erfolgreich sind, ist man trotzdem nicht immer sicher, ob eigene Änderungen keine Seiteneffekte verursacht haben, die erst beim manuellen Testen der Applikation über die Oberfläche ersichtlich werden. Ganz schlimm wird es, wenn diese Fehler ganz übersehen werden. Meistens ist es nicht der Fall. Doch wer sicher sein will, sollte sich über Testautomatisierung der Benutzeroberflächen (GUI-Testing) Gedanken machen.
 

Wozu GUI-Tests?

Unit-Tests alleine sind im Bereich der Softwarequalität nicht ausreichend, da bei dieser Art des Tests die Software nur aus der Codeperspektive betrachtet und getestet wird (s.g. White-Box Tests). Dabei wird eine zentrale Sicht auf das Produkt nicht ausreichend berücksichtigt – die Anwendersicht. Der Anwender verwendet die Applikation grundsätzlich anders als Unit-Test. Für diesen ist die Anwendung eine Black Box, die über die Oberfläche bedient wird. In Folge dessen, wird er mit anderen Problemen und Fehlern konfrontiert. Besonders bei Webapplikationen entstehen zusätzlich Probleme durch unterschiedliche Browsertypen und Betriebssystemen.

Aus diesem Grund werden GUI-Tests in Softwareprojekten durchgeführt. Manuelle Testdurchführung über Oberflächen ist meist sehr aufwändig, zeitintensiv und teuer. Besonders bei Regressionstests, bei denen immer wieder die gleichen Testszenarien durchgeführt werden, um die Grundfunktionalität der Software zu gewährleisten.
 

AutomatisierteGUI-Tests?

Die Notwendigkeit der Automatisierung von Testabläufen steht in den meisten Softwareprojekten außer Frage. Nicht nur der Buildprozess und die Unit-Tests Läufe, sondern auch GUI-Tests lassen sich inzwischen sehr zuverlässig und stabil automatisieren.

Testautomatisierung über die Benutzeroberflächen kann weitgehend die Unit-Test ergänzen und auch dazu beitragen, dass die Qualitätsprobleme und Seiteneffekte so früh wie möglich erkannt werden. Dadurch können eine bessere Produktqualität erreicht, die Entwicklungs-, Fehlerlokalisierungszeiten verkürzt und somit die Kosten reduziert werden. Insbesondere bei Regressionstests.

Die Erstellung und Wartung von automatisierten GUI-Tests ist natürlich auch mit Aufwand verbunden und steht somit nicht immer im Verhältnis zwischen Kosten und Nutzen. Wenn man sich für die Testautomatisierung entscheidet, sollte folgendes beachtet werden:

  • Man sollte nicht versuchen, alles zu automatisieren. Testerstellung, Wartung und Durchführung müssen im Verhältnis zu den manuellen Tests stehen.
  • Wenn eine Funktion mit Unit-Test getestet werden kann, dann wird mit Unit-Test getestet und nicht über die Oberfläche. „Don’t write Front-End Tests“ [2].
  • Bei der Testerstellung muss auf Wartbarkeit und Wiederverwendbarkeit geachtet werden.
     

AutomatisierteGUI-Tests bei der it-economics GmbH

Eines der wichtigsten Themen in unserer Firma ist die Qualität der Software. Da die automatisierten GUI-Tests die Unit-Test hervorragend ergänzen und somit zur Erreichung besserer Softwarequalität führen, wollen wir auch auf diesem Themengebiet unser Wissen ausbauen.

Bei uns werden Web-Anwendungen entwickelt und erweitert, die sehr sensible Daten verarbeiten. Deswegen ist es für uns besonders wichtig, dass die Qualität in diesem Bereich bestens gesichert ist. Zu diesem Zweck haben wir letztes Jahr eine konkrete Aufgabe im Rahmen einer Bachelorarbeit definiert: Ziel war geeignete Werkzeuge für diesen Zweck systematisch zu ermitteln und nach unseren Kriterien zu evaluieren. Das „Sieger-Werkzeug“ soll zukünftig in unserem Unternehmen für die Automatisierung von Oberflächentests von Web-Anwendungen eingesetzt werden.

Mittels einer Marktanalyse wurden über 90 Produkte ermittelt. Nach der Erstfilterung anhand von „Muss“-Kriterien, blieben nur noch 12 Tools übrig, die daraufhin anhand von „Wunsch“-Kriterien genauer evaluiert und einzeln bewertet wurden. Die höchste Bewertung erhielt Selenium WebDriver (Selenium 2) und stellte sich als insgesamt sehr überzeugendes Werkzeug heraus, natürlich auch weil das Java basierende Open Source Tool perfekt in unseren Unternehmenskontext passt."
 

Selenium WebDriver

Selenium ist schon lange eine gute Alternative zu schwergewichtigen, proprietären und v.a. teuren Lösungen. Heute wird es von Firmen wie Ford Motors, Deutsche Bank, Adobe und Google eingesetzt [1]. Neben wenigen Schwächen in der Dokumentation und im Reporting, hat dieses Produkt viele Vorteile, die für it-economics GmbH eine wichtige Rolle spielen, u.a.:
ausgezeichnete Integrität in den Unternehmenskontext

  • hohe Zukunftssicherheit
  • große Community
  • Erweiterbarkeit
  • Übersichtlichkeit, Wiederverwendbarkeit und Wartbarkeit von Tests
  • GUI-Test in Form von JUnit-Test und dadurch die Möglichkeit der Anbindung der Testausführung an Continuous-Integration-Systeme (CI-Systeme) wie beispielweise Jenkins[3].


Mit Selenium WebDriver wurden im Rahmen der Bachelorarbeit vereinbarte Testszenarien exemplarisch umgesetzt, die Testausführung in ein CI-System integriert und somit der gesamte Testablauf beispielhaft automatisiert.
 

Ausblick

Im nächsten Schritt werden wir die gewonnenen Erkenntnisse auf unsere Infrastruktur anwenden, unser Know-How im diesem Bereich weiter ausbauen und letztendlich dieses Wissen unseren Kunden zur Verfügung stellen.

 

Quellen:
[1] Java Magazin 9/2011, Seite 100.
[2] http://wn.com/GTAC_2010_The_Future__of_Front-End_Testing (Minute 3)
[3] http://www.jenkins-ci.org