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