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