Gherkin-Sprache: Format, Syntax und Gherkin-Test in Cucumber
Was ist Gurkensprache?
Gurke ist eine geschรคftslesbare Sprache, die Ihnen hilft, Geschรคftsverhalten zu beschreiben, ohne auf Details der Implementierung einzugehen. Es ist eine domรคnenspezifische Sprache zum Definieren von Tests in Cucumber Format fรผr Spezifikationen. Es verwendet einfache Sprache zur Beschreibung von Anwendungsfรคllen und ermรถglicht Benutzern, logische Details aus Verhaltenstests zu entfernen.
Der Text in der Gherkin-Sprache dient als Dokumentation und Grundgerรผst Ihrer automatisierten Tests. Das Gherkin-Format basiert auf der TreeTop-Grammatik, die in รผber 37 Sprachen existiert. Daher kรถnnen Sie Ihre Gurke in รผber 37 gesprochenen Sprachen schreiben.
Dieses Skript dient zwei Hauptzwecken:
- Dokumentiert Benutzerszenarien
- Einen automatisierten Test schreiben (BDD)
Warum Gurke?
Die Notwendigkeit von Gherkin lรคsst sich anhand der folgenden Bilder leicht erklรคren
Vor Gurke
Nach Gurke
Gurkensyntax
Gherkin ist eine zeilenorientierte Sprache, genau wie YAML und Python. Jede Zeile heiรt Schritt und beginnt mit dem Schlรผsselwort und endet mit einem Stopper. Tabulatoren oder Leerzeichen werden zum Einrรผcken verwendet.
In diesem Skript kann an beliebiger Stelle ein Kommentar hinzugefรผgt werden, er sollte jedoch mit einem #-Zeichen beginnen. Es las jede Zeile nach dem Entfernen von Ghrekins Schlรผsselwรถrtern wie angegeben, wann, dann usw.
Typische Gurkenschritte sehen aus
Gherkin Scripts: verbindet das menschliche Konzept von Ursache und Wirkung mit dem Softwarekonzept von Eingabe/Prozess/Ausgabe.
Gurkensyntax
Feature: Title of the Scenario Given [Preconditions or Initial Context] When [Event or Trigger] Then [Expected output]
Ein Gherkin-Dokument hat die Erweiterung .feature und ist einfach nur eine Testdatei mit einer ausgefallenen Erweiterung. Cucumber liest das Gherkin-Dokument und fรผhrt einen Test durch, um zu รผberprรผfen, ob sich die Software gemรคร der Gherkin-Syntax verhรคlt.
Wichtige Begriffe, die in Gherkin verwendet werden
- Merkmal
- Hintergrund
- Szenario
- Gegeben
- Wenn die Funktion
- Dann
- Und
- Doch
- Beispiele fรผr Szenarioskizzen
Die Namenskonvention wird fรผr den Feature-Namen verwendet. Es gibt jedoch keine festgelegten Regeln in Cucumber รผber Namen.
Merkmal
Die Datei sollte die Erweiterung .feature haben und jede Feature-Datei sollte nur ein Feature enthalten. Das Schlรผsselwort โfeatureโ wird mit โFeature:โ verknรผpft und nach dem Hinzufรผgen werden ein Leerzeichen und ein Name des Features geschrieben.
Szenario
Jede Feature-Datei kann mehrere Szenarios enthalten und jedes Szenario beginnt mit Scenario: gefolgt vom Szenarionamen.
Hintergrund
Das Schlรผsselwort โHintergrundโ hilft Ihnen, dem Szenario etwas Kontext hinzuzufรผgen. Es kann einige Schritte des Szenarios enthalten, der einzige Unterschied besteht jedoch darin, dass es vor jedem Szenario ausgefรผhrt werden sollte.
Gegeben
Die Verwendung des Schlรผsselworts Given dient dazu, das System in einen vertrauten Zustand zu versetzen, bevor der Benutzer mit der Interaktion mit dem System beginnt. Sie kรถnnen jedoch das Schreiben von Benutzerinteraktionen in den angegebenen Schritten weglassen, wenn diese im Schritt โVorbedingungโ angegeben sind.
Syntax:
Given
Given - a test step that defines the 'context Given I am on "/."
Wenn die Funktion
Wenn der Schritt darin besteht, die vom Benutzer ausgefรผhrte Aktion zu definieren.
Syntax:
When
A When - a test step that defines the 'action' performed When I perform "Sign In."
Dann
Die Verwendung des Schlรผsselworts โthenโ besteht darin, das anzuzeigen Ergebnisse nach der Aktion im Schritt when. Sie kรถnnen jedoch nur spรผrbare รnderungen รผberprรผfen.
Syntax:
Then
Then - test step that defines the 'outcome.' Then I should see "Welcome Tom."
Und Aber
Mรถglicherweise haben Sie mehrere โwannโ oder โdannโ angegeben.
Syntax:
But
A But - additional test step which defines the 'action' 'outcome.' But I should see "Welcome Tom."
And - additional test step that defines the 'action' performed And I write "EmailAddress" with "Tomjohn@gmail.com."
Gegeben, Wann, Dann und, aber sind Testschritte. Sie kรถnnen sie austauschbar verwenden. Der Interpreter zeigt keinen Fehler an. Allerdings werden sie beim Lesen sicherlich keinen โSinnโ ergeben.

