Computergrafik: cucumbber-Framework Logo, Links ist der Querschnitt einer Gurke als Computergrafik nachgebaut, in Grün und rechts ist der Schriftzug "Cucumber" auf weißen Hintergrund.

Was ist »Gherkin« und wie verwende ich »Gherkin«? – Mit Beispielen

    Gherkin ist eine auf natürlicher Sprache basierende Syntax, die verwendet wird, um Testfälle und Anforderungen in einer strukturierten, leicht verständlichen Form zu schreiben. Gherkin ist Teil des Cucumber-Framework, das im Jahr 2008 von Aslak Hellesøy entwickelt wurde und heute eines der führenden Tools für die Testautomatisierung ist.

    Gherkin wird oft in der agilen Softwareentwicklung eingesetzt, da es für die Zusammenarbeit zwischen Entwicklern, Testern und Kunden konzipiert ist. Durch die Syntax der Sprache können Anforderungen und Testfälle in einer einfachen und konsistenten Weise zu kommunizieren, ohne dass es zu Missverständnissen kommt, als Teil des BDD (Behavior Driven Development) Prozess.

    Das Cucumber-Framework

    Cucumber ist ein Open-Source-Tool für die Automatisierung von Akzeptanztests auf der Grundlage von Gherkin. Es unterstützt verschiedene Programmiersprachen wie Java, Ruby, JavaScript und Python. Es ist auch mit verschiedenen Test-Tools und Frameworks wie Selenium, Appium, JUnit und TestNG integrierbar.

    Das Cucumber-Framework ist keine herkömmliche „Technologie“. Es ist keine Sammlung von Bits und Bytes. Es ermöglicht das Schreiben in natürlicher Sprache (auch in über 70 Sprachen) ohne tiefes technisches Wissen. Dabei reicht aus, Ideen und Anforderungen aufzuschreiben und spezifische Begriffe und Richtlinien zu verwenden.

    Syntax

    Funktionalität: Addition von zwei Zahlen
      Ich möchte in der Lage sein, zwei Zahlen zu addieren
    
      Szenario: Addition von zwei positiven Zahlen
        Angenommen ich habe 2 in den Taschenrechner eingegeben
        Und ich habe 3 in den Taschenrechner eingegeben
        Wenn ich auf "addieren" drücke
        Dann sollte das Ergebnis 5 auf dem Bildschirm angezeigt werden.
    • Funktionalität: Beschreibt die Funktion, die getestet wird, sowie den Grund für den Test. Der Name sollte aussagekräftig sein und eine klare Vorstellung davon vermitteln, was getestet wird.
    • Szenario: Hier wird das Szenario beschrieben, in unserem Fall, dass wir zwei positive Zahlen addieren wollen. Optional können Tags hinzugefügt werden, um das Szenario zu kategorisieren oder zu markieren.
    • Die Schritte des Szenarios werden in den Zeilen Angenommen, Und, Wenn und Dann beschrieben.
      • Mit Angenommen werden die Zahlen 2 und 3 in den Taschenrechner eingegeben.
      • Wenn beschreibt, dass wir auf die Schaltfläche „add“ gedrückt haben, um die Zahlen zu addieren.
      • Dann beschreibt das erwartete Ergebnis, nämlich dass das Ergebnis auf dem Bildschirm 5 sein sollte.
    • Die Schritte können auch mit Und und Aber kombiniert werden, um die Lesbarkeit und Verständlichkeit des Szenarios zu erhöhen. In diesem Beispiel haben wir Und verwendet, um anzugeben, dass wir beide Zahlen in den Taschenrechner eingegeben haben.

    Keywords (deutsch, Schlüsselwörter)

    Keywords Beschreibung
    Englisch Deutsch
    Die primary (deutsch, Primäre) Keywords sind:
    Feature Funktionalität/Funktion Beschreibt das zu testende Feature/Funktionalität.
    Background Hintergrund Beschreibt die Schritte, die vor jedem Szenario ausgeführt werden sollen.
    Scenario Szenario Beschreibt ein Szenario für einen Testfall.
    Scenario Outline Szenario-Ablaufplan Beschreibt eine Vorlage für Szenarien mit Platzhaltern, die durch Beispiele in einer Tabelle ersetzt werden können.
    Examples Beispiele Beschreibt eine Tabelle mit Beispielen, die in einen Scenario Outline eingefügt werden können, um verschiedene Szenarien zu erstellen.
    Given Gegeben/Angenommen Beschreibt den Anfangszustand oder die Voraussetzung, die für den Testfall erfüllt sein muss.
    When Wenn Beschreibt die Aktion, die ausgeführt wird, um das Verhalten des Systems zu testen.
    Then Dann Beschreibt das erwartete Ergebnis oder Verhalten des Systems, nachdem die Aktion ausgeführt wurde.
    And Und Verwendet, um zusätzliche Schritte hinzuzufügen, die dieselbe Art von Aktion oder Erwartung beschreiben wie der vorherige Schritt.
    But Aber Verwendet, um einen Schritt hinzuzufügen, der das Gegenteil von dem beschreibt, was im vorherigen Schritt erwartet wurde.
    Rule Regel Verwendet, um einen Schritt hinzuzufügen, der das Gegenteil von dem beschreibt, was im vorherigen Schritt erwartet wurde.
    Es gibt auch einige Secondary (deutsch, Sekundäre) Keywords:
    """ Doc Strings: Mehrzeilige Textblöcke, die zur Dokumentation von Szenarien oder Steps verwendet werden.
    | Data Tables: Tabellen, die verwendet werden, um Daten in Szenarien oder Steps darzustellen.
    @ Tags: Schlüsselwörter, die verwendet werden, um Szenarien oder Features zu markieren und zu organisieren.
    # Comments: Text, der zur Dokumentation oder Beschreibung von Szenarien oder Steps verwendet wird, jedoch von der Ausführung des Codes ausgeschlossen ist.

    Weitere Beispiele

    1. Anmeldung an einer Webseite:
    Funktion: Anmeldung
      Szenario: Erfolgreiche Anmeldung
        Angenommen ich befinde mich auf der Anmeldeseite
        Wenn ich meine gültigen Anmeldeinformationen eingebe
        Und ich auf Anmelden klicke
        Dann sollte ich auf die Startseite weitergeleitet werden
    1. Produkts aus dem Warenkorb nehmen:
    Feature: Warenkorb
      Hintergrund:
        Angenommen ich bin auf der Produktseite
        Und ich habe ein Produkt in den Warenkorb gelegt
    
      Szenario: Entfernen eines Produkts aus dem Warenkorb
        Angenommen ich habe den Warenkorb geöffnet
        Wenn ich das Produkt aus dem Warenkorb entferne
        Dann sollte der Warenkorb leer sein
    1. Suchfunktion:
    Feature: Suchfunktion
      Szenario: Suchergebnisse anzeigen
        Angenommen ich befinde mich auf der Startseite
        Wenn ich in das Suchfeld "Schuhe" eingebe
        Und ich auf die Suchschaltfläche klicke
        Dann sollte ich eine Liste von Schuhen sehen
        Und die Liste sollte mindestens ein Ergebnis enthalten

    Links

    • https://cucumber.io/: Cucumber.io ist die offizielle Website von Cucumber und bietet umfassende Informationen zu Cucumber, Dokumentation, Schulungen und vieles mehr.
    • https://cucumber.io/docs/gherkin/ : Eine umfassende Referenz für die Gherkin-Syntax. Die Seite enthält eine Liste von Schlüsselwörtern, die in Gherkin-Tests verwendet werden können, sowie Beispiele für die Verwendung von Gherkin in verschiedenen Kontexten.
    • https://de.wikipedia.org/wiki/Behavior_Driven_Development: Der Wikipedia-Artikel über Behavior Driven Development (BDD) beschreibt die Konzepte und Methoden hinter BDD, einschließlich der Verwendung von Gherkin und Cucumber.
    • https://de.wikipedia.org/wiki/Cucumber_(Software) : Wikipedia-Artikel über das Cucumber-Tool, welches Testautomatisierung und BDD (Behavior Driven Development) ermöglicht. Der Artikel bietet Informationen über die Geschichte, Funktionen und Verwendung von Cucumber.
    • https://www.testautomatisierung.org/lexikon/gherkin/ : Dieser Link führt zu einem Eintrag im Lexikon der Website Testautomatisierung.org. Der Eintrag bietet eine kurze Einführung in die Gherkin-Sprache und erklärt ihre Verwendung in der Testautomatisierung. Der Eintrag enthält auch einige Beispiele für die Verwendung von Gherkin in der Praxis.

    One thought on “Was ist »Gherkin« und wie verwende ich »Gherkin«? – Mit Beispielen

    1. Danke für diese hilfreiche Seite. Mir ist aufgefallen:
      „Durch die Syntax der Sprache können Anforderungen und Testfälle in einer einfachen und konsistenten Weise zu kommunizieren, ohne dass es zu Missverständnissen kommt, als Teil des BDD (Behavior Driven Development) Prozess.“ – dieser Satz ist unverständlich.
      „But“ und „Rule“ haben dieselbe Beschreibung:
      „Verwendet, um einen Schritt hinzuzufügen, der das Gegenteil von dem beschreibt, was im vorherigen Schritt erwartet wurde.“
      Bei „Rule“ würde ich mir eine andere Beschreibung erwarten, sonst wäre die Fallunterscheidung nicht notwendig.

    Schreibe einen Kommentar

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