Sök…


Introduktion

Gherkin är ett företagsläsbart språk för testautomation och testdokumentation. Det förstås av Cucumber och finns tillsammans som ett beteendedriven utvecklingsverktyg.

Syntax

  • Funktion: det här sökordet anger att det följande är en grundläggande beskrivning eller namn på funktionen som testas eller dokumenteras.
  • Bakgrund: det här sökordet anger steg som kommer att köras före varje scenario i funktionen.
  • Scenario: detta sökord representerar namnet eller den grundläggande beskrivningen av ett visst scenario som testar funktionen.
  • Scenarioöversikt: Detta nyckelord innebär att scenariot körs N gånger för varje argument som listas i exempel som uttryckligen passeras av kolumnnamn inslagna i vinklade parenteser.
  • Exempel: detta nyckelord noterar listan med statiska argument som kommer att skickas in i ett scenarioöversikt.
  • Givet: detta nyckelord representerar ett givet steg eller en förutsättning som antas innan du fortsätter. I Arrange, Act, Assert paradigm, given representerar "Arranger".
  • När: detta nyckelord representerar ett när-steg, eller det beteende som ska påstås. I Arrange, Act, Assert paradigm, given representerar "Act".
  • Sedan: detta nyckelord representerar ett dåvarande steg, eller med andra ord, steget där ett beteendes resultat valideras. I Arrange, Act, Assert paradigm, given representerar "Assert".
  • Och: Detta nyckelord används tillsammans med något av ovanstående nyckelord. Om du har två givna uttalanden, istället för att uttryckligen ringa Givet två gånger, kan du säga "Givet A och B".

Det grundläggande

Detta exempel kommer att gå igenom den grundläggande strukturen i en gurksfunktionsfil i Gherkin. Funktionsfiler använder flera nyckelord i grundsyntaxen.

Låt oss titta på de grundläggande nyckelorden:

  • Funktion: det här sökordet anger att det följande är en grundläggande beskrivning eller namn på funktionen som testas eller dokumenteras.
  • Scenario: detta sökord representerar namnet eller den grundläggande beskrivningen av ett visst scenario som testar funktionen.
  • Med tanke på att detta nyckelord representerar ett givet steg eller förutsättning som antas innan du fortsätter. I Arrange, Act, Assert paradigm, given representerar "Arranger".
  • När detta nyckelord representerar ett när-steg, eller det beteende som ska påstås. I Arrange, Act, Assert paradigm, given representerar "Act".
  • Sedan representerar detta nyckelord ett dåvarande steg, eller med andra ord, steget där ett beteendes resultat valideras. I Arrange, Act, Assert paradigm, given representerar "Assert".
  • Och detta nyckelord används tillsammans med något av ovanstående nyckelord. Om du har två givna uttalanden, istället för att uttryckligen ringa Givet två gånger, kan du säga "Givet A och B".
  • Men detta nyckelord används i samband med given , när och sedan för att beteckna att något inte ska hända. Då A Men not B.

Alla nyckelord måste finnas på en ny rad och måste vara det första ordet på en ny rad för att kunna identifieras av Gherkin-tolkaren. Funktionerna och sökorden måste ha en kolon direkt efter, vilket uttrycks i exemplet nedan. Givet, när, då, och inte kräver kolon.

Förutom nyckelord kan du skriva beskrivningar och kommentarer. Beskrivningar förekommer efter nyckelordet men på samma rad, där kommentarer förekommer på rader under nyckelorden. När du skriver funktionskommentarer är det vanligt att tillhandahålla uttryckliga regler som beskriver kanter och förhållanden som leder till olika resultat av beteenden.

Feature: Product Login
    As a user, I would like to be able to use my credentials to successfully 
    login. 
    
    Rules:
    - The user must have a valid username
    - The user must have a valid password
    - The user must have an active subscription 
    - User is locked out after 3 invalid attempts
    - User will get a generic error message following 
      login attempt with invalid credentials 

    Scenario: The user successfully logs in with valid credentials 
        This scenario tests that a user is able to successfully login
        provided they enter a valid username, valid password, and 
        currently have an active subscription on their account. 

        Given the user is on the login page
        When the user signs in with valid credentials
        Then the user should be logged in

