automation testing using cucumber tool
I den siste Selen-opplæringen introduserte vi deg for Selenett som er til distribuert testutførelse miljø for å øke hastigheten på gjennomføringen av et testkort .
Nå på slutten av denne omfattende Selenium-opplæringsserien lærer vi avanserte Selen testing og relaterte konsepter.
I denne og neste opplæringen vil vi introdusere deg for Agurk - a Behavior Driven Development (BDD) rammeverk som brukes sammen med Selenium for å utføre akseptanstesting.
Hva du vil lære:
Agurk Introduksjon
En agurk er et verktøy basert på Behavior Driven Development (BDD) rammeverk som brukes til å skrive aksepttester for webapplikasjonen. Det tillater automatisering av funksjonell validering i lett lesbart og forståelig format (som vanlig engelsk) til forretningsanalytikere, utviklere, testere osv.
Agurkfunksjonsfiler kan fungere som et godt dokument for alle. Det er mange andre verktøy som JBehave som også støtter BDD-rammeverk. Opprinnelig ble agurk implementert i Ruby og deretter utvidet til Java-rammeverket. Begge verktøyene støtter innfødte JUnit.
Behavior Driven Development er en utvidelse av Test Driven Development, og den brukes til å teste systemet i stedet for å teste den bestemte koden. Vi vil diskutere mer BDD og skrivestil BDD-tester.
Agurk kan brukes sammen med Selen, Watir og Capybara etc. Agurk støtter mange andre språk som Perl, PHP, Python, Net etc. I denne opplæringen vil vi konsentrere oss om Agurk med Java som språk.
Agurk Grunnleggende
For å forstå agurk, må vi vite alle funksjonene til agurk og bruken av den.
beste gratis Windows 7 reparasjonsverktøy
# 1) Feature Files:
Funksjonsfiler er den viktigste delen av agurk som brukes til å skrive testautomatiseringstrinn eller godkjenningstester. Dette kan brukes som live dokument. Trinnene er applikasjonsspesifikasjonen. Alle funksjonsfilene slutter med .feature-utvidelsen.
Eksempel på funksjonsfil:
Trekk : Innloggingsfunksjonalitetsfunksjon
For å sikre at påloggingsfunksjonaliteten fungerer,
Jeg vil kjøre agurktesten for å bekrefte at den fungerer
Scenario : Påloggingsfunksjonalitet
Gitt bruker navigerer til SOFTWARETETINGHELP.COM
Når bruker logger på med brukernavn som “BRUKER” og passord “PASSORD”
Deretter innlogging skal være vellykket
Scenario : Påloggingsfunksjonalitet
Gitt bruker navigerer til SOFTWARETETINGHELP.COM
Når bruker logger på med brukernavn som “USER1” og passord “PASSWORD1”
Deretter feilmelding skal kastes
# 2) Funksjon:
T hans gir informasjon om forretningsfunksjonalitet på høyt nivå (se forrige eksempel) og formålet med søknad under test. Alle skal kunne forstå intensjonen med funksjonsfilen ved å lese det første funksjonstrinnet. Denne delen holdes i utgangspunktet kort.
# 3) Scenario:
I utgangspunktet representerer et scenario en bestemt funksjonalitet som er under test. Ved å se scenariet skal brukeren kunne forstå intensjonen bak scenariet og hva testen handler om. Hvert scenario skal følge gitt, når og deretter formatere. Dette språket kalles 'agurk'.
- Gitt: Som nevnt ovenfor spesifiserer gitt forhåndsbetingelsene. Det er i utgangspunktet en kjent tilstand.
- Når : Dette brukes når noen handlinger skal utføres. Som i eksemplet ovenfor har vi sett når brukeren prøver å logge på med brukernavn og passord, blir det en handling .
- Deretter: Det forventede resultatet eller resultatet bør plasseres her. For eksempel: bekreft at påloggingen er vellykket, vellykket sidenavigering.
- Bakgrunn: Når et trinn kreves for å utføre i hvert scenario, må disse trinnene plasseres i bakgrunnen. For eksempel: Hvis en bruker trenger å tømme databasen før hvert scenario, kan disse trinnene settes i en bakgrunn.
- Og : Og brukes til å kombinere to eller flere samme type handlinger.
Eksempel:
Trekk : Innloggingsfunksjonalitetsfunksjon
Scenario : Påloggingsfunksjonalitet
Gitt bruker navigerer til SOFTWARETETINGHELP.COM
Når bruker logger på med brukernavn som “USER”
Og passord som “passord”
Deretter innlogging skal være vellykket
Og Hjemmesiden skal vises
trådløs nettverkstrafikk kan fanges med sniffere.
Eksempel på bakgrunn:
Bakgrunn:
Gitt bruker logget inn som databaseadministrator
Og alle søppelverdiene er ryddet
# 4) Scenariooversikt:
Scenariokonturer brukes når den samme testen må utføres med forskjellige datasett. La oss ta det samme eksemplet. Vi må teste påloggingsfunksjonaliteten med flere forskjellige sett med brukernavn og passord.
Trekk : Innloggingsfunksjonalitetsfunksjon
For å sikre at påloggingsfunksjonaliteten fungerer,
Jeg vil kjøre agurktesten for å bekrefte at den fungerer
Scenariooversikt : Påloggingsfunksjonalitet
Gitt bruker navigerer til SOFTWARETESTINGHELP.COM
Når bruker logger på med brukernavn som< brukernavn > og passord< passord >
Deretter innlogging skal være vellykket
Eksempler:
| brukernavn | passord |
| Tom | passord1 |
| Harry | passord2 |
| Jerry | passord3 |
Merk:
- Som vist i eksempelet ovenfor blir kolonnenavn sendt som en parameter til Når uttalelse.
- I stedet for Scenario må du bruke Scenario Outline.
- Eksempler brukes til å sende forskjellige argumenter i tabellformat. Vertikale rør brukes til å skille to forskjellige kolonner. Et eksempel kan inneholde mange forskjellige kolonner.
# 5) Merkelapper:
Agurk kjører som standard alle scenarier i alle funksjonsfilene. I sanntidsprosjekter kan det være hundrevis av funksjonsfiler som ikke er nødvendig å kjøre til enhver tid.
For eksempel : Funksjonsfiler relatert til røykprøve trenger ikke kjøres hele tiden. Så hvis du nevner en tag som røykfri i hver funksjonsfil som er relatert til røykprøve og kjører agurktest med @SmokeTest-tag. Agurk vil bare kjøre de funksjonsfilene som er spesifikke for gitte koder. Følg eksemplet nedenfor. Du kan spesifisere flere koder i en funksjonsfil.
Eksempel på bruk av enkeltkoder:
@SmokeTest
Trekk : Innloggingsfunksjonalitetsfunksjon
For å sikre at påloggingsfunksjonaliteten fungerer,
Jeg vil kjøre agurktesten for å bekrefte at den fungerer
Scenariooversikt : Påloggingsfunksjonalitet
Gitt bruker navigerer til SOFTWARETESTINGHELP.COM
Når bruker logger på med brukernavn som< brukernavn > og passord< passord >
Deretter innlogging skal være vellykket
Eksempler:
| brukernavn | passord |
| Tom | passord1 |
| Harry | passord2 |
| Jerry | passord3 |
Eksempel på bruk av flere tagger:
Som vist i eksempelet nedenfor, kan samme funksjonsfil brukes til røykprøvescenarier så vel som for påloggingsprøvescenarier. Når du har tenkt å kjøre skriptet ditt for en røykprøve, så bruk @SmokeTest. På samme måte når du vil at skriptet skal kjøre for påloggingstest, bruk @LoginTest-taggen.
Et hvilket som helst antall koder kan nevnes for en funksjonsfil så vel som for et scenario.
@SmokeTest @LoginTest
Trekk : Innloggingsfunksjonalitetsfunksjon
For å sikre at påloggingsfunksjonaliteten fungerer,
Jeg vil kjøre agurktesten for å bekrefte at den fungerer
Scenariooversikt : Påloggingsfunksjonalitet
Gitt bruker navigerer til SOFTWARETETINGHELP.COM
Når bruker logger på med brukernavn som og passord
Deretter innlogging skal være vellykket
Eksempler:
| brukernavn | passord |
| Tom | passord1 |
| Harry | passord2 |
| Jerry | passord3 |
På samme måte kan du spesifisere koder for å kjøre det spesifikke scenariet i en funksjonsfil. Vennligst sjekk eksemplet nedenfor for å kjøre spesifikt scenario.
Trekk : Innloggingsfunksjonalitetsfunksjon
For å sikre at påloggingsfunksjonaliteten fungerer,
Jeg vil kjøre agurktesten for å bekrefte at den fungerer
@positiveScenario
Scenario : Påloggingsfunksjonalitet
Gitt bruker navigerer til SOFTWARETETINGHELP.COM
Når bruker logger på med brukernavn som “BRUKER” og passord “PASSORD”
Deretter innlogging skal være vellykket
@negaviveScenario
Scenario : Påloggingsfunksjonalitet
Gitt bruker navigerer til SOFTWARETETINGHELP.COM
Når bruker logger på med brukernavn som “USER1” og passord “PASSWORD1”
Deretter feilmelding skal kaste
# 6) JUnit Runner:
For å kjøre den spesifikke funksjonen fil agurk bruker standard JUnit Runner og spesifiser koder i @ agurk. Alternativer. Flere koder kan gis ved å bruke komma separat. Her kan du spesifisere banen til rapporten og typen rapport du vil generere.
hvordan finner jeg nettverkssikkerhetsnøkkelen
Eksempel på Junit Runner:
import cucumber.api.junit.Cucumber;
importer org.junit.runner.RunWith; @RunWith (Cucumber.class) @ Cucumber.Options (format = {'SimpleHtmlReport: report / smokeTest.html'}, tags = {'@ smokeTest'}) Offentlig klasse JUnitRunner {} På samme måte kan du gi agurk instruksjon om å kjøre flere koder. Eksemplet nedenfor illustrerer hvordan du bruker flere tagger i agurk til å kjøre forskjellige 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 sitt eget HTML-format. Imidlertid kan bedre rapportering gjøres ved hjelp av Jenkins eller bambusverktøy. Detaljer om rapportering er dekket i neste emne av agurk.
Agurkprosjektoppsett:
Detalj forklaring av agurkprosjektoppsett er tilgjengelig separat i neste opplæring. Se agurkveiledning del 2 for mer informasjon om prosjektoppsett. Husk at det ikke kreves ekstra programvareinstallasjoner for agurk.
Implementering av funksjonsfil:
Vi må implementere disse trinnene i Java for å teste funksjonsfilene. Trenger du å lage en klasse som inneholder de gitte, når og deretter uttalelser. Agurk bruker merknadene sine, og alle trinnene er innebygd i disse kommentarene (gitt, når, da). Hver setning starter med “^” slik at agurk forstår starten på trinnet. Tilsvarende slutter hvert trinn med “$”. Brukeren kan bruke vanlige uttrykk for å overføre forskjellige testdata. Vanlige uttrykk tar data fra funksjonstrinn og gir definisjoner til trinn. Rekkefølgen av parametere avhenger av hvordan de sendes fra funksjonsfilen. Se neste opplæring for prosjektoppsett og kartlegging mellom funksjonsfiler og Java-klasser.
Eksempel:
Nedenfor er eksemplet for å illustrere hvordan funksjonsfiler kan implementeres.
I dette eksemplet har vi ikke brukt noe selen-API. Dette er for å bare vise hvordan agurk fungerer som et frittstående rammeverk. Følg neste veiledning for selenintegrasjon 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 utfører agurkløperklasse, begynner agurk å lese funksjonstrinn for filene. Når du for eksempel kjører @smokeTest, vil agurk lese Trekk trinn og Gitt en uttalelse av scenario . Så snart agurk finner Gitt uttalelsen, samme Gitt uttalelse blir søkt etter java-filene dine. Hvis det samme trinnet finnes i java-filen, utfører agurk funksjonen som er spesifisert for samme trinn, ellers hopper agurk over trinnet.
Konklusjon
I denne opplæringen har vi dekket funksjonene i agurkverktøyet og dets bruk i sanntidsscenario.
Agurk er et mest favorittverktøy for mange prosjekter, da det er lett å forstå, lesbart og inneholder forretningsfunksjonalitet.
I neste kapittel , vil vi dekke hvordan du setter opp et agurk-java-prosjekt og hvordan du integrerer Selen WebDriver med Agurk.
Anbefalt lesing
- Agurk Selen Tutorial: Agurk Java Selen WebDriver Integration
- 30+ beste selenopplæringsprogrammer: Lær selen med virkelige eksempler
- Selenium Grid Tutorial: Setup and Example of Cross Browser Testing
- Spock for integrering og funksjonstesting med selen
- Bruk av Maven Build Automation Tool og Maven Project Setup for Selenium - Selenium Tutorial # 24
- Introduksjon til Selen WebDriver - Selenium Tutorial # 8
- In-Depth Eclipse Tutorials For Beginners
- Veiledning for WAVE tilgjengelighetstestverktøy