© Excellent backgrounds/Shutterstock.com
UI-Test mit Selenium WebDriver

Automatisiertes Testen von Weboberflächen


Testautomatisierung als solche ist mittlerweile in den meisten Softwareprojekten angekommen, sofern die Entwicklung nicht noch auf dem Stand der Neunzigerjahre des vergangenen Jahrhunderts stehengeblieben ist. So werden z. B. in Komponententests einzelne Klassen getestet, in Integrationstest wird das Zusammenspiel mehrerer Komponenten betrachtet usw. Bei den meisten Entwicklern sind Begriffe wie Mocking, TDD, JUnit, Arquillian etc. mittlerweile angekommen, wobei gerne noch (auch genormte) Begriffe durch die Projektbeteiligten durcheinander geworfen werden. Für den Test von Weboberflächen gehört im Java-Umfeld Selenium WebDriver zu den weit verbreiteten Testwerkzeugen. Dieser Artikel soll einen ersten Einstieg bieten.

Automatisierte UI-Tests von Weboberflächen zielen, wie es auch bei automatisierten Komponenten- und Integrationstests der Fall ist, u. a. darauf ab, erwartete Ergebnisse mit den tatsächlichen zu vergleichen (Soll-Ist-Vergleich), um somit eine verlässliche Aussage darüber treffen zu können, ob das Testobjekt (in diesem Fall die zu testende Webseite) gemäß einer vorliegenden Spezifikation implementiert wurde und dieses Testobjekt bestimmte Qualitätsmerkmale aufweist. Es existieren einige wichtige Argumente, die für eine Automatisierung von UI-Tests sprechen; hervorzuheben ist da zum einen, dass sich automatisierte Testfälle mit hoher Geschwindigkeit ausführen lassen können; schneller als es jede studentische Hilfskraft vermag. Darüber hinaus sorgt ein automatisierter UI-Test für einen kleinen „Integrationstest“ – von oben (der Weboberfläche) bis ganz nach unten (Service oder Datenbank) und anschließend wieder zurück – und gibt so grundsätzliche Auskunft über den Zustand der Anwendung. Dem gegenüber stehen wiederum hohe Implementierungsaufwände in der Einführung, sowie stetiger Aufwand im Anpassen der Testskripte aufgrund von Änderungen im Testobjekt, wobei diese Begründungen jedwede Art von Testautomatisierung in Frage stellen würden.

Für den automatisierten Test von Webseiten sollten darüber hinaus unter anderem mindestens folgende Anforderungen bestehen:

  • Die Testautomatisierung soll verschiedene Browser unterstützen. Die Nutzer der Webseite benutzen nicht nur einen einzigen Browser. Stellen Sie sich ein soziales Netzwerk vor, dass nur für den Internet Explorer verfügbar ist – undenkbar. Bei Spezialanwendungen mag es natürlich eine spezifizierte Vorgabe bezüglich des zu nutzenden Browsers geben, da sich dies aber auch von Anwendung zu Anwendung wieder unterscheidet, sollte die Testautomatisierung eine Vielzahl von Browsern (zumindest die gängigsten) unterstützen.

  • Asynchrones Verhalten eines Testobjekts soll getestet werden können. Änderungen in der Weboberfläche durch spezifisches Nachladen einzelner Inhalte sollen ebenfalls durch die Testautomatisierung berücksichtigt werden können.

  • Die Durchführung von Regressionstests soll möglich sein. Eine Webseite soll nach einer Änderung jederzeit erneut getestet werden können, um nachzuweisen, dass die bestehenden Funktionalitäten weiterhin Bestand haben und keine neuen Fehlerzustände hinzugefügt wurden.

Diese Liste ließe sich annähernd beliebig fortsetzen. Mit Selenium existiert ein Werkzeug, das diese Anforderungen erfüllen kann. Es handelt sich dabei um eine freie Software und wird unter der Apache-2.0-Lizenz veröffentlicht. Das Projekt aggregiert mehrere Softwaretools, wobei jedes eine spezielle Rolle erfüllt. Neben der bekannten Selenium-IDE [1], einer Extension für den Mozilla-Firefox-Browser in Form eines Capture-and-Replay-Tools, stellt Selenium WebDriver [2] (auch Selenium 2 genannt) den vielleicht wichtigsten Bestandteil des Selenium-Projekts dar. Selenium WebDriver ermöglicht es u. a., automatisierte Testfälle zu erstellen und diese für Regressionstests zu nutzen. Entwickelt wird Selenium von der Firma ThoughtWorks. Für die Beispiele dieses Artikels wird Selenium WebDriver in der Version 2.47.1 verwendet.

Listing 1

(...) <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>2.47.1</version> </dependency> (...)

Merkmale von Selenium WebDriver

Selenium WebDriver verfügt unter anderem über folgende wichtige Merkmale:

  • Leichte Erlernbarkeit: Für einen Java-Entwickler ist Selenium WebDriver leicht erlernbar. Man bindet die Abhängigkeit in die Maven pom.xml (Listing 1) ein und kann direkt loslegen. Nach wenigen Minuten stellen sich die ersten Erfolgserlebnisse ein.

  • Verfügbarkeit für verschiedene Programmiersprachen: Das Testwerkzeug steht für eine Vielzahl an Programmiersprachen zur Verfügung. Am bekanntesten ist die Kombination mit Java, aber es existiert auch die Möglichkeit, Selenium WebDriver u. a. in C#, Python oder Ruby zu verwenden.

  • Unterstützung gängiger Browser: Selenium WebDriver unterstützt unter anderem Google Chrome, Internet Explorer, Mozilla Firefox, Safari und Opera. Grundvoraussetzung für die Verwendung eines spezifischen Browsers ist, dass dieser...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang