Gherkin Language: Format, Syntax & Gherkin Test in Cucumber

Vad är Gherkin Language?

Gurka är ett affärsläsbart språk som hjälper dig att beskriva affärsbeteende utan att gå in på detaljer om implementering. Det är ett domänspecifikt språk för att definiera tester i Cucumber format för specifikationer. Den använder klarspråk för att beskriva användningsfall och tillåter användare att ta bort logiska detaljer från beteendetester.

Texten på Gherkin-språket fungerar som dokumentation och skelett av dina automatiserade tester. Gherkin-formatet är baserat på TreeTop Grammar som finns på 37+ språk. Därför kan du skriva din gurka på 37+ talade språk.

Detta skript tjänar två primära syften:

  • Dokumenterar användarscenarier
  • Skriva ett automatiserat test (BDD)

Varför gurka?

Behovet av gurka kan enkelt förklaras med följande bilder

Före gurka

Före gurka

Efter gurka

Efter gurka

gurka syntax

Gurkin är linjeorienterat språk precis som YAML och Python. Varje rad kallas steg och börjar med nyckelord och slutet av terminalerna med ett stopp. Tab eller mellanslag används för indraget.

I det här skriptet kan en kommentar läggas till var du vill, men den bör börja med ett #-tecken. Den läste varje rad efter att ha tagit bort Ghrekins nyckelord som givna, när, sedan, etc.

Typiska gurkasteg ser ut

Gherkin Scripts: kopplar det mänskliga konceptet orsak och verkan till mjukvarukonceptet input/process/output.

gurka syntax

Feature: Title of the Scenario
Given [Preconditions or Initial Context]
When [Event or Trigger]
Then [Expected output]

Ett Gherkin-dokument har filtillägget .feature och helt enkelt bara en testfil med ett snyggt tillägg. Cucumber läser Gherkin-dokumentet och kör ett test för att verifiera att programvaran fungerar enligt Gherkin-syntaxen.

Viktiga termer som används i Gherkin

  • Leverans
  • Bakgrund
  • Scenario
  • Med tanke på
  • När
  • Sedan
  • Och
  • Men
  • Exempel på scenarier

Namnkonventionen används för egenskapsnamn. Det finns dock inga fasta regler i Cucumber om namn.

Leverans

Filen ska ha filtillägget .feature och varje funktionsfil ska bara ha en funktion. Funktionsnyckelordet är med funktionen: och efter det lägg till kommer ett mellanslag och namn på funktionen att skrivas.

Scenario

Varje funktionsfil kan ha flera scenarier, och varje scenario börjar med Scenario: följt av scenarionamn.

Bakgrund

Bakgrundsnyckelord hjälper dig att lägga till lite sammanhang till scenariot. Det kan innehålla några steg i scenariot, men den enda skillnaden är att det ska köras före varje scenario.

Med tanke på

Användningen av Givet nyckelord är att sätta systemet i ett bekant tillstånd innan användaren börjar interagera med systemet. Du kan dock utelämna att skriva användarinteraktioner i givna steg om det ges i steget "Förutsättning".

Syntax:

Given
Given - a test step that defines the 'context
Given I am on "/."

När

När steget är att definiera åtgärd som utförs av användaren.

Syntax:

When
A When - a test step that defines the 'action' performed
When I perform "Sign In."

Sedan

Användningen av nyckelordet "då" är att se Resultatet efter åtgärden i när steg. Du kan dock bara verifiera märkbara förändringar.

Syntax:

 Then
Then - test step that defines the 'outcome.'
Then I should see "Welcome Tom."

Och men

Du kan ha flera givet när eller då.

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."

Givet, när, då och, men är teststeg. Du kan använda dem omväxlande. Tolken visar inget fel. Men de kommer säkerligen inte att göra någon "förnuft" när de läses.

Viktiga termer som används i Gherkin
Viktiga termer som används i Gherkin
Given The login page is opening
When I input username, password and click the Login button 
Then I am on the Homepage

gurka exempel

Exempel 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 

Scenariot som nämns ovan är en funktion som kallas användarinloggning.

Gherkin kommer att analysera varje steg som skrivits i stegdefinitionsfilen. Därför ges stegen i funktionsfilen och stegdefinitionsfilen bör matcha.

Exempel 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 

Bästa metoder för att använda gurka

  • Varje scenario bör köras separat
  • Varje funktion bör kunna exekveras tillsammans
  • Steginformation ska visas oberoende
  • Anslut dina scenarier med dina krav
  • Håll koll på vilka scenarier som bör ingå i ett kravdokument
  • Skapa modulära och lättförståeliga steg
  • Försök att kombinera alla dina vanliga scenarier

Fördelar med gurka

  • Gherkin är tillräckligt enkelt för icke-programmerare att förstå
  • Programmerare kan använda det som en mycket solid bas för att starta sina tester
  • Det gör User Stories lättare att smälta
  • Gherkin script kan lätt förstås av företagsledare och utvecklare
  • Gherkin Testing riktar sig mot affärskraven
  • En betydande del av funktionsspecifikationerna är skrivna som användarberättelser
  • Du behöver inte vara expert för att förstå det lilla kommandouppsättningen Gherkin
  • Gherkin Testfall kopplar acceptanstest direkt till automatiserade tester
  • Skrivstilstestfall är lättare att återanvända kod i andra test

Nackdelar med gurka

  • Det kräver en hög nivå av affärsengagemang och samarbeten
  • Kanske inte fungerar bra i alla scenarier
  • Dåligt skrivna tester kan lätt öka kostnaderna för testunderhåll

Sammanfattning

  • Gurkin är formatet för gurkaspecifikationer
  • Gurkin är linjeorienterat språk precis som YAML och Python
  • Gherkin Scripts kopplar det mänskliga begreppet orsak och verkan till mjukvarukonceptet input/process och output
  • Feature, Background, Scenario, Given, When, Then, And But används viktigt i gurka
  • I Gherkin bör varje scenario köras separat
  • Den största fördelen med Gherkin är enkel nog för icke-programmerare att förstå
  • Gherkin Test kanske inte fungerar bra i alla typer av scenarier