Testen mit Geb und Spock

Vor etwa drei Monaten habe ich unsere im Jenkins neu eingeführten Oberflächentests vorgestellt. Um zu sehen, wie bei uns getestet wird, möchte ich jetzt einen kurzen Überblick über die im Projekt verwendeten Technologien geben. Für die automatischen Oberflächentesets nutzen wir Geb und Spock.

Spock ist ein Framework zum Testen mit Java oder Groovy. Es bietet eine ausdrucksstarke Spezifizierungssprache. Zum Ausführen kleiner Spock-Spezifikationen könnt ihr die folgende Webseite nutzen: http://meetspock.appspot.com/.

In Kombination mit Spock bietet sich Geb als Abfragesprache an, welche auf der Programmiersprache Groovy basiert. Geb kann allerdings auch mit JUnit als Test-Framework genutzt werden. Mithilfe von Geb werden Selenium-Tests in einem lesbaren Format erstellt. Somit können auch Nicht-Programmierer bereits einfache Oberflächentests schreiben.

 

Schritte zum ersten Geb/Spock-Test

Ich habe ein kleines Beispiel-Projekt erstellt, in dem auf der Heise Seite der erste Artikel angeklickt und die Überschriften des Teasers und des kompletten Artikels verglichen werden. Im folgenden seht ihr eine kurze Schritt-für-Schritt Anleitung, die für die Erstellung eines Geb/Spock-Tests notwendig sind.

 

1. Abhängigkeiten ins Projekt integrieren

Zunächst müssen alle Abhängigkeiten ins Projekt geladen werden. Diese umfassen Spock, Geb und Selenium.

 

2. Geb konfigurieren

Danach folgt die Konfiguration in der GebConfig.groovy-Datei. Diese muss im src/test/resources-Ordner angelegt werden. Dabei ist auf eine korrekte Bezeichnung zu achten, da Geb die Datei per Namenskonvention findet. In der GebConfig wird unter anderem die Basis-URL und der zu verwendende Treiber festgelegt.

  • baseUrl: gibt den Startpunkt aller späteren Aufrufe an, in meinem Fall „www.heise.de“
  • driver: der Standard-Treiber des Projektes. Es können natürlich auch andere Treiber verwendet werden. Hier ist zu beachten, dass der dazugehörige Browser auch installiert sein muss.

 

3. Objekte in einer Geb-Page definieren

Damit die Objekte im Test einen ansprechenden Namen haben, muss man sie vorher in einer sogenannten Page definieren.

  • url: URL der Seite. Ein relativer Pfad wird an die Basis-URL aus der GebConfig-Datei angehängt.
  • at: Test, ob richtige Seite geladen ist. Hier ist ein eindeutiger Bezeichner zu wählen.
  • content: Inhalt der Seite. Hier werden alle wichtigen Objekte definiert, die man später im Test braucht.

 

4. Tests schreiben

Und nun geht es ans Test-Schreiben. Wenn die Bezeichner in der Page gut gewählt sind, ist das Schreiben und auch das spätere Lesen des Tests sehr einfach.

  • setup(): wird vor jedem Test ausgeführt (cleanup() erfolgt nach jedem Test)
  • to HeiseHomePage: URL der HeiseHomePage wird aufgerufen und geprüft, ob die Seite geladen ist
  • open first article(): erster Testfall
  • when: Anweisung zum Ändern der Oberfläche
  • then: ein Boolean-Ausdruck, der wahr sein muss

 

Zum Schluss zeige ich euch noch den Durchlauf des Oberflächentests. Damit man die Interaktion des Tests mit der Oberfläche besser sehen kann, wird zunächst nach der Artikel-Überschrift gesucht. Dafür wird rechts-oben im Suchen-Fenster der Name eingegeben. Der gefundene Artikel wird dann angeklickt und überprüft, ob die Überschriften übereinstimmen.

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.