cucumber gherkin tutorial
Denne informative opplæringen forklarer fordelene med agurkegurkirammeverk og hvordan man skriver automatiseringsskripter ved hjelp av agurkespråk med klare eksempler:
Agurk er et verktøy som er basert på BDD-rammeverk (Behavior Driven Development). BDD er en metode for å forstå funksjonaliteten til en applikasjon i den enkle representasjonen av ren tekst.
Hovedmålet med Behavior Driven Development-rammeverket er å gjøre ulike prosjektroller som forretningsanalytikere, kvalitetssikring, utviklere osv. Forstå applikasjonen uten å dykke dypt inn i de tekniske aspektene.
Agurkverktøy brukes vanligvis i sanntid til å skrive aksepttester for en applikasjon. Agurkverktøy gir støtte for mange programmeringsspråk som Java, Ruby, .Net, etc. Det kan integreres med flere verktøy som Selen, Capybara, etc.
Hva du vil lære:
Hva er agurk?
Agurk er språket som brukes av agurkverktøy. Det er en enkel engelsk fremstilling av applikasjonsatferden. Agurk bruker konseptet med funksjonsfiler for dokumentasjonsformål. Innhold i funksjonsfilene er skrevet på gherkin-språk.
I de følgende emnene vil vi se mer om fordelene med Cucumber Gherkin framework, integrere agurk med selen, lage en funksjonsfil og dens tilhørende trinndefinisjonsfil og en eksempelfunksjonsfil.
Vanlige vilkår for agurkagurkirammeverk
Cucumber Gherkin framework bruker visse nøkkelord som er essensielle for å skrive en funksjonsfil.
Følgende termer brukes oftest i funksjonsfiler:
# 1) Funksjon:
En funksjonsfil må gi en beskrivelse på høyt nivå av en Application Under Test (AUT). Første linje i funksjonsfilen må starte med nøkkelordet ‘Feature’ etter beskrivelsen aven søknadunder test. I henhold til standardene foreskrevet av Agurk, må funksjonsfilen inneholde følgende tre elementer som første linje.
- Funksjonsnøkkelord
- Funksjonens navn
- Funksjonsbeskrivelse (valgfritt)
Funksjonsnøkkelordet må følges av et funksjonsnavn. Den kan inneholde en valgfri beskrivelsesdel som kan strekke seg over flere linjer i funksjonsfilen. En funksjonsfil har filtypen .feature.
# 2) Scenario:
Et scenario er en testspesifikasjon av funksjonaliteten som skal testes. Ideelt sett kan en funksjonsfil inneholde ett eller flere scenarier som en del av funksjonen. Et scenario inkluderer flere testtrinn. I henhold til agurkstandardene, må et scenario inkludere 3-5 testtrinn, ettersom lange scenarier har en tendens til å miste sin uttrykkskraft når antall trinn øker.
Et scenario kan omfatte følgende trinn:
- Handling som skal utføres av en bruker.
- Forventede resultater av handlingen.
På gherkin-språk må et scenario inneholde følgende nøkkelord:
- Gitt
- Når
- Deretter
- Og
Gitt:
Gitt nøkkelord brukes til å spesifisere forutsetningene for å utføre et bestemt scenario. Et scenario kan omfatte mer enn ett gitt utsagn, eller det kan ikke være gitt uttalelser for et scenario.
Når:
Dette nøkkelordet brukes til å spesifisere handlingen eller en hendelse utført av brukeren, for eksempel å klikke på en knapp, legge inn data i tekstboksen osv. Det kan være flere når utsagn i et enkelt scenario.
Deretter:
Deretter brukes nøkkelord for å spesifisere forventet resultat av en handling utført av brukeren. Ideelt sett når søkeord må følges av deretter søkeord for å forstå det forventede resultatet av brukerhandlinger.
Og:
Og nøkkelord brukes som et nøkkelord for å kombinere flere utsagn. For eksempel, multiple Given og When-setninger i et scenario kan kombineres ved hjelp av nøkkelordet ‘And’.
# 3) Scenariooversikt:
Et scenariooversikt er en måte å parametrisere scenarier på.
Dette brukes ideelt når det samme scenariet må utføres for flere datasett, men testtrinnene forblir de samme. Scenariooversikt må følges av nøkkelordet ‘Eksempler’, som spesifiserer verdisettet for hver parameter.
Nedenfor er eksemplet for å forstå konseptet Scenario Outline:
Eksempel:
Scenariooversikt: Last opp en fil
Gitt at en bruker er på opplastingsfilskjermen.
Når brukeren klikker på Bla gjennom-knappen.
Og brukeren går inn i opplastingsboksen.
Og brukeren klikker på enter-knappen.
Deretter bekrefter at filopplasting er vellykket.
Eksempler:
| filnavn |
| file1 |
| file2 |
Parametere innenfor scenariooversikten må spesifiseres med tegnene ''. En liste over dataverdier for parameteren må spesifiseres ved hjelp av Pipe (|) -symbolet.
# 4) Bakgrunn:
Bakgrunnsnøkkelord brukes til å gruppere flere gitte utsagn i en enkelt gruppe.
Dette brukes vanligvis når det samme settet med gitte utsagn gjentas i hvert scenario i en funksjonsfil. I stedet for å spesifisere de gitte utsagnene for hvert scenario gjentatte ganger, kan de spesifiseres med nøkkelordet ‘Bakgrunn’ før det første scenariet.
Eksempel:
Bakgrunn:
Den gitte brukeren er på påloggingssiden for applikasjonen
Fordeler med agurkegurkirammeverk
Nedenfor er fordelene med Cucumber Gherkin framework som gjør Agurk til et ideelt valg for raskt utviklende Agile-metodikk i dagens bedriftsverden:
- Agurk er et verktøy med åpen kildekode.
- Gjengivelse av vanlig tekst gjør det lettere for ikke-tekniske brukere å forstå scenariene.
- Det bygger bro mellom kommunikasjonsgapet mellom ulike prosjektinteressenter som forretningsanalytikere, utviklere og kvalitetssikringspersonell.
- Automatiseringstestsaker utviklet med agurkverktøyet er lettere å vedlikeholde og forstå.
- Enkel å integrere med andre verktøy som Selenium og Capybara.
Integrering av agurk med selen
Agurk og selen er de to kraftigste funksjonelle testverktøyene. Integrering av agurk med Selenium Webdriver hjelper forskjellige ikke-tekniske medlemmer av et prosjektteam til å forstå applikasjonsflyten.
Nedenfor er trinnene som skal følges for integrering av agurk med Selenium Webdriver:
Trinn 1:
Agurk kan integreres med Selenium Webdriver ved å laste ned de nødvendige JAR-filene.
Nedenfor er listen over JAR-filer som skal lastes ned for bruk av agurk med Selen Webdriver:
- dekning-2.1.1.jar
- agurk-kjerne-1.2.2.jar
- agurk-java-1.2.2.jar
- agurk-junit-1.2.2.jar
- agurk-jvm-deps-1.0.3.jar
- agurk-rapportering-0.1.0.jar
- gherkin-2.12.2.jar
- hamcrest-core-1.3.jar
- junit-4.11.jar
Ovennevnte JAR-filer kan lastes ned fra Maven nettsted .
Hver av de ovennevnte JAR-filene må lastes ned individuelt fra nettstedet ovenfor.
Steg 2:
Opprett et nytt prosjekt i formørkelsen og legg til de ovennevnte JAR-filene i prosjektet. For å legge til JAR-filene i prosjektet, høyreklikker du på prosjekt -> Bygg bane -> Konfigurer bygg bane.
Klikk på Legg til eksterne JAR-er knappen og legg til listen over JAR-filer ovenfor i prosjektet.
Trinn 3:
Før vi oppretter funksjonsfilene og trinndefinisjonsfilene, må vi installere et naturlig plugin i Eclipse. Det kan gjøres ved å kopiere og lime inn URL videre til Hjelp -> Installer ny programvare -> URL
Klikk på Neste knapp for å installere pluginet i Eclipse.
Opprette en funksjonsfil
Lag separate mapper for funksjonsfiler og trinndefinisjonsfiler i prosjektstrukturen. Trinndefinisjonsfiler inkluderer Java-kodelinjer mens funksjonsfilen inneholder engelske utsagn i form av surkornsspråk.
- Opprett en egen mappe for lagring av funksjonsfil ved å høyreklikke på prosjektet -> Ny -> Pakke .
- Funksjonsfil kan opprettes ved å navigere til Høyreklikk på prosjektet / pakken -> Ny -> Fil .
- Gi et navn på funksjonsfilen. Feature-filen må følges av utvidelsen .feature
- Prosjektstruktur må se ut som nedenstående struktur.
Opprette en trinndefinisjonsfil
Hvert trinn i funksjonsfilen må tilordnes til en tilsvarende trinndefinisjon. Merkelappene som brukes på agurkegurkafilen, må tilordnes trinndefinisjonen ved å bruke kodene @Given, @When og @Then.
Følgende er syntaksen til en trinndefinisjonsfil:
Syntaks:
@TagName (“^ Step Name $”)
Offentlig ugyldig metodeName ()
{
Metodedefinisjon
}
hvordan du konfigurerer junit i formørkelse
Trinnnavn må være foran en symbolsk karat (^) og etterfulgt av symbolet ($). Metodenavn kan være et hvilket som helst gyldig navn som er akseptabelt i henhold til Java-kodingsstandarder. Metodedefinisjon inkluderer kodingsuttalelser i Java eller andre programmeringsspråk som testeren velger.
Funksjonsfil- og trinndefinisjonsfileksempler
For å lage funksjonsfil og trinndefinisjonsfil kan følgende scenario brukes:
Scenario:
- Åpne påloggingssiden til et program som testes.
- Skriv inn brukernavnet
- Skriv inn passordet
- Klikk på Logg inn-knappen.
- Bekreft om brukerinnloggingen er vellykket.
Funksjonsfil:
Ovenstående scenario kan skrives i form av en funksjonsfil som nedenfor:
Trekk: Logg inn på en applikasjon som testes.
Scenario: Logg på applikasjonen.
Gitt Åpne Chrome-nettleseren og start applikasjonen.
Når Bruker angir brukernavn i feltet Brukernavn.
Og Bruker skriver inn et passord i Passord-feltet.
Når Brukeren klikker på Logg inn-knappen.
Trinndefinisjonsfil:
I funksjonen ovenfor kan en fil tilordnes den tilhørende trinndefinisjonsfilen som vist nedenfor. Vær oppmerksom på at for å gi en kobling mellom funksjonsfilen og trinndefinisjonsfilen, må en testløperfil opprettes.
Nedenfor er representasjonen av trinndefinisjonsfil i henhold til funksjonsfilen.
package com.sample.stepdefinitions; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import cucumber.api.java.en.And; import cucumber.api.java.en.Given; import cucumber.api.java.en.When; public class StepDefinition { WebDriver driver; @Given('^Open Chrome browser and launch the application$') public void openBrowser() { driver = new ChromeDriver(); driver.manage().window().maximize(); driver.get('www.facebook.com'); } @When('^User enters username onto the UserName field$') public void enterUserName() { driver.findElement(By.name('username')).sendKeys('test@demo.com'); } @And('^User enters password onto the Password field$') public void enterPassword() { driver.findElement(By.name('password')).sendKeys('test@123'); } @When('^User clicks on Login button$') public void clickOnLogin() { driver.findElement(By.name('loginbutton')).click(); } }
TestRunner-klassen brukes til å gi koblingen mellom funksjonsfil og trinndefinisjonsfil. Nedenfor er eksemplet på hvordan TestRunner-klassen ser ut. En TestRunner-klasse er vanligvis en tom klasse uten klassedefinisjon.
Package com.sample.TestRunner import org.junit.runner.RunWith; import cucumber.api.CucumberOptions; import cucumber.api.junit.Cucumber; @RunWith(Cucumber.class) @CucumberOptions(features='Features',glue={'StepDefinition'}) public class Runner { }
Vi må kjøre klassefilen TestRunner for kjøring av funksjonsfiler og trinndefinisjonsfiler.
Eksempler
Nedenfor er funksjonsfilrepresentasjonen av forskjellige scenarier.
Eksempel 1:
For å kontrollere om brukernavnet og passordet er tilgjengelig på påloggingssiden:
Trekk: Bekreft visningen av brukernavn og passordfelt på en påloggingsside.
Scenario: For å bekrefte visning av felt for brukernavn og passord.
Gitt Bruker åpner Firefox-nettleseren og navigerer til applikasjonen under test.
Når Bruker navigerer til en påloggingsside.
Deretter Bekreft visningen av brukernavnfeltet på påloggingssiden.
Og Bekreft visning av passordfeltet på påloggingssiden.
Eksempel 2:
Nedenfor er eksemplet for nøkkelord for scenariooversikt i Agurkgurke:
Trekk: Kontroller om påloggingen er vellykket for flere sett med testdata.
Scenariooversikt: For å verifisere om pålogging er vellykket for flere sett med testdata.
Gitt Åpne Chrome-nettleseren og start applikasjonen.
Når Bruker går inn i feltet UserName.
Og Bruker går inn i passordfeltet.
Når Brukeren klikker på Logg inn-knappen.
Eksempler:
| brukernavn | passord |
| bruker1 | passord1 |
| bruker2 | passord2 |
Konklusjon
- BDD er en metode for å forstå funksjonaliteten til en applikasjon i enkel representasjon av ren tekst.
- Agurk er et verktøy som bruker Behavior Driven Development til å skrive aksepttester av en applikasjon. Den brukes til å bygge bro over kommunikasjonsgapet mellom ulike interessenter i prosjektet.
- Hovedbruken av agurk ligger i enkelheten å forstå bruken av funksjonsfiler av ikke-tekniske brukere.
Det er ikke for sent å prøve dette agurkverktøyet ved hjelp av gherkin-språket.
Anbefalt lesing
- Geb Tutorial - Browser Automation Testing Using Geb Tool
- Agurk Selen Tutorial: Agurk Java Selen WebDriver Integration
- Automatiseringstesting ved hjelp av agurkverktøy og selen - Selenveiledning nr. 30
- Hva er automatiseringstesting (Ultimate Guide to Start Test Automation)
- Spock Tutorial: Testing With Spock And Groovy
- Beste verktøy for testing av programvare 2021 (QA Test Automation Tools)
- Destruktiv testing og ikke-destruktiv testing
- Funksjonstesting mot ikke-funksjonell testing