Parametriserade steg

När du skriver Gherkin kan det finnas tillfällen då du vill parameterisera dina steg för återanvändbarhet av ingenjören som genomför testplanerna. Steg tar emot parametrar genom regelbundna uttrycksfångstgrupper. ( Teknisk anmärkning: Om du inte har matchningsparametrar för varje fångargrupp i ditt reguljära uttryck kan du förvänta dig att en "CucumberException: Arity mismatch" kastas). I exemplet nedan har vi beslutat att lägga in argument i dubbla citat, också som acceptera heltal som argument.

 Feature: Product Login
    As a user, I would like to be able to use my credentials to successfully 
    login. 
    
    Rules:
    - The user must have a valid username
    - The user must have a valid password
    - The user must have an active subscription 
    - User is locked out after 3 invalid attempts
    - User will get a generic error message following 
      login attempt with invalid credentials 

    Scenario: The user successfully logs in with valid credentials 
        This scenario tests that a user is able to successfully login
        provided they enter a valid username, valid password, and 
        currently have an active subscription on their account. 

        Given the user is on the login page
        When the user signs in with "valid" credentials
        Then the user should be logged in

    Scenario: The user attempts to log in with invalid credentials 
        This scenario tests that a user is not able to log in when
        they enter invalid credentials

        Given the user is on the login page
        When the user signs in with "invalid" credentials
        Then the user should be logged in

    Scenario: The user is locked out after too many failed attempts
        This scenario validates that the user is locked out
        of their account after failing three consecutive 
        attempts to log in

        Given the user is on the login page
        When the user fails to log in 3 times
        Then the user should be locked out of their account

Funktionsbakgrund

Som du kanske har lagt märke till i exemplet ovan, skriver vi om samma steg flera gånger:

Given the user is on the login page

Detta kan vara exceptionellt tråkigt, särskilt om vi har mer än ett givet steg som återanvänds. Gherkin ger en lösning för detta genom att ge oss ett annat nyckelord att arbeta med: Bakgrund:.

Bakgrundsnyckelordet tjänar till att köra stegen som deklareras under det före varje scenario i funktionen. Var noga med att inte lägga till bakgrundssteg såvida du inte är säker på att det är nödvändigt för varje scenario. Liksom de andra nyckelorden följs bakgrund av en beskrivning eller namn och kan ha kommentarer listade nedan. Liksom Feature och Scenario måste bakgrunden drivas av en kolon.

Feature: Product Login
    As a user, I would like to be able to use my credentials to successfully 
    login. 
    
    Rules:
    - The user must have a valid username
    - The user must have a valid password
    - The user must have an active subscription 
    - User is locked out after 3 invalid attempts
    - User will get a generic error message following 
      login attempt with invalid credentials 

    Background: The user starts out on the login page
        Given the user is on the login page

    Scenario: The user successfully logs in with valid credentials 
        This scenario tests that a user is able to successfully login
        provided they enter a valid username, valid password, and 
        currently have an active subscription on their account. 

        When the user signs in with "valid" credentials
        Then the user should be logged in

    Scenario: The user attempts to log in with invalid credentials 
        This scenario tests that a user is not able to log in when
        they enter invalid credentials

        When the user signs in with "invalid" credentials
        Then the user should be logged in

    Scenario: The user is locked out after too many failed attempts
        This scenario validates that the user is locked out
        of their account after failing three consecutive 
        attempts to log in

        When the user fails to log in 3 times
        Then the user should be locked out of their account

Scenarioöversikt

I vissa fall kanske du vill köra om samma scenario om och om igen och ersätta argumenten. I detta fall tillhandahåller Gherkin flera nya nyckelord för att tillgodose denna situation, Scenario Outline: och Exempel:. Scenario Outline-nyckelordet säger Cucumber att scenariot kommer att köras flera gånger och ersätter argument från en lista. Exemplen nyckelord kallas innan listan uttryckligen anges. Argument för scenariotecken bör förpackas i vinklade parenteser. Observera i exemplet nedan att argumentnamnen inslagna i de vinklade parenteserna motsvarar kolumnnamnen som listas under Exempel. Varje kolumn separeras av vertikala staplar med kolumnnamn på den första raden.

