Akzeptanztests mit Gauge und Java

Akzeptanztests mit Gauge und Java

Gauge Blogeintrag Logo

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:
Testreport von Gauge.
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.
IntelliJ Gauge Plugininstallation
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.
Gauge Dependency anpassen.
Gauge Dependency anpassen

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.
Gauge Spezifikationen anlegen
Neuen Step 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.

Das könnte Sie auch interessieren

Rolladensteuerung mit Loxone und Java

Automatische Rolladensteuerung mit Java und Loxone MotivationLoxone ist ein bekannter Anbieter für Smarthome Rolläden. Während sich über die mitgelieferte Oberfläche...

Testautomatisierung mit Selenium Schulung

Testautomatisierung mit Selenium Schulung Schulungsbeschreibung Die Selenium Schulung vermittelt Basiswissen und die wichtigsten Aspekte zur Testautomatisierung. Nach...

API Testing mit Java und WireMock

API Testing mit Java und WireMock Motivation Ein bekanntes Problem: Öffentliche APIs werden abgefragt und liefern Daten in Form von JSON oder anderen Formaten zurück....

Sealed Classes mit Java JDK 17

Sealed Classes mit Java JDK 17 Was sind Sealed Classes? Mit dem kommenden Java Release 17 werden sogenannte Sealed Classes eingeführt. Diese waren zuvor bereits seit...

ReSpeaker 4 LEDs mit Pi4J steuern

ReSpeaker 4 LEDs mit Pi4J steuern MotivationFür ReSpeaker im allgemeinen gibt es bereits zahlreiche Bibliotheken, auch einige die LEDs über die GPIO Pins ansteuern....

Erinnerungsassistent für Medikamente mit Sprachausgabe

Erinnerungsassistent für Medikamenteinnahme mit Sprachausgabe Motivation Bevor Corona began, besuchten Ich und meine Familie meine Großeltern regelmäßig. Dabei...

Licht steuern mit Java und Philips Hue

Licht steuern mit Java und Philips Hue Motivation Für meinen selbstprogrammierten Sprachassistenten wollte ich ein Modul für die Lichtsteuerung entwickeln. Ziel war es,...

Devops mit Cucumber, Jira und Xray

Devops mit Cucumber, Jira und Xray "Hat auf meiner Maschine funktioniert, ist jetzt Operating Problem“ Diese oder vergleichbare Aussagen sind nicht neu und...

Fünf Tipps für besseren Testcode

Fünf Tipps für besseren Testcode Good Practices In diesem Blogpost zeige ich fünf Good Practices auf, um den eigenen Testcode zu verbessern. Aber wieso nur "Good...