Gherkin Language: Format, Syntaks & Gherkin Test in Cucumber

Hva er Gherkin Language?

Gherkin er et forretningslesbart språk som hjelper deg med å beskrive forretningsatferd uten å gå inn på detaljer om implementering. Det er et domenespesifikt språk for å definere tester i Cucumber format for spesifikasjoner. Den bruker vanlig språk for å beskrive brukstilfeller og lar brukere fjerne logiske detaljer fra atferdstester.

Teksten på Gherkin-språk fungerer som dokumentasjon og skjelett for dine automatiserte tester. Gherkin-formatet er basert på TreeTop Grammar som finnes på 37+ språk. Derfor kan du skrive agurken din på 37+ talespråk.

Dette skriptet tjener to hovedformål:

  • Dokumenterer brukerscenarier
  • Skrive en automatisert test (BDD)

Hvorfor Agerkin?

Behovet for Agurkin kan enkelt forklares ved å følge bilder

Før Agurk

Før Agurk

Etter Agurkin

Etter Agurkin

Agurk syntaks

Agurk er linjeorientert språk akkurat som YAML og Python. Hver linje kalles trinn og starter med nøkkelord og slutten av terminalene med et stopp. Tab eller mellomrom brukes for innrykk.

I dette skriptet kan en kommentar legges til hvor som helst du vil, men den bør starte med et #-tegn. Den leste hver linje etter å ha fjernet Ghrekins nøkkelord som gitt, når, da osv.

Typiske Agerkin-trinn ser ut

Gherkin Scripts: kobler det menneskelige begrepet årsak og virkning til programvarekonseptet input/prosess/output.

Agurk syntaks

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

Et Gherkin-dokument har en utvidelse .funksjon og rett og slett bare en testfil med en fancy filtype. Cucumber leser Gherkin-dokumentet og utfører en test for å validere at programvaren oppfører seg i henhold til Gherkin-syntaksen.

Viktige begreper brukt i Agurk

  • Trekk
  • Bakgrunn
  • Scenario
  • Gitt
  • Når
  • Deretter
  • Og
  • Men
  • Eksempler på scenarier

Navnekonvensjonen brukes for funksjonsnavn. Det er imidlertid ingen faste regler Cucumber om navn.

Trekk

Filen skal ha filtypen .feature og hver funksjonsfil skal bare ha én funksjon. Funksjonsnøkkelordet er med funksjonen: og etter det legge til, vil et mellomrom og navn på funksjonen bli skrevet.

Scenario

Hver funksjonsfil kan ha flere scenarier, og hvert scenario starter med Scenario: etterfulgt av scenarionavn.

Bakgrunn

Bakgrunnsnøkkelord hjelper deg å legge til litt kontekst til scenariet. Det kan inneholde noen trinn i scenariet, men den eneste forskjellen er at det skal kjøres før hvert scenario.

Gitt

Bruken av gitt nøkkelord er å sette systemet i en kjent tilstand før brukeren begynner å samhandle med systemet. Du kan imidlertid utelate å skrive brukerinteraksjoner i gitte trinn hvis gitt i trinnet "Forutsetning".

Syntaks:

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

Når

Når trinnet er å definere handling utført av brukeren.

Syntaks:

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

Deretter

Bruken av "da" søkeord er å se utfall etter handlingen i når trinn. Du kan imidlertid bare bekrefte merkbare endringer.

Syntaks:

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

Og & Men

Du kan ha flere gitt når eller da.

Syntaks:

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

Gitt, Når, Da, og, men er testtrinn. Du kan bruke dem om hverandre. Tolken viser ingen feil. Imidlertid vil de garantert ikke gi noen "fornuft" når de leses.

Viktige begreper brukt i Agurk
Viktige begreper brukt i Agurk
Given The login page is opening
When I input username, password and click the Login button 
Then I am on the Homepage

Eksempler på Agurk

Eksempel 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 

Scenarioet nevnt ovenfor er en funksjon som kalles brukerinnlogging.

Gherkin vil analysere hvert trinn skrevet i trinndefinisjonsfilen. Derfor er trinnene gitt i funksjonsfilen og trinndefinisjonsfilen skal samsvare.

Eksempel 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 

Beste fremgangsmåter for å bruke Agerkin

  • Hvert scenario bør kjøres separat
  • Hver funksjon skal kunne utføres sammen
  • Informasjon om trinn skal vises uavhengig
  • Koble scenariene dine til dine krav
  • Hold oversikt over hvilke scenarier som bør inkluderes i et kravdokument
  • Lag modulære og enkle å forstå trinn
  • Prøv å kombinere alle vanlige scenarier

Fordeler med Agurkin

  • Agurk er enkelt nok for ikke-programmerere å forstå
  • Programmerere kan bruke det som en veldig solid base for å starte testene sine
  • Det gjør User Stories lettere å fordøye
  • Gherkin script kan lett forstås av bedriftsledere og utviklere
  • Gherkin Testing retter seg mot forretningskravene
  • En betydelig andel av funksjonsspesifikasjonene er skrevet som brukerhistorier
  • Du trenger ikke være ekspert for å forstå det lille Gherkin-kommandosettet
  • Gherkin-testsaker kobler aksepttester direkte til automatiserte tester
  • Det er lettere å gjenbruke kode i andre tester

Ulemper med Agurk

  • Det krever et høyt nivå av forretningsengasjement og samarbeid
  • Fungerer kanskje ikke bra i alle scenarier
  • Dårlig skriftlige tester kan lett øke kostnadene for testvedlikehold

Sammendrag

  • Agurkin er formatet for agurkspesifikasjoner
  • Agurk er linjeorientert språk akkurat som YAML og Python
  • Gherkin Scripts kobler det menneskelige konseptet årsak og virkning til programvarekonseptet input/prosess og output
  • Funksjon, Bakgrunn, Scenario, Gitt, Når, Da og Men er viktigst brukt i Agurk
  • I Gherkin bør hvert scenario kjøres separat
  • Den største fordelen med Gherkin er enkel nok for ikke-programmerere å forstå
  • Agurktest fungerer kanskje ikke bra i alle typer scenarier