Feature: Product Login
    As a user, I would like to be able to use my credentials to successfully 
    login. 
    
    Rules:
    - The user must have a valid username
    - The user must have a valid password
    - The user must have an active subscription 
    - User is locked out after 3 invalid attempts
    - User will get a generic error message following 
      login attempt with invalid credentials 

    Background: The user starts out on the login page
        Given the user is on the login page

    Scenario Outline: The user successfully logs in with their account
         This scenario outlines tests in which various users attempt
         to sign in successfully 

         When the user enters their <username>
         And the user enters their <password>
         Then the user should be successfully logged on

         Examples:
         | username | password |
         | frank    | 1234     |
         | jack     | 4321     |

Tags

För dokumentation kan du kanske filtrera testplaner eller scenarier efter kategorier. Utvecklare kanske vill köra test baserade på samma kategorier. Med Gherkin kan du kategorisera funktioner såväl som individuella scenarier via användaren av taggar. I exemplet nedan, lägg märke till ovanstående sökordsfunktion är taggen "@Automation". Gherkin känner igen detta som en tagg av användaren av symbolen "@". I det här exemplet vill ingenjören göra det klart att dessa tester används för automatisering, där inte alla test är automatiserade, vissa test måste göras med manuell QA.

Lägg också märke till att taggen @Produktion har lagts till i användarlåset för scenariotestning. I det här exemplet beror detta på att detta scenario endast är aktivt i produktionsmiljön i applikationen. Utvecklarna vill inte att deras sandlådekonton är låsta under utvecklingen. Med dessa taggar kan de säkerställa att detta test endast körs mot produktionsmiljön.

Slutligen har Scenario Outline taggen @Staging. För detta exempel beror detta på att kontona som används är iscensättningskonton och inte fungerar i andra miljöer. Precis som @Productions-taggen garanterar detta att dessa test endast körs i Staging-miljön.

Det här är bara några exempel på var, hur och varför du kan använda taggar. I slutändan kommer dessa taggar att ha betydelse för dig och utvecklarna och kan vara vad som helst och används för att kategorisera hur du än ser.

@Automation
Feature: Product Login
    As a user, I would like to be able to use my credentials to successfully 
    login. 
    
    Rules:
    - The user must have a valid username
    - The user must have a valid password
    - The user must have an active subscription 
    - User is locked out after 3 invalid attempts
    - User will get a generic error message following 
      login attempt with invalid credentials 

    Background: The user starts out on the login page
        Given the user is on the login page

    Scenario: The user successfully logs in with valid credentials 
        This scenario tests that a user is able to successfully login
        provided they enter a valid username, valid password, and 
        currently have an active subscription on their account. 

        When the user signs in with "valid" credentials
        Then the user should be logged in

    Scenario: The user attempts to log in with invalid credentials 
        This scenario tests that a user is not able to log in when
        they enter invalid credentials

        When the user signs in with "invalid" credentials
        Then the user should be logged in

    @Production
    Scenario: The user is locked out after too many failed attempts
        This scenario validates that the user is locked out
        of their account after failing three consecutive 
        attempts to log in

        When the fails to log in 3 times
        Then the user should be locked out of their account

    @Staging
    Scenario Outline: The user successfully logs in with their account
         This scenario outlines tests in which various users attempt
         to sign in successfully 

         When the user enters their <username>
         And the user enters their <password>
         Then the user should be successfully logged on

         Examples:
         | username | password |
         | frank    | 1234     |
         | jack     | 4321     |

Gherkin tips

  • Varje scenario testar ett beteende
  • Scenarier skrivs på ett deklarativt sätt
  • Undvik tillfälliga detaljer i scenariot
  • Utelämna det uppenbara
  • Undvik konjunktiva steg
  • Håll dina scenarier korta
  • Behöver inte många scenarier i samma funktion
  • Använd beskrivande scenarionamn
  • Har bara ett När-steg
  • Använd "bör" i steg sedan


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow