Gherkin Language: Syntax, format och exempel

โšก Smart sammanfattning

Gherkin รคr ett affรคrslรคsbart sprรฅk som beskriver programvarubeteende utan implementeringsdetaljer. Det anvรคnder nyckelorden Given, When och Then fรถr att definiera Cucumber testscenarier i enkelt sprรฅk, som fungerar som levande dokumentation och skelettet fรถr automatiserade BDD-tester.

  • ๐Ÿ“ Klartext: Gherkin beskriver beteende sรฅ att icke-programmerare kan lรคsa och skriva tester.
  • ๐Ÿฅ’ Cucumber: Cucumber lรคser .feature-filer och kรถr Gherkin-stegen som tester.
  • ๐Ÿ”‘ Givet-Nรคr-Sedan: Givet sรคtter kontext, Nรคr utlรถser en handling, Sedan hรคvdar resultatet.
  • ๐Ÿงฑ Nyckelord: Funktion, Bakgrund, Scenario, Och och Men strukturerar varje scenario.
  • โœ… Bรคsta praxis: Hรฅll varje scenario oberoende och beskriv vad, inte hur.
  • ๐Ÿค– AI-hjรคlp: AI-verktyg utarbetar Givet-Nรคr-Sedan-scenarier frรฅn enkla krav.

Gurkasprรฅk i Cucumber

Vad รคr Gherkin Language?

Gurka รคr ett affรคrsmรคssigt lรคsbart sprรฅk som hjรคlper dig att beskriva affรคrsbeteende utan att gรฅ in pรฅ implementeringsdetaljer. Det รคr ett domรคnspecifikt sprรฅk fรถr att definiera tester i Cucumber format. Den anvรคnder ett enkelt sprรฅk fรถr att beskriva anvรคndningsfall och lรฅter anvรคndare ta bort logiska detaljer frรฅn beteendetester.

Texten i Gherkin fungerar som dokumentation och som skelett fรถr dina automatiserade tester. Gherkin-formatet รคr baserat pรฅ TreeTop Grammar, som finns pรฅ fler รคn 37 sprรฅk, sรฅ du kan skriva Gherkin pรฅ รถver 37 talade sprรฅk. Skriptet tjรคnar tvรฅ huvudsakliga syften: det dokumenterar anvรคndarscenarier och det utgรถr grunden fรถr att skriva automatiserade BDD-tester.

Varfรถr gurka?

Utan ett gemensamt, enkelt sprรฅkformat beskriver affรคrs- och teknikteam kraven pรฅ olika sรคtt, vilket orsakar missfรถrstรฅnd. Gherkin ger alla ett enda, strukturerat ordfรถrrรฅd som lรคses som vanlig engelska men som kopplas direkt till kรถrbara tester.

gurka syntax

Gherkin รคr ett radorienterat sprรฅk, precis som YAML och PythonVarje rad kallas ett steg och bรถrjar med ett nyckelord. Tabbar eller mellanslag anvรคnds fรถr indentering. En kommentar kan lรคggas till var som helst men mรฅste bรถrja med ett #-tecken. Tolkaren lรคser varje rad efter att ha tagit bort Gherkin-nyckelord som Givet, When och Then.

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

Ett Gherkin-dokument har filรคndelsen .feature och รคr helt enkelt en testfil med en beskrivande filรคndelse. Cucumber lรคser Gherkin-dokumentet och kรถr ett test fรถr att validera att programvaran beter sig som Gherkin-syntaxen beskriver.

Viktiga termer som anvรคnds i gurka

De viktigaste nyckelorden รคr Funktion, Bakgrund, Scenario, Givet, Nรคr, Sedan, Och, Men och Scenarioรถversikt. Cucumber har inga strikta namnregler, men en tydlig namnkonvention hjรคlper.

Leverans

Filen ska ha tillรคgget .feature, och varje featurefil ska endast beskriva en feature. Nyckelordet Feature bรถrjar med Sรคrdrag: fรถljt av ett mellanslag och funktionsnamnet.

Scenario

Varje funktionsfil kan ha flera scenarier, och varje scenario bรถrjar med Scenario: fรถljt av scenarionamnet.

Bakgrund

Nyckelordet Bakgrund lรคgger till sammanhang till scenariot. Det kan innehรฅlla steg som delas av varje scenario; skillnaden รคr att dessa steg kรถrs fรถre varje scenario.

Med tanke pรฅ

Nyckelordet Given fรถrsรคtter systemet i ett kรคnt tillstรฅnd innan anvรคndaren bรถrjar interagera med det. Det definierar fรถrutsรคttningen eller kontexten:

Given I am on "/."

Nรคr

Nyckelordet When definierar den รฅtgรคrd som utfรถrs av anvรคndaren:

