Ich sehe was was Du nicht siehst – Behavior Tests mit Behat

Seit längerem schon nutzen wir Behat zum Testen unserer Webseiten und Extension, daher dachte ich es wäre mal Zeit für einen Blogbeitrag darüber, was so die Vorteile und unsere Erfahrungen sind.

Behavior Tests mit Behat

Bei Behavior Tests werden die Anforderungen an die Software mittels Beispielen, sogenannten Szenarien beschrieben. Üblicherweise wird für die Beschreibung dieser Szenarien ein bestimmtes Format vorgegeben, damit später die automatisierte Überprüfung der Szenarien einfach umzusetzen ist.
Behat ist dabei ein Ableger für Behavior Tests der gerade für PHP sehr verbreitet ist.

Ein kleines Beispiel anhand eines einfachen Kontaktformulares:

    • Gegeben ich bin auf Seite „/kontaktformular“
    • Und schreibe „Eike“ in das Feld „Vorname“
    • Und schreibe „Starkmann“ in das Feld „Nachname“
    • Und schreibe „es@undkonsorten.com“ in das Feld „Email“
    • Und schreibe „Hallo Welt“ in das Feld „Kommentar“
    • Wenn ich das Formular abschicke
    • Dann sehe ich „Vielen Dank für die Nachricht.“

Diese Anforderungen sind einfach zu verstehen und zu lesen und können in automatisierte Test umgewandelt werden, wenn Sie einem bestimmten Format folgen z.B. Gherkin:

    • Given I am on „/kontaktformular“
    • And I fill in „vorname“ with „Eike“
    • And I fill in „nachname“ with „Starkmann“
    • And I fill in „email“ with „es@undkonsorten.com“
    • And I fill in „kommentar“ with „Hallo Welt“
    • Wenn I click on the element „Absenden“
    • Then I should see „Vielen Dank für die Nachricht.“

Das ist schon ein konkreter Test der ausgeführt werden kann. Der Vorteil dabei ist das der Test leicht lesbar ist und auch von Technik ferneren Menschen geschrieben werden könnte, es werden keine Programierkentnisse benötigt.

Bei Ausführen eines solchen Tests wird dann ein Browser geöffnet z.B. ein Headless Chrome und die gegebenen Befehle werden auf dem Markup der Seite ausgeführt. Das heißt der Browser öffnet die Seite „/kontaktfomular“, sucht nach einem Formular Element „vorname“ und gibt dort „Eike“, dann wird „nachname“ gesucht und „Starkmann“ eingegeben usw.
Am Ende wird ein Submit Element „Absenden“ gesucht und geklickt, danach muss der Text „Vielen Dank für die Nachricht.“ zu sehen sein.

Es ist dies nur ein kleiner Ausschnitt  der Gherkin Syntax. Es lassen sich beliebig komplexe Szenarien ausführen, vor allem, da die Syntax auch mittels PHP erweitert werden kann, über den sogenanten Feature Context.

Des weiteren gibt es verschiedene Extensions z.B. Mink und Screenshot wodurch sich erweiterte Funktionalität erreichen lasst wie z.B. das erstellen von Screenshots zu einem bestimmten Zeitpunkt.

Wichtig ist zu verstehen das diese Tests auf dem konkreten Frontend laufen, sollte also ein Element nicht sichtbar oder integrierbar sein, z.B. durch ein Coockie Banner wird der Test fehlschlagen. Das heißt auch das Markup oder CSS Änderungen die Test brechen lassen können, was sicher auch ein Vorteil ist.

Der Artikel soll hier nur erst mal einen kleinen Überblick bzw. Einstieg in Behat schaffen. Sollte es Interesse geben werde ich noch mal einen Beitrag schreiben wie das ganze aufgesetzt und benutzt wird.
Auch könnte ich mir die Vorstellung komplexerer Szenarien vorstellen, also schreib es mal in die Kommentare falls das gewünscht ist.

Links:

Behat

docs.behat.org/en/latest/

Mink

https://mink.behat.org/en/latest/

Gherkin

cucumber.io/docs/gherkin/


Kommentare

Keine Kommentare


Kommentar schreiben

* Diese Felder sind erforderlich