automation testing using cucumber tool
I sidste Selen-tutorial introducerede vi dig til Selenet som er til distribueret testudførelse miljø for at fremskynde udførelsen af et testkort .
Nu i slutningen af denne omfattende Selen-træningsserie lærer vi avanceret Selen test og relaterede begreber.
I denne og den næste vejledning introducerer vi dig til Agurk - a Behavior Driven Development (BDD) ramme, der bruges sammen med Selen til udførelse af accepttest.
Hvad du vil lære:
Agurk Introduktion
En agurk er et værktøj baseret på BDD-rammer (Behavior Driven Development), der bruges til at skrive acceptstest til webapplikationen. Det tillader automatisering af funktionel validering i letlæseligt og forståeligt format (som almindeligt engelsk) til forretningsanalytikere, udviklere, testere osv.
Agurkfunktioner kan fungere som et godt dokument for alle. Der er mange andre værktøjer som JBehave, som også understøtter BDD-rammer. Oprindeligt blev agurk implementeret i Ruby og derefter udvidet til Java framework. Begge værktøjer understøtter native JUnit.
Behavior Driven Development er en udvidelse af Test Driven Development, og den bruges til at teste systemet i stedet for at teste det bestemte stykke kode. Vi vil diskutere mere BDD og skrivestil BDD-test.
Agurk kan bruges sammen med selen, Watir og Capybara osv. Agurk understøtter mange andre sprog som Perl, PHP, Python, Net osv. I denne tutorial vil vi koncentrere os om Agurk med Java som sprog.
Agurk Grundlæggende
For at forstå agurk er vi nødt til at kende alle funktionerne i agurk og dens anvendelse.
åbner en dat-fil på mac
# 1) Feature Files:
Funktionsfiler er den vigtige del af agurk, der bruges til at skrive testautomatiseringstrin eller acceptstest. Dette kan bruges som live dokument. Trinene er applikationsspecifikationen. Alle funktionsfilerne slutter med .feature-udvidelse.
Eksempel på funktionsfil:
Funktion : Funktion til loginfunktionalitet
For at sikre, at loginfunktionalitet fungerer,
Jeg vil køre agurktesten for at kontrollere, at den fungerer
Scenarie : Login-funktionalitet
Givet bruger navigerer til SOFTWARETETINGHELP.COM
Hvornår bruger logger ind ved hjælp af brugernavn som 'USER' og adgangskode 'PASSWORD'
Derefter login skal være vellykket
Scenarie : Login-funktionalitet
Givet bruger navigerer til SOFTWARETETINGHELP.COM
Hvornår bruger logger ind ved hjælp af brugernavn som “USER1” og adgangskode “PASSWORD1”
Derefter fejlmeddelelse skal kastes
# 2) Funktion:
T hans giver information om forretningsfunktionaliteten på højt niveau (Se det foregående eksempel) og formålet med applikationen under test. Alle skal være i stand til at forstå hensigten med funktionsfil ved at læse det første Feature-trin. Denne del holdes grundlæggende kort.
# 3) Scenarie:
Dybest set repræsenterer et scenario en bestemt funktionalitet, der er under test. Ved at se scenariet skal brugeren være i stand til at forstå hensigten bag scenariet og hvad testen handler om. Hvert scenario skal følge givet, hvornår og derefter format. Dette sprog kaldes 'agurk'.
- Givet: Som nævnt ovenfor specificerer given forudsætningerne. Det er dybest set en kendt tilstand.
- Hvornår : Dette bruges, når der skal udføres en handling. Som i eksemplet ovenfor har vi set, når brugeren forsøger at logge på ved hjælp af brugernavn og adgangskode, bliver det en handling .
- Derefter: Det forventede resultat eller resultat skal placeres her. For eksempel: Kontroller, at login er vellykket, vellykket sidenavigation.
- Baggrund: Når der kræves et trin til at udføre i hvert scenarie, skal disse trin placeres i baggrunden. For eksempel: Hvis en bruger skal rydde databasen før hvert scenarie, kan disse trin sættes i en baggrund.
- Og : Og bruges til at kombinere to eller flere samme type handlinger.
Eksempel:
Funktion : Funktion til loginfunktionalitet
Scenarie : Login-funktionalitet
Givet bruger navigerer til SOFTWARETETINGHELP.COM
Hvornår bruger logger ind ved hjælp af brugernavn som “BRUGER”
Og adgangskode som “adgangskode”
Derefter login skal være vellykket
Og Startside skal vises
database interview spørgsmål og svar til erfarne
Eksempel på baggrund:
Baggrund:
Givet bruger logget ind som databaseadministrator
Og alle uønskede værdier er ryddet
# 4) Scenariooversigt:
Scenariokonturer bruges, når den samme test skal udføres med forskellige datasæt. Lad os tage det samme eksempel. Vi er nødt til at teste login-funktionalitet med flere forskellige sæt brugernavn og adgangskode.
Funktion : Funktion til loginfunktionalitet
For at sikre, at loginfunktionalitet fungerer,
Jeg vil køre agurktesten for at kontrollere, at den fungerer
Scenariooversigt : Login-funktionalitet
Givet bruger navigerer til SOFTWARETESTINGHELP.COM
Hvornår bruger logger ind ved hjælp af brugernavn som< brugernavn > og adgangskode< adgangskode >
Derefter login skal være vellykket
Eksempler:
| brugernavn | adgangskode |
| Tom | adgangskode1 |
| Harry | adgangskode2 |
| Jerry | adgangskode3 |
Bemærk:
- Som vist i ovenstående eksempel overføres kolonnenavne som en parameter til Hvornår udmelding.
- I stedet for Scenario skal du bruge Scenario Outline.
- Eksempler bruges til at videregive forskellige argumenter i tabelformatet. Lodrette rør bruges til at adskille to forskellige søjler. Et eksempel kan indeholde mange forskellige kolonner.
# 5) Mærker:
Agurk kører som standard alle scenarier i alle funktionsfilerne. I realtidsprojekter kan der være hundreder af funktionsfiler, som ikke altid skal køres.
For eksempel : Funktionsfiler relateret til røgtest behøver ikke at køre hele tiden. Så hvis du nævner et tag som røgfrit i hver funktionsfil, der er relateret til røgtest og kører agurktest med @SmokeTest-tag. Agurk kører kun de funktionsfiler, der er specifikke for givne tags. Følg nedenstående eksempel. Du kan angive flere tags i en funktionsfil.
Eksempel på brug af enkelte tags:
@SmokeTest
Funktion : Funktion til loginfunktionalitet
For at sikre, at loginfunktionalitet fungerer,
Jeg vil køre agurktesten for at kontrollere, at den fungerer
Scenariooversigt : Login-funktionalitet
Givet bruger navigerer til SOFTWARETESTINGHELP.COM
Hvornår bruger logger ind ved hjælp af brugernavn som< brugernavn > og adgangskode< adgangskode >
Derefter login skal være vellykket
Eksempler:
| brugernavn | adgangskode |
| Tom | adgangskode1 |
| Harry | adgangskode2 |
| Jerry | adgangskode3 |
Eksempel på brug af flere tags:
Som vist i eksemplet nedenfor kan den samme funktionsfil bruges til røgtestscenarier såvel som til login-testscenarier. Når du har til hensigt at køre dit script til en røgtest, skal du bruge @SmokeTest. På samme måde, når du vil have dit script til at køre til login test, brug @LoginTest tag.
Et hvilket som helst antal tags kan nævnes for en funktionsfil såvel som for et scenarie.
@SmokeTest @LoginTest
Funktion : Funktion til loginfunktionalitet
det understøtter spørgsmål og svar på teknikersamtale
For at sikre, at loginfunktionalitet fungerer,
Jeg vil køre agurktesten for at kontrollere, at den fungerer
Scenariooversigt : Login-funktionalitet
Givet bruger navigerer til SOFTWARETETINGHELP.COM
Hvornår bruger logger ind ved hjælp af brugernavn som og adgangskode
Derefter login skal være vellykket
Eksempler:
| brugernavn | adgangskode |
| Tom | adgangskode1 |
| Harry | adgangskode2 |
| Jerry | adgangskode3 |
På samme måde kan du angive tags, der skal køre det specifikke scenario i en funktionsfil. Se nedenstående eksempel for at køre specifikt scenario.
Funktion : Funktion til loginfunktionalitet
For at sikre, at loginfunktionalitet fungerer,
Jeg vil køre agurktesten for at kontrollere, at den fungerer
@positiveScenario
Scenarie : Login-funktionalitet
Givet bruger navigerer til SOFTWARETETINGHELP.COM
Hvornår bruger logger ind ved hjælp af brugernavn som 'USER' og adgangskode 'PASSWORD'
Derefter login skal være vellykket
@negaviveScenario
Scenarie : Login-funktionalitet
Givet bruger navigerer til SOFTWARETETINGHELP.COM
Hvornår bruger logger ind ved hjælp af brugernavn som “USER1” og adgangskode “PASSWORD1”
Derefter fejlmeddelelse skal kaste
# 6) JUnit Runner:
For at køre den specifikke funktionsfil agurk bruger standard JUnit Runner og specificerer tags i @Cucumber. Muligheder. Flere tags kan gives ved hjælp af separat komma. Her kan du angive stien til rapporten og typen af rapport, du vil generere.
Eksempel på Junit Runner:
import cucumber.api.junit.Cucumber;
import org.junit.runner.RunWith; @RunWith (Cucumber.class) @ Cucumber.Options (format = {'SimpleHtmlReport: report / smokeTest.html'}, tags = {'@ smokeTest'}) Offentlig klasse JUnitRunner {} På samme måde kan du give agurk instruktion om at køre flere tags. Nedenstående eksempel illustrerer, hvordan man bruger flere tags i agurk til at køre forskellige scenarier.
import cucumber.api.junit.Cucumber; import org.junit.runner.RunWith; @RunWith(Cucumber.class) @Cucumber.Options(format={'SimpleHtmlReport:report/smokeTest.html'},tags={'@smokeTest',”@LoginTest”}) Public class JUnitRunner { }
# 7) Agurkrapport:
Agurk genererer sit eget HTML-format. Bedre rapportering kan dog ske ved hjælp af Jenkins eller bambusværktøj. Detaljer om rapportering er dækket af næste agurkemne.
Agurkprojektopsætning:
Detaljeret forklaring af agurkprojektets oprettelse er tilgængelig separat i næste tutorial. Se agurkstudie del 2 for at få flere oplysninger om projektopsætning. Husk, at der ikke kræves ekstra softwareinstallationer til agurk.
Implementering af funktionsfil:
Vi er nødt til at implementere disse trin i Java for at teste funktionsfilerne. Brug for at oprette en klasse, der indeholder de givne, hvornår og derefter udsagn. Agurk bruger sine kommentarer, og alle trin er indlejret i disse kommentarer (givet, hvornår, derefter). Hver sætning starter med “^”, så agurk forstår starten på trinnet. Tilsvarende slutter hvert trin med “$”. Brugeren kan bruge regulære udtryk til at videregive forskellige testdata. Regulære udtryk tager data fra funktionstrin og videregiver til trindefinitioner. Rækkefølgen af parametre afhænger af, hvordan de sendes fra funktionsfilen. Se næste vejledning for projektopsætning og kortlægning mellem funktionsfiler og Java-klasser.
Eksempel:
Nedenstående eksempel er for at illustrere, hvordan funktionsfiler kan implementeres.
I dette eksempel har vi ikke brugt nogen selen API. Dette er for bare at vise, hvordan agurk fungerer som en enkeltstående ramme. Følg næste tutorial for selenintegration med agurk.
public class LoginTest { @Given('^user navigates to SOFTWARETETINGHELP.COM$') public void navigatePage() { system.out.println(“Cucumber executed Given statement”); } @When('^user logs in using Username as '(.*)' and Password '(.*)'$') public void login(String usename,String password) { system.out.println(“Username is:”+ usename); system.out.println(“Password is:”+ password); } @When('^click the Submit button$') public void clickTheSubmitButton() { system.out.println(“Executing When statement”) } @Then('^Home page should be displayed$') public void validatePage() { system.out.println(“Executing Then statement”) } @Then('^login should be successful$') public void validateLoginSuccess() { system.out.println(“Executing 2nd Then statement”) } }
Når du udfører agurkløberklasse, begynder agurk at læse trin i funktionsfil. For eksempel, når du udfører @smokeTest, vil agurk læse Funktion trin og Givet en erklæring om scenarie . Så snart agurk finder Givet udsagnet, det samme Givet erklæring søges efter dine java-filer. Hvis det samme trin findes i java-filen, udfører agurk den funktion, der er angivet for det samme trin, ellers springer agurk over trinnet.
Konklusion
I denne vejledning har vi dækket funktioner i agurkværktøj og dets anvendelse i realtidsscenarie.
Agurk er et mest yndlingsværktøj til mange projekter, da det er let at forstå, læsbart og indeholder forretningsfunktionalitet.
I det næste kapitel , vi vil dække, hvordan man opretter et agurk - java-projekt, og hvordan man integrerer Selen WebDriver med Agurk.
Anbefalet læsning
- Agurk Selen Tutorial: Agurk Java Selen WebDriver Integration
- 30+ bedste selen-tutorials: Lær selen med rigtige eksempler
- Selenium Grid Tutorial: Opsætning og eksempel på Cross Browser Testing
- Spock til integration og funktionel test med selen
- Brug af Maven Build Automation Tool og Maven Project Setup til Selen - Selen Tutorial # 24
- Introduktion til Selen WebDriver - Selen Tutorial # 8
- Dybdegående formørkelsesvejledninger til begyndere
- Vejledning til WAVE-tilgængelighedstestværktøj