Given The login page is opening When I input username, password and click the Login button Then I am on the Homepage
Beispiele fรผr Gurken
Beispiel 1:
Feature: Login functionality of social networking site Facebook. Given: I am a facebook user. When: I enter username as username. And I enter the password as the password Then I should be redirected to the home page of facebook
Das oben erwรคhnte Szenario betrifft eine Funktion namens Benutzeranmeldung.
Gherkin analysiert jeden in der Schrittdefinitionsdatei geschriebenen Schritt. Daher sind die Schritte in der Feature-Datei angegeben und die Schrittdefinitionsdatei sollte รผbereinstimmen.
Beispiel 2:
Feature: User Authentication Background: Given the user is already registered to the website Scenario: Given the user is on the login page When the user inputs the correct email address And the user inputs the correct password And the user clicks the Login button Then the user should be authenticated And the user should be redirected to their dashboard And the user should be presented with a success message
Best Practices fรผr die Verwendung von Gherkin
- Jedes Szenario sollte separat ausgefรผhrt werden
- Jede Funktion sollte mit ausgefรผhrt werden kรถnnen
- Schrittinformationen sollten unabhรคngig angezeigt werden
- Verknรผpfen Sie Ihre Szenarien mit Ihren Anforderungen
- Behalten Sie den vollstรคndigen รberblick darรผber, welche Szenarien in ein Anforderungsdokument aufgenommen werden sollten
- Erstellen Sie modulare und leicht verstรคndliche Schritte
- Versuchen Sie, alle gรคngigen Szenarien zu kombinieren
Vorteile von Gurke
- Gherkin ist so einfach, dass auch Nicht-Programmierer es verstehen kรถnnen
- Programmierer kรถnnen es als sehr solide Basis fรผr den Start ihrer Tests nutzen
- Es macht User Stories leichter verdaulich
- Das Gherkin-Skript ist fรผr Fรผhrungskrรคfte und Entwickler leicht verstรคndlich
- Gherkin Testing zielt auf die Geschรคftsanforderungen ab
- Ein erheblicher Teil der Funktionsspezifikationen wird als User Stories verfasst
- Sie mรผssen kein Experte sein, um den kleinen Gherkin-Befehlssatz zu verstehen
- Gherkin-Testfรคlle verknรผpfen Akzeptanztests direkt mit automatisierten Tests
- Der Schreibstil von Testfรคllen erleichtert die Wiederverwendung von Code in anderen Tests
Nachteile von Gurke
- Es erfordert ein hohes Maร an geschรคftlichem Engagement und Zusammenarbeit
- Funktioniert mรถglicherweise nicht in allen Szenarien gut
- Schlecht geschriebene Tests kรถnnen leicht die Kosten fรผr die Testwartung erhรถhen
Zusammenfassung
- Gherkin ist das Format fรผr Gurkenspezifikationen
- Gherkin ist eine zeilenorientierte Sprache, genau wie YAML und Python
- Gherkin Scripts verbindet das menschliche Konzept von Ursache und Wirkung mit dem Softwarekonzept von Eingabe/Prozess und Ausgabe
- Feature, Hintergrund, Szenario, Gegeben, Wann, Dann und Aber werden in Gherkin wichtig verwendet
- In Gherkin sollte jedes Szenario separat ausgefรผhrt werden
- Der grรถรte Vorteil von Gherkin ist, dass es fรผr Nicht-Programmierer einfach genug ist, um es zu verstehen
- Der Gurkentest funktioniert mรถglicherweise nicht in allen Szenarios gut


