cucumber gherkin tutorial
Denne informative vejledning forklarer fordelene ved agurkegurkeramme og hvordan man skriver automatiseringsskripter ved hjælp af agurkesprog med klare eksempler:
Agurk er et værktøj baseret på BDD-rammer (Behavior Driven Development). BDD er en metode til at forstå funktionaliteten af et program i den enkle gengivelse af almindelig tekst.
Hovedformålet med Behavior Driven Development-rammen er at få forskellige projektroller som forretningsanalytikere, kvalitetssikring, udviklere osv. Til at forstå applikationen uden at dykke dybt ned i de tekniske aspekter.
Agurkværktøj bruges generelt i realtid til at skrive acceptstest af en applikation. Agurkværktøj yder support til mange programmeringssprog som Java, Ruby, .Net osv. Det kan integreres med flere værktøjer såsom Selen, Capybara osv.
Hvad du vil lære:
Hvad er agurk?
Agurk er det sprog, der bruges af agurkværktøjet. Det er en simpel engelsk gengivelse af applikationsadfærden. Agurk bruger begrebet funktionsfiler til dokumentationsformål. Indhold i funktionsfilerne er skrevet på agurkesprog.
I de følgende emner vil vi se mere om fordelene ved agurkegurkeramme, integrering af agurk med selen, oprettelse af en funktionsfil og dens tilsvarende trindefinitionsfil og en eksempelfunktionsfil.
Almindelige vilkår for agurkeretning
Agurkgurke-ramme bruger visse nøgleord, der er vigtige for at skrive en funktionsfil.
Følgende udtryk bruges mest i funktionsfiler:
# 1) Funktion:
En funktionsfil skal indeholde en beskrivelse på højt niveau af en applikation under test (AUT). Den første linje i funktionsfilen skal starte med nøgleordet 'Feature' efter beskrivelsen afen ansøgningunder test. I henhold til de standarder, der er foreskrevet af agurk, skal funktionsfilen omfatte følgende tre elementer som første linje.
- Funktionsnøgleord
- Funktionsnavn
- Funktionsbeskrivelse (valgfri)
Funktionsnøgleordet skal efterfølges af et funktionsnavn. Det kan omfatte et valgfrit beskrivelsessektion, der kan spænde over flere linjer i funktionsfilen. En funktionsfil har filtypen .feature.
# 2) Scenarie:
Et scenario er en testspecifikation af den funktionalitet, der skal testes. Ideelt set kan en funktionsfil indeholde et eller flere scenarier som en del af funktionen. Et scenario inkluderer flere testtrin. I henhold til agurkstandarderne skal et scenario omfatte 3-5 testtrin, da lange scenarier har tendens til at miste deres udtryksfulde effekt, når antallet af trin øges.
Et scenarie kan omfatte følgende trin:
- Handling, der skal udføres af en bruger.
- Forventede resultater af handlingen.
På agurkisprog skal et scenario indeholde følgende nøgleord:
- Givet
- Hvornår
- Derefter
- Og
Givet:
Det givne nøgleord bruges til at specificere forudsætningerne for at udføre et specifikt scenario. Et scenarie kan omfatte mere end et givet udsagn, eller der kan ikke være noget givet udsagn for et scenario.
Hvornår:
Dette nøgleord bruges til at specificere handlingen eller en begivenhed, der udføres af brugeren, såsom at klikke på en knap, indtaste data i tekstfelt osv. Der kan være flere, når udsagn i et enkelt scenarie.
Derefter:
Derefter bruges nøgleord til at specificere det forventede resultat af en handling udført af brugeren. Ideelt set når søgeord skal følges af derefter søgeord for at forstå det forventede resultat af brugerhandlinger.
Og:
Og nøgleord bruges som et nøgleord for at kombinere flere udsagn. For eksempel, multiple Given og When-udsagn i et scenarie kan kombineres ved hjælp af nøgleordet 'And'.
# 3) Scenariooversigt:
En scenarieoversigt er en måde at parametrere scenarier på.
Dette bruges ideelt, når det samme scenario skal udføres for flere datasæt, men testtrinnene forbliver de samme. Scenariooversigt skal følges af nøgleordet 'Eksempler', der specificerer værdisættet for hver parameter.
Nedenfor er eksemplet for at forstå begrebet Scenario Outline:
Eksempel:
Scenariooversigt: Upload en fil
Givet at en bruger er på uploadfilskærmen.
Hvornår brugeren klikker på knappen Gennemse.
Og brugeren går ind i upload tekstboks.
Og bruger klikker på Enter-knappen.
Derefter bekræfter, at filupload er vellykket.
Eksempler:
| filnavn |
| fil1 |
| fil2 |
Parametre i scenarieoversigten skal specificeres med tegnene ''. En liste med dataværdier for parameteren skal specificeres ved hjælp af Pipe (|) -symbolet.
# 4) Baggrund:
Baggrundsnøgleord bruges til at gruppere flere givne udsagn i en enkelt gruppe.
Dette bruges normalt, når det samme sæt givne udsagn gentages i hvert scenarie i en funktionsfil. I stedet for at specificere de givne udsagn for hvert scenarie gentagne gange, kan de specificeres med nøgleordet 'Baggrund' før det første scenario.
Eksempel:
Baggrund:
Den givne bruger er på applikationens login-side
Fordele ved agurkeretning
Nedenfor er fordelene ved Cucumber Gherkin framework, der gør Agurk til et ideelt valg til hurtig udviklende Agile-metode i nutidens virksomhedsverden:
- Agurk er et open source-værktøj.
- Almindelig tekstrepræsentation gør det lettere for ikke-tekniske brugere at forstå scenarierne.
- Det bygger bro over kommunikationsgabet mellem forskellige projektinteressenter såsom forretningsanalytikere, udviklere og kvalitetssikringspersonale.
- Automatiseringstestsager udviklet ved hjælp af agurkværktøjet er lettere at vedligeholde og forstå.
- Let at integrere med andre værktøjer såsom selen og capybara.
Integration af agurk med selen
Agurk og selen er de to mest kraftfulde funktionelle testværktøjer. Integration af agurk med Selenium Webdriver hjælper forskellige ikke-tekniske medlemmer af et projektteam med at forstå applikationsstrømmen.
Nedenfor er de trin, der skal følges for integrationen af agurk med Selen Webdriver:
Trin 1:
Agurk kan integreres med Selenium Webdriver ved at downloade de nødvendige JAR-filer.
Nedenfor er listen over JAR-filer, der skal downloades til brug af agurk med Selenium Webdriver:
- dækning-2.1.1.jar
- agurk-core-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
- agherkin-2.12.2.jar
- hamcrest-core-1.3.jar
- junit-4.11.jar
Ovenstående JAR-filer kan downloades fra Maven internet side .
Hver af de ovennævnte JAR-filer skal downloades individuelt fra ovenstående webside.
Trin # 2:
Opret et nyt projekt i formørkelsen, og tilføj de ovennævnte JAR-filer til projektet. For at tilføje JAR-filerne til projektet skal du højreklikke på projekt -> Byg sti -> Konfigurer Byg sti.
Klik på Tilføj eksterne JAR'er knappen og tilføj listen over ovenstående JAR-filer til projektet.
Trin # 3:
Før vi opretter funktionsfiler og trindefinitionsfiler, skal vi installere et naturligt plugin i Eclipse. Det kan gøres ved at kopiere og indsætte URL på Hjælp -> Installer ny software -> URL
Klik på Næste knap for at installere pluginet i Eclipse.
Oprettelse af en funktionsfil
Opret separate mapper til funktionsfiler og trindefinitionsfiler i projektstrukturen. Trindefinitionsfiler inkluderer Java-kodningslinjer, mens funktionsfilen indeholder engelske udsagn i form af agurkesprog.
- Opret en separat mappe til lagring af funktionsfil ved at højreklikke på projektet -> Ny -> pakke .
- Funktionsfil kan oprettes ved at navigere til Højreklik på projektet / pakken -> Ny -> Fil .
- Angiv et navn til funktionsfilen. Funktionsfil skal efterfølges af udvidelsen .feature
- Projektstruktur skal se ud som nedenstående struktur.
Oprettelse af en trindefinitionsfil
Hvert trin i funktionsfilen skal kortlægges til en tilsvarende trindefinition. Mærker, der bruges i agurkegurkafilen, skal kortlægges til dens trindefinition ved hjælp af tags @Given, @When og @Then.
Følgende er syntaksen for en trindefinitionsfil:
Syntaks:
@TagName (“^ Trinnavn $”)
Offentlig ugyldig metode Navn ()
{
Metodedefinition
}
sql forespørgsler interview spørgsmål og svar til freshers
Trinnavne skal være præfikset med symbolet karat (^) og efterfulgt af symbolet ($). Metodenavn kan være ethvert gyldigt navn, der er acceptabelt i henhold til Java-kodningsstandarder. Metodedefinition inkluderer kodningssætninger i Java eller ethvert andet programmeringssprog, som testeren vælger.
Feature File og Step Definition File Eksempler
Følgende scenarie kan bruges til oprettelse af funktionsfil og trindefinitionsfil:
Scenarie:
- Åbn login siden til en applikation, der testes.
- Indtast brugernavnet
- Indtast adgangskoden
- Klik på knappen Login.
- Kontroller, om brugerloginet er vellykket.
Funktionsfil:
Ovenstående scenario kan skrives i form af en funktionsfil som nedenfor:
Funktion: Log ind på en applikation, der testes.
Scenarie: Log ind på applikationen.
Givet Åbn Chrome-browseren, og start applikationen.
Hvornår Bruger indtaster brugernavn i feltet Brugernavn.
Og Bruger indtaster en adgangskode i feltet Adgangskode.
Hvornår Bruger klikker på knappen Login.
Trindefinitionsfil:
I ovenstående funktion kan en fil kortlægges til den tilsvarende trindefinitionsfil som vist nedenfor. Bemærk, at for at give et link mellem funktionsfilen og trindefinitionsfilen skal der oprettes en testløberfil.
Nedenfor er gengivelsen af trindefinitionsfil ifølge dens funktionsfil.
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 bruges til at give forbindelsen mellem funktionsfil og trindefinitionsfil. Nedenfor er eksemplet på, hvordan TestRunner-klassen ser ud. En TestRunner-klasse er generelt en tom klasse uden klassedefinition.
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 er nødt til at køre TestRunner-klassefilen til udførelse af funktionsfiler og trindefinitionsfiler.
Eksempler
Nedenfor er funktionens filrepræsentation af forskellige scenarier.
Eksempel 1:
For at kontrollere, om brugernavnet og adgangskoden er tilgængelig på login-siden:
Funktion: Bekræft visning af brugernavn og adgangskodefelter på en login-side.
Scenarie: For at kontrollere visningen af brugernavn og adgangskodefelter.
Givet Bruger åbner Firefox-browseren og navigerer til applikationen under test.
Hvornår Brugeren navigerer til en login-side.
Derefter Bekræft visningen af brugernavnfeltet på siden Login.
Og Bekræft visning af adgangskodefeltet på login-siden.
Eksempel 2:
Nedenfor er eksemplet for nøgleord med scenarieoversigt i Agurkgurke:
Funktion: Kontroller, om login er vellykket for flere sæt testdata.
Scenariooversigt: For at kontrollere, om login er vellykket til flere sæt testdata.
Givet Åbn Chrome-browseren, og start applikationen.
Hvornår Bruger går ind i feltet Brugernavn.
Og Bruger går ind i feltet Adgangskode.
Hvornår Bruger klikker på knappen Login.
Eksempler:
| brugernavn | adgangskode |
| bruger1 | adgangskode1 |
| bruger2 | adgangskode2 |
Konklusion
- BDD er en metode til at forstå funktionaliteten af en applikation i simpel gengivelse af almindelig tekst.
- Agurk er et værktøj, der bruger Behavior Driven Development til at skrive acceptstest af en applikation. Det bruges til at bygge bro over kommunikationsgabet mellem forskellige interessenter i projektet.
- Den vigtigste anvendelse af agurk ligger i dets enkelhed til at forstå brugen af funktionsfiler af ikke-tekniske brugere.
Det er ikke for sent at prøve dette agurkeværktøj ved hjælp af agurkesprog.
Anbefalet læsning
- Geb Tutorial - Browserautomatiseringstest ved hjælp af Geb Tool
- Agurk Selen Tutorial: Agurk Java Selen WebDriver Integration
- Automatiseringstest ved hjælp af agurkværktøj og selen - Selen Tutorial # 30
- Hvad er automatiseringstest (ultimativ guide til start af testautomatisering)
- Spock Tutorial: Test med Spock og Groovy
- Bedste softwaretestværktøjer 2021 (QA Test Automation Tools)
- Destruktiv test og ikke-destruktiv testvejledning
- Funktionel testning mod ikke-funktionel testning