cucumber gherkin tutorial
In diesem informativen Lernprogramm werden die Vorteile des Gurken-Gurken-Frameworks und das Schreiben von Automatisierungsskripten in Gurkensprache anhand klarer Beispiele erläutert:
Cucumber ist ein Tool, das auf dem BDD-Framework (Behavior Driven Development) basiert. BDD ist eine Methode, um die Funktionalität einer Anwendung in der einfachen Klartextdarstellung zu verstehen.
Das Hauptziel des Behavior Driven Development Frameworks besteht darin, verschiedene Projektrollen wie Business Analysts, Qualitätssicherung, Entwickler usw. dazu zu bringen, die Anwendung zu verstehen, ohne tief in die technischen Aspekte einzutauchen.
Das Gurkenwerkzeug wird im Allgemeinen in Echtzeit verwendet, um Abnahmetests einer Anwendung zu schreiben. Das Gurkentool unterstützt viele Programmiersprachen wie Java, Ruby, .NET usw. Es kann in mehrere Tools wie Selenium, Capybara usw. integriert werden.
Was du lernen wirst:
Was ist Gurke?
Gurke ist die Sprache, die vom Gurkenwerkzeug verwendet wird. Es ist eine einfache englische Darstellung des Anwendungsverhaltens. Cucumber verwendet das Konzept von Feature-Dateien zu Dokumentationszwecken. Der Inhalt der Feature-Dateien ist in Gurkensprache geschrieben.
In den folgenden Themen erfahren Sie mehr über die Vorteile des Cucumber Gherkin-Frameworks, die Integration von Cucumber in Selen, das Erstellen einer Feature-Datei und der entsprechenden Schrittdefinitionsdatei sowie eine Beispiel-Feature-Datei.
Allgemeine Begriffe für Gurken-Gurken-Rahmen
Das Cucumber Gherkin-Framework verwendet bestimmte Schlüsselwörter, die für das Schreiben einer Feature-Datei erforderlich sind.
Die folgenden Begriffe werden am häufigsten in Feature-Dateien verwendet:
# 1) Funktion:
Eine Feature-Datei muss eine allgemeine Beschreibung einer zu testenden Anwendung (AUT) enthalten. Die erste Zeile der Feature-Datei muss mit dem Schlüsselwort 'Feature' beginnen, das der Beschreibung von folgteine Bewerbungim Test. Gemäß den von Cucumber vorgeschriebenen Standards muss die Feature-Datei die ersten drei Elemente als erste Zeile enthalten.
- Funktionsschlüsselwort
- Funktionsname
- Funktionsbeschreibung (optional)
Auf das Feature-Schlüsselwort muss ein Feature-Name folgen. Es kann einen optionalen Beschreibungsabschnitt enthalten, der sich über mehrere Zeilen der Feature-Datei erstrecken kann. Eine Feature-Datei hat die Erweiterung .feature.
# 2) Szenario:
Ein Szenario ist eine Testspezifikation der zu testenden Funktionalität. Im Idealfall kann eine Feature-Datei ein oder mehrere Szenarien als Teil des Features enthalten. Ein Szenario umfasst mehrere Testschritte. Gemäß den Gurkenstandards muss ein Szenario 3-5 Testschritte enthalten, da lange Szenarien dazu neigen, ihre Ausdruckskraft zu verlieren, sobald die Anzahl der Schritte zunimmt.
Ein Szenario kann die folgenden Schritte umfassen:
- Von einem Benutzer auszuführende Aktion.
- Erwartete Ergebnisse der Aktion.
In der Gurkensprache muss ein Szenario die folgenden Schlüsselwörter enthalten:
- Gegeben
- Wann
- Dann
- Und
Gegeben:
Das angegebene Schlüsselwort wird verwendet, um die Voraussetzungen für die Ausführung eines bestimmten Szenarios anzugeben. Ein Szenario kann mehr als eine bestimmte Anweisung enthalten, oder es können keine bestimmten Anweisungen für ein Szenario vorhanden sein.
Wann:
Dieses Schlüsselwort wird verwendet, um die vom Benutzer ausgeführte Aktion oder ein Ereignis anzugeben, z. B. das Klicken auf eine Schaltfläche, das Eingeben von Daten in ein Textfeld usw. In einem Szenario können mehrere when-Anweisungen vorhanden sein.
Dann:
Das Schlüsselwort wird dann verwendet, um das erwartete Ergebnis einer vom Benutzer ausgeführten Aktion anzugeben. Im Idealfall muss auf das Schlüsselwort When das Schlüsselwort Then folgen, um das erwartete Ergebnis von Benutzeraktionen zu verstehen.
Und:
Das Schlüsselwort wird als Konjunktionsschlüsselwort verwendet, um mehrere Anweisungen zu kombinieren. Zum Beispiel, Mehrere Given- und When-Anweisungen in einem Szenario können mit dem Schlüsselwort 'And' kombiniert werden.
# 3) Szenarioübersicht:
Eine Szenarioübersicht ist eine Möglichkeit zur Parametrisierung von Szenarien.
Dies wird idealerweise verwendet, wenn dasselbe Szenario für mehrere Datensätze ausgeführt werden muss, die Testschritte jedoch gleich bleiben. Auf die Szenario-Gliederung muss das Schlüsselwort 'Beispiele' folgen, das den Wertesatz für jeden Parameter angibt.
Im Folgenden finden Sie ein Beispiel zum Verständnis des Konzepts der Szenarioübersicht:
Beispiel:
Szenarioübersicht: Eine Datei hochladen
Gegeben dass sich ein Benutzer auf dem Bildschirm zum Hochladen von Dateien befindet.
Wann Der Benutzer klickt auf die Schaltfläche Durchsuchen.
Und Der Benutzer gibt das Textfeld zum Hochladen ein.
Und Benutzer klickt auf die Eingabetaste.
Dann Überprüft, ob der Datei-Upload erfolgreich ist.
Beispiele:
| Dateiname |
| file1 |
| file2 |
Parameter innerhalb der Szenariokontur müssen mit den Zeichen '' angegeben werden. Eine Liste der Datenwerte für den Parameter muss mit dem Pipe-Symbol (|) angegeben werden.
# 4) Hintergrund:
Das Hintergrundschlüsselwort wird verwendet, um mehrere gegebene Anweisungen in einer einzigen Gruppe zu gruppieren.
Dies wird im Allgemeinen verwendet, wenn in jedem Szenario einer Feature-Datei derselbe Satz gegebener Anweisungen wiederholt wird. Anstatt die angegebenen Anweisungen für jedes Szenario wiederholt anzugeben, können sie vor dem ersten Szenario mit dem Schlüsselwort 'Hintergrund' angegeben werden.
Beispiel:
Hintergrund:
Der angegebene Benutzer befindet sich auf der Anmeldeseite der Anwendung
Vorteile des Gurken-Gurken-Rahmens
Nachstehend sind die Vorteile des Cucumber Gherkin-Frameworks aufgeführt, die Cucumber zu einer idealen Wahl für die sich schnell entwickelnde agile Methodik in der heutigen Unternehmenswelt machen:
- Gurke ist ein Open-Source-Tool.
- Die Darstellung in Klartext erleichtert nicht-technischen Benutzern das Verständnis der Szenarien.
- Es schließt die Kommunikationslücke zwischen verschiedenen Projektbeteiligten wie Business Analysten, Entwicklern und Mitarbeitern der Qualitätssicherung.
- Mit dem Cucumber-Tool entwickelte Automatisierungstestfälle sind einfacher zu warten und zu verstehen.
- Einfache Integration mit anderen Tools wie Selen und Capybara.
Integration von Gurke mit Selen
Gurke und Selen sind die beiden leistungsstärksten Werkzeuge für Funktionstests. Die Integration von Cucumber in Selenium Webdriver hilft verschiedenen nicht-technischen Mitgliedern eines Projektteams, den Anwendungsfluss zu verstehen.
Im Folgenden sind die Schritte aufgeführt, die für die Integration von Cucumber in Selenium Webdriver zu befolgen sind:
Schritt 1:
Cucumber kann durch Herunterladen der erforderlichen JAR-Dateien in den Selenium Webdriver integriert werden.
Im Folgenden finden Sie eine Liste der JAR-Dateien, die für die Verwendung von Cucumber mit Selenium Webdriver heruntergeladen werden sollen:
- Abdeckung-2.1.1.jar
- Gurkenkern-1.2.2.jar
- Gurke-Java-1.2.2.jar
- cucumber-junit-1.2.2.jar
- cucumber-jvm-deps-1.0.3.jar
- Gurken-Berichterstattung-0.1.0.jar
- gherkin-2.12.2.jar
- hamcrest-core-1.3.jar
- junit-4.11.jar
Die oben genannten JAR-Dateien können vom Maven heruntergeladen werden Webseite .
Jede der oben genannten JAR-Dateien muss einzeln von der oben genannten Website heruntergeladen werden.
Schritt 2:
Erstellen Sie ein neues Projekt in Eclipse und fügen Sie dem Projekt die obigen JAR-Dateien hinzu. Um die JAR-Dateien zum Projekt hinzuzufügen, klicken Sie mit der rechten Maustaste auf Projekt -> Erstellungspfad -> Erstellungspfad konfigurieren.
Klicke auf Fügen Sie externe JARs hinzu Klicken Sie auf die Schaltfläche und fügen Sie die Liste der oben genannten JAR-Dateien zum Projekt hinzu.
Schritt 3:
Bevor wir die Feature-Dateien und Schrittdefinitionsdateien erstellen, müssen wir ein Natural-Plugin in Eclipse installieren. Dies kann durch Kopieren und Einfügen von erfolgen URL auf zu Hilfe -> Neue Software installieren -> URL
Klicke auf das Nächster Knopf um das Plugin in Eclipse zu installieren.
Erstellen einer Feature-Datei
Erstellen Sie separate Ordner für Feature-Dateien und Schrittdefinitionsdateien in der Projektstruktur. Schrittdefinitionsdateien enthalten Java-Codierungszeilen, während die Feature-Datei englische Anweisungen in Form der Gherkin-Sprache enthält.
- Erstellen Sie einen separaten Ordner zum Speichern der Feature-Datei, indem Sie mit der rechten Maustaste auf das Projekt klicken -> Neu -> Paket .
- Die Feature-Datei kann erstellt werden, indem Sie mit der rechten Maustaste auf das Projekt / Paket -> klicken Neu -> Datei .
- Geben Sie einen Namen für die Feature-Datei ein. Auf die Feature-Datei muss die Erweiterung .feature folgen
- Die Projektstruktur muss wie folgt aussehen.
Erstellen einer Schrittdefinitionsdatei
Jeder Schritt der Feature-Datei muss einer entsprechenden Schrittdefinition zugeordnet werden. Tags, die in der Cucumber Gherkin-Datei verwendet werden, müssen mithilfe der Tags @Given, @When und @Then ihrer Schrittdefinition zugeordnet werden.
Das Folgende ist die Syntax einer Schrittdefinitionsdatei:
Syntax:
@TagName ('^ Schrittname $')
Public void methodName ()
{
Methodendefinition
}}
Was ist Alpha-Test beim Testen von Software?
Schrittnamen müssen mit dem Symbol Karat (^) und dem Symbol ($) versehen werden. Der Methodenname kann ein beliebiger gültiger Name sein, der gemäß den Java-Codierungsstandards akzeptabel ist. Die Methodendefinition umfasst Codierungsanweisungen in Java oder einer anderen Programmiersprache nach Wahl des Testers.
Beispiele für Funktionsdateien und Schrittdefinitionsdateien
Zum Erstellen einer Feature-Datei und einer Schrittdefinitionsdatei kann das folgende Szenario verwendet werden:
Szenario:
- Öffnen Sie die Anmeldeseite einer zu testenden Anwendung.
- Geben Sie den Benutzernamen ein
- Geben Sie das Passwort ein
- Klicken Sie auf die Schaltfläche Anmelden.
- Überprüfen Sie, ob die Benutzeranmeldung erfolgreich ist.
Feature-Datei:
Das obige Szenario kann wie folgt in Form einer Feature-Datei geschrieben werden:
Merkmal: Melden Sie sich bei einer zu testenden Anwendung an.
Szenario: Melden Sie sich bei der Anwendung an.
Gegeben Öffnen Sie den Chrome-Browser und starten Sie die Anwendung.
Wann Der Benutzer gibt den Benutzernamen in das Feld Benutzername ein.
Und Der Benutzer gibt ein Passwort in das Feld Passwort ein.
Wann Der Benutzer klickt auf die Schaltfläche Anmelden.
Schrittdefinitionsdatei:
In der obigen Funktion kann eine Datei wie unten gezeigt der entsprechenden Schrittdefinitionsdatei zugeordnet werden. Bitte beachten Sie, dass eine Test-Runner-Datei erstellt werden muss, um eine Verknüpfung zwischen der Feature-Datei und der Schrittdefinitionsdatei herzustellen.
Unten finden Sie die Darstellung der Schrittdefinitionsdatei gemäß ihrer Feature-Datei.
package com.sample.stepdefinitions; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import cucumber.api.java.en.And; import cucumber.api.java.en.Given; import cucumber.api.java.en.When; public class StepDefinition { WebDriver driver; @Given('^Open Chrome browser and launch the application$') public void openBrowser() { driver = new ChromeDriver(); driver.manage().window().maximize(); driver.get('www.facebook.com'); } @When('^User enters username onto the UserName field$') public void enterUserName() { driver.findElement(By.name('username')).sendKeys('test@demo.com'); } @And('^User enters password onto the Password field$') public void enterPassword() { driver.findElement(By.name('password')).sendKeys('test@123'); } @When('^User clicks on Login button$') public void clickOnLogin() { driver.findElement(By.name('loginbutton')).click(); } }
Die TestRunner-Klasse wird verwendet, um die Verknüpfung zwischen der Feature-Datei und der Schrittdefinitionsdatei bereitzustellen. Unten finden Sie eine Beispieldarstellung, wie die TestRunner-Klasse aussieht. Eine TestRunner-Klasse ist im Allgemeinen eine leere Klasse ohne Klassendefinition.
Package com.sample.TestRunner import org.junit.runner.RunWith; import cucumber.api.CucumberOptions; import cucumber.api.junit.Cucumber; @RunWith(Cucumber.class) @CucumberOptions(features='Features',glue={'StepDefinition'}) public class Runner { }
Wir müssen die TestRunner-Klassendatei ausführen, um Feature-Dateien und Schrittdefinitionsdateien auszuführen.
Beispiele
Unten finden Sie die Darstellung der Feature-Datei verschiedener Szenarien.
Beispiel 1:
So überprüfen Sie, ob der Benutzername und das Kennwort auf der Anmeldeseite verfügbar sind:
Merkmal: Überprüfen Sie die Anzeige der Felder für Benutzername und Kennwort auf einer Anmeldeseite.
Szenario: So überprüfen Sie die Anzeige von Benutzernamen- und Kennwortfeldern.
Gegeben Der Benutzer öffnet den Firefox-Browser und navigiert zur zu testenden Anwendung.
Wann Der Benutzer navigiert zu einer Anmeldeseite.
Dann Überprüfen Sie die Anzeige des Felds Benutzername auf der Anmeldeseite.
Und Überprüfen Sie die Anzeige des Kennwortfelds auf der Anmeldeseite.
Beispiel 2:
Unten finden Sie ein Beispiel für ein Szenario-Gliederungsschlüsselwort in Cucumber Gherkin:
Merkmal: Überprüfen Sie, ob die Anmeldung für mehrere Testdatensätze erfolgreich war.
Szenarioübersicht: So überprüfen Sie, ob die Anmeldung für mehrere Testdatensätze erfolgreich ist
Gegeben Öffnen Sie den Chrome-Browser und starten Sie die Anwendung.
Wann Der Benutzer gibt das Feld Benutzername ein.
Und Der Benutzer gibt das Feld Passwort ein.
Wann Der Benutzer klickt auf die Schaltfläche Anmelden.
Beispiele:
| Benutzername | Passwort |
| user1 | password1 |
| user2 | password2 |
Fazit
- BDD ist eine Methode, um die Funktionalität einer Anwendung in einfacher Klartextdarstellung zu verstehen.
- Cucumber ist ein Tool, das mithilfe der verhaltensgesteuerten Entwicklung Abnahmetests für eine Anwendung schreibt. Es wird verwendet, um die Kommunikationslücke zwischen verschiedenen Projektbeteiligten zu schließen.
- Die Hauptverwendung von Cucumber liegt in seiner Einfachheit, die Verwendung von Feature-Dateien durch nicht-technische Benutzer zu verstehen.
Es ist noch nicht zu spät, dieses Gurken-Tool in Gurkensprache auszuprobieren.
Literatur-Empfehlungen
- Geb Tutorial - Browser Automation Testing Using Geb Tool
- Cucumber Selenium Tutorial: Integration von Cucumber Java Selenium WebDriver
- Automatisierungstests mit Gurkenwerkzeug und Selen - Selen-Tutorial Nr. 30
- Was ist Automatisierungstest? (Ultimativer Leitfaden zum Starten der Testautomatisierung)
- Spock Tutorial: Testen mit Spock und Groovy
- Beste Software-Test-Tools 2021 (QA Test Automation Tools)
- Tutorial für zerstörende Tests und zerstörungsfreie Tests
- Funktionstests gegen nichtfunktionale Tests