Akzeptanztests mit Gauge und Java
1. Einführung
In diesem Blogeintrag werde ich zunächst auf Gauge eingehen, die Installation vorstellen und anschließend ein Beispiel erläutern. Abschließend erfolgt noch eine kurze Gegenüberstellung mit Gherkin.
Was ist Gauge?
Gauge ist ein Open Source Framework um Akzeptanztests zu entwickeln. Dabei setzt Gauge auf eine Markdown Sprache, die flexibel gestaltet ist und mit der für jede Zielgruppe eine aussagekräftige Spezifikation erstellt werden kann. Vergleichbar mit Cucumber und Gherkin, wird ein Szenario in Freitext entworfen.
Testing my website
=====================
Some description...
* Open my website pmo-it
Test link Blog
----------------
* Go to Blog
* Make sure Blog has been reached
Was ist eine Spezifikation?
Eine Spezifikation beschreibt die einzelnen Schritte eines Testfalls in Menschen lesbarer Sprache.
Dabei wird zuerst das Szenario benannt, anschließend kurz beschrieben und schließlich in einzelnen Schritten erläutert.
Die jeweiligen Schritte gilt es dann zu implementieren. Hier findet der eigentlich Testcode Einzug.
public class TestWebsite {
@Step("Open my website pmo-it")
public void openWebsite() {
webDriver.get("https://pmo-it.de");
assertThat(webDriver.getTitle()).contains("Pascal Moll");
}
@Step("Go to Blog")
public void clickLinkBlog() {
WebElement linkBlog = webDriver.findElement(By.cssSelector("..."));
assertThat(linkBlog).isNotNull();
}
@Step("Make sure Blog has been reached")
public void assureBlogHasBeenReached() {
assertThat(Driver.webDriver.getTitle()).contains("Blog");
}
}
In diesem Testfall wird Selenium verwendet um die Webseite zu öffnen und Navigationen durchzuführen.
Der Test beginnt mit dem Öffnen der Webseite. Es erfolgt eine Erfolgsprüfung und anschließend die Navigation. Abschließend erfolgt eine Prüfung des Zielseitentitels.
Report
Gauge stellt erwartungsgemäß auch einen Ergebnisreport zur Verfügung:
Im Fehlerfall lässt sich natürlich auch klar einsehen, an welcher Stelle der Test fehlgeschlagen ist, inklusive Screenshots. Die Erstellung läuft voll automatisch.
2. Installation
Gauge installation
Gauge stellt zahlreiche Möglichkeiten der Installation zur Verfügung. Auf der offiziellen Webseite sind diese im Detail beschrieben.
Da ich eine Windows Maschine verwendete, habe ich mich für die Option mit dem Chocolatey Package Manager entschieden. Ist dieser bereits vorhanden, kann eine Installation bequem über die Kommandozeile erfolgen.
choco install gauge
Im Anschluss ist noch eine Installation des Java Packages notwendig.
gauge install java
Plugin Installation
Gauge stellt für die Javaentwicklung ein komfortables IntelliJ Plugin zur Verfügung. Dieses lässt sich auch sehr einfach über die IntelliJ Oberfläche installieren.
Nach Abschluss der Installation kann auch direkt ein neues Gauge Projekt angelegt werden.
Mit dieser Konfiguration legt IntelliJ ein Mavenprojekt mit allen benötigten Dependencies an. Es empfiehlt sich allerdings die Versionsnummern zu aktuallisieren. In meinem Testfall waren diese veraltet und haben zu Konflikten geführt.
Maven Dependencies aktualisieren
Wie gewohnt befinden sich alle Verweise in der POM. Hier empfiehlt es sich die Versionsnummer des Gauge-Maven Plugins zu erhöhen und auch von dem Javaplugin.
3. Erster Test anlegen
Spezifikationen & Steps
Zu Beginn steht die Spezifikation. Der Ordner "specs" ist als Ablage hierfür vorgesehen. Über rechte Maustaste lassen sich ebenso neue anlegen.
In dieser Datei werden die Spezifikationen und zugehörigen Szenarien eingetragen. IntelliJ zeigt in diesem Zusammenhang auch gleich auf, welche zugehörigen Steps in der sogenannten Glue-Datei fehlen. Über die Lampe an der Seite können diese auch komfortabel hinzugefügt werden.
Ausführen
In der Szenario Datei signalisiert IntelliJ einen kleinen gründen Pfeil. Über diesen lässt sich das Szenario ausführen und das Testergebnis anzeigen.
4. Fazit
Im Vergleich zu Cucumber und Gherkin verzichtet Gauge auf die bekannte "Given-When-Then" Syntax. Die Szenarien sind hier viel freier gestaltet. Cucumber setzt hier auf einen klaren BDD Ansatz wohingegen Gauge im Allgemeinen auf den Fokus der Abnahmetests abzielt.
Das Vorgehen gefällt mir persönlich sehr gut und das Werkzeug macht einen super Eindruck. Mit dem IntelliJ Plugin lässt sich mit wenigen Klicks ein neues Projekt anlegen und die wichtigstens Dependencies sind direkt mit angelegt.
Sieht auf jedenfall spannend aus und ich freu mich schon mehr Zeit in das Tool zu investieren. Gauge kann noch viel mehr, beispielsweise wurde hier noch garnicht auf Datentabellen eingegangen.
Mehr über Cucumber erfahrt ihr in meiner Schulung Behaviour Driven Development (BDD) mit Cucumber und Gherkin Schulung.