© DrHitch/Shutterstock.com
Spock, Geb und Selenium

3 Funktionale Tests mit Selenium Builder


Das Erstellen funktionaler Oberflächentests gehört in Entwicklerteams erfahrungsgemäß zu den weniger beliebten Aufgaben. Mit Selenium Builder existiert ein Werkzeug, mit dem sich diese Aufgaben einfach und ohne tiefere Kenntnisse einer Programmiersprache durchführen lassen.

Selenium hat sich beim Testen webbasierter Oberflächen bewährt und ist bereits seit über zehn Jahren auf dem Markt. Insbesondere das WebDriver API wird von einigen Testframeworks eingesetzt. Selenium Builder [1] ist ein Instrument zum Aufzeichnen und Abspielen funktionaler Tests auf Basis von Selenium. Es wird in diesem Kapitel näher betrachtet. Im folgenden Kapitel liegt der Fokus auf der automatisierten und parallelen Ausführung der erstellten Tests mit Selenium Grid [2].

kraft_1.png

Abbildung 3.1: Browserfenster und separates Selenium-Builder-Add-on

Grundlagen des Selenium Builder

Selenium Builder wurde ursprünglich zur Ablösung der schon länger verfügbaren Selenium-IDE entwickelt, die nicht mehr weiterentwickelt werden sollte. Aktuell wird die Selenium-IDE noch gewartet, wobei sich mit Selenium Builder das Testing nach unserer Erfahrung aber einfacher gestaltet.

Zur Nutzung von Selenium Builder ist keine eigenständige Softwareinstallation notwendig, sondern es muss lediglich ein Firefox-Add-on installiert werden. Das Add-on öffnet sich in Firefox als zusätzliches Fenster, in dem, wie in Abbildung 3.1 rechts oben zu sehen, der jeweils aufgezeichnete Testfallschritt gezeigt wird. Aktionen im Hauptfenster des Browsers, wie das Navigieren auf eine andere Seite, spiegeln sich direkt im Add-on-Fenster wider.

Vor dem Erstellen eines Tests muss die gewünschte Selenium-Version 1 oder Version 2 selektiert werden. In den folgenden Abschnitten wird die auf WebDriver basierende aktuellere Version 2 betrachtet.

Erstellte Tests können in JSON abgespeichert und somit entsprechend auf Dateiebene strukturiert werden. Neben dem Standardformat wird der Export der Aufzeichnungen in eine Vielzahl von Programmiersprachen wie Java oder Python angeboten. Dies ermöglicht beispielsweise das Einbinden in eine Suite wie JUnit, damit sowohl Unit als auch funktionale Tests in einer einzigen Testsuite ausgeführt werden können. Daneben bietet sich mit Programmiersprachen eine detailliertere Validierung der Testergebnisse an, da bspw. im dortigen Code mit Werten aus einer Datenbank validiert werden kann. Allerdings ist anzumerken, dass dieser Weg nur in eine Richtung funktioniert und exportierte Tests innerhalb von Selenium Builder nicht mehr bearbeitet werden können. Insofern sollte immer das JSON-Format zusätzlich gespeichert und versioniert werden, um zukünftig auf dieser Basis weiterarbeiten zu können.

Das Abspielen aufgezeichneter Tests erfolgt direkt lokal über das Add-on-Fenster, das auch immer den aktuellen Testfortschritt anzeigt. Auf die Ausführung über Remote Controller wird im folgenden Kapitel eingegangen.

Aufzeichnen und abspielen

Der Aufnahmemodus speichert eine im Browser geklickte Abfolge und legt sie als JSON-Skript an. Dabei wählt das Tool selbstständig die zu verwendenden Kommandos, wie clickElement oder setElementText. Als Einstiegsbeispiel wird das Aufrufen eines Formulars und das Ausfüllen eines Textfelds betrachtet. Aufgerufen wird ein Dialog, um neue Mitteilungen in einem Portal anzulegen. Das in Abbildung 3.1 dargestellte Formular wird über einen Link aufgerufen und besitzt u. a. ein Textfeld für den Titel der Mitteilung. Nach dem Start des Aufnahmemodus über das Menü Record klickt man den Link zum Formular und schließlich im Formular ins entsprechende Textfeld, wo die Eingabe des gewünschten Titels erfolgt. Danach sind im Builder-Fenster die gerade eingegebenen Aktionen zu sehen. Beim ersten Schritt wurde das Kommando get verwendet. Der zweite Schritt nutzt das Kommando setElementText. Als Selektor in Schritt 2 wurde automatisch die ID des Textelements erkannt. Für das Attribut text wurde der Beispieltitel übernommen. Damit ist das erste Beispiel schon fertig (Listing 3.1), und der Aufnahmemodus wird über den Knopf Stop recording beendet. Das Skript kann über den Menüeintrag Run test locally getestet werden.

{
"type": "script",
"seleniumVersion": "2",
"formatVersion": 2,
"steps": [
{
"type": "get",
"url": "http://demo/news/create_
news?created=true"
},
{
"type": "setElementText",
"locator": {
"type": "id",
"value": "title"
},
"text": "Test-Mitteilung mit
Selenium Builder"
},
{
"type": "clickElement",
"locator": {
"type": "name",
"value": "save"
}
}
],
"data": {
"configs": {},
"so...

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