When I perform "Sign In."

Sedan

Nyckelordet Then definierar resultatet som observeras efter รฅtgรคrden i steget When. Du bรถr endast verifiera mรคrkbara fรถrรคndringar:

Then I should see "Welcome Tom."

Och men

Du kan ha flera steg: Givet, Nรคr eller Sedan. Nyckelorden Och och Men lรคgger till extra steg fรถr lรคsbarhet:

And I enter "EmailAddress" with "tomjohn@gmail.com."
But I should see "Welcome Tom."

Givet, Nรคr, Sedan, Och och Men รคr alla teststeg. Tolkaren genererar inte ett fel om du byter mellan dem, men scenariot kommer inte att lรคsas rimligt, sรฅ anvรคnd varje nyckelord fรถr dess avsedda syfte.

gurka exempel

Exempel 1: En inloggningsfunktion fรถr ett socialt nรคtverk.

Feature: Login functionality of a social networking site
  Given I am a registered user
  When I enter my username
  And I enter my password
  Then I should be redirected to the home page

Gherkin analyserar varje steg som skrivs i funktionsfilen, och stegen i funktionsfilen mรฅste matcha de i stegdefinitionsfilen.

Exempel 2: Ett anvรคndarautentiseringsscenario med en bakgrund.

Feature: User Authentication

Background:
  Given the user is already registered on the website

Scenario: Successful login
  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

Bรคsta praxis fรถr att anvรคnda gurka

  • Varje scenario bรถr utfรถras separat och oberoende.
  • Varje funktion ska kunna kรถras pรฅ egen hand.
  • Steginformation bรถr visas separat.
  • Koppla dina scenarier till dina krav och track vilka scenarier som hรถr till varje krav.
  • Skapa modulรคra, lรคttfรถrstรฅeliga steg och kombinera vanliga scenarier.
  • Beskriv vad systemet gรถr, inte hur det gรถr det.

Fรถrdelar med gurka

  • Gherkin รคr enkelt nog fรถr icke-programmerare att fรถrstรฅ.
  • Programmerare kan anvรคnda det som en solid bas fรถr att starta sina tester.
  • Det gรถr anvรคndarberรคttelser lรคttare att smรคlta och riktar in sig pรฅ affรคrskrav.
  • Fรถretagsledare och utvecklare kan bรฅda lรคsa samma skript.
  • Ghurkin-testfall lรคnkar acceptanstester direkt till automatiserade tester.
  • Skrivstilen gรถr det enklare att รฅteranvรคnda kod i olika tester.

Nackdelar med gurka

  • Det krรคver en hรถg nivรฅ av affรคrsengagemang och samarbete.
  • Det kanske inte fungerar bra i alla scenarier.
  • Dรฅligt skrivna tester kan รถka kostnaden fรถr testunderhรฅll.

Vanliga frรฅgor

BDD รคr en agil metod dรคr team beskriver fรถrvรคntat beteende i ett enkelt sprรฅk innan de kodar. Ghurkin-scenarier fรฅngar upp detta beteende sรฅ att bรฅde affรคrs- och tekniker delar en gemensam fรถrstรฅelse.

Gherkin รคr den vanliga syntaxen fรถr att skriva scenarier. Cucumber รคr ett av flera verktyg som lรคser Gherkin .feature-filer och kรถr stegen mot din applikation.

En scenarioรถversikt kรถr samma steg med flera datamรคngder listade under en exempeltabell. Den undviker att duplicera ett scenario fรถr varje uppsรคttning indatavรคrden.

En stegdefinition mappar varje Gherkin-steg till kod som kรถr det. Cucumber lรคser ett steg, hittar den matchande definitionen och kรถr den metoden mot applikationen.

De tre amigos รคr en produktรคgare, en utvecklare och en testare som granskar en funktion tillsammans. Deras kombinerade synsรคtt producerar tydligare och mer kompletta Ghurkin-scenarier รคn nรฅgon enskild roll.

Fรถrutom Cucumber, Gurka stรถds av SpecFlow fรถr .NET och Behave fรถr Python, bland andra BDD-ramverk.

Ja. AI-assistenter omvandlar en anvรคndarberรคttelse till utkast av "Givet-When-Sedan"-scenarier, fรถreslรฅr edge case- och hรฅller formuleringarna konsekventa, รคven om en testare bรถr granska dem fรถr noggrannhet.

AI-verktyg lรคser enkla krav och automatiserar det fรถrsta utkastet av strukturerade Givet-Nรคr-Sedan-steg. Detta snabbar upp skrivandet, men teamen fรถrfinar fortfarande formuleringarna fรถr att matcha verkliga acceptanskriterier.

Sammanfatta detta inlรคgg med: