Kapitel 3. Checkerberry web

Inhaltsverzeichnis

3.1. Einleitung
3.2. Funktionsweise
3.2.1. Setup-Phase
3.2.2. Test-Phase
3.2.3. Teardown-Phase
3.3. Architektur
3.4. Funktionsumfang
3.4.1. Wiederverwendung von Browser-Instanzen
3.4.2. Festlegen der Test-Url
3.4.3. Lokalen Domain Name Service (DNS) ändern
3.4.4. Fernsteuerung auswählen (Selenium RC und/oder WebDriver)
3.4.5. Registrieren neuer WebDriver-Instanzen
3.4.6. Konfigurieren von WebDriver-Instanzen
3.4.7. Kompatibilitätsmodus Selenium RC und WebDriver
3.5. Installation
3.5.1. Einbinden der checkerberry web-Bibliotheken
3.5.1.1. Einbinden der Bibliotheken über Maven
3.5.1.2. Checkerberry web-Bibliotheken
3.5.2. Erzeugen der checkerberry web-Umgebung
3.5.2.1. Checkerberry web-Umgebung
3.5.2.2. checkerberry web-Umgebung unter Verwendung anderer Testframeworks
3.5.2.3. Konfiguration von checkerberry web
3.6. Erstellen von Tests
3.7. Modellansatz

3.1. Einleitung

Checkerberry web ist eine Bibliothek, die den Software-Entwickler bei dem funktionalen Testen von Web-Anwendungen unterstützt. Zu diesem Zweck wird ein Browser über den Integrationstest gesteuert. Für diese Fernsteuerung wird das Open-Source-Framework Selenium 2.0 [Selenium Homepage, 2010] verwendet. Auf diese Art und Weise können alle Komponenten einer Webseite angesprochen werden. Werte von Feldern können ausgelesen werden, Links können gedrückt werden etc. Standardmäßig verwendet checkerberry web das Modul Selenium RC (Remote Control) für die Fernsteuerung des Browsers. Es ist jedoch auch einfach möglich, die Fernsteuerung auf WebDriver umzustellen. WebDriver wurde mit der Version 2.0 in Selenium aufgenommen und wird sich vermutlich mittelfristig als bevorzugte Lösung durchsetzen - gerade für die neuen Browsergenerationen. Aktuell ist es jedoch so, dass sowohl Selenium RC als auch WebDriver gleichberechtigt nebeneinander stehen. Die Auswahl des Verfahrens hängt von dem zu testenden Browser und der zu testenden Funktionalität ab. Aus diesem Grund unterstützt checkerberry web beide Ausprägungen.

Abbildung 3.1. Selenium Fernsteuerung

Selenium Fernsteuerung


Abbildung 3.1, „Selenium Fernsteuerung“ skizziert die Funktionsweise von Selenium. Innerhalb der Testklasse wird eine Client-Bibliothek von Selenium verwendet, die mit einer Server-Komponente im Browser kommuniziert. Die Server-Komponente verwendet JavaScript für die Kommunikation mit dem Browser und für den Zugriff auf die Webseiten.

Das Ziel von checkerberry web ist es, dem Software-Entwickler eine Out-of-the-Box-Lösung für das schnelle und einfache Testen von Web-Anwendungen zur Verfügung zu stellen.

Ein häufig auftretendes Problem bei der Erstellung von automatisierten GUI-Tests besteht in der schlechten Wartbarkeit der Tests. Änderungen an den Oberflächen der Anwendung ziehen häufig übermäßig viel Änderungsaufwand in den Tests nach sich. Wenn diese Änderungen zu häufig auftreten, kommt es früher oder später zu dem Punkt, an dem die Tests nicht mehr gepflegt werden. Die Testabdeckung fällt dann rapide auf 0%.

Um diese Entwicklung zu vermeiden, verwendet checkerberry web einen Modellansatz (Page Object Pattern [Google Page Objects, 2010]), der die Informationen einer Webseite kapselt. Änderungen der Anwendungen haben dadurch lediglich geringe Auswirkungen auf die Tests und die zugehörigen Modelle. Mit checkerberry web erstellte Tests können so über Jahre hinweg gepflegt und erweitert werden.

Die Kombination von checkerberry db und checkerberry web eröffnet dem Software-Entwickler vielfältige Testmöglichkeiten. Durch checkerberry db wird der Datenbestand der Web-Anwendung vor der Testausführung manipuliert. Auf diese Art und Weise ist es möglich, spezielle Aspekte der Web-Anwendung z.B. eines Online-Shops zu testen. Durch das Einspielen eines gefüllten Warenkorbs könnte man sich in dem Test der Web-Anwendung z.B. auf das Testen des Bezahlvorgangs konzentrieren. Das aufwändige Anlegen eines großen Warenkorbs über die Web-Anwendung ist dann nicht erforderlich. Generell ermöglicht die Kombination von checkerberry db und checkerberry web die Erstellung von Tests in unterschiedlicher Granularität.

Ein weiterer Vorteil besteht in der Möglichkeit, die Auswirkungen der GUI-Tests in der Datenbank zu überprüfen.