automation testing using cucumber tool
I den senaste Selen-självstudien presenterade vi dig för Selen Grid vilket är till distribuerad testkörning miljö för att påskynda genomförandet av ett testpass .
Nu i slutet av den här omfattande Selen-träningsserien lär vi oss avancerade Selen testning och relaterade begrepp.
I denna och nästa handledning kommer vi att presentera dig för Gurka - a BDD-ram (Behavior Driven Development) som används med Selenium för att utföra acceptansprovning.
Vad du kommer att lära dig:
Gurkaintroduktion
En gurka är ett verktyg baserat på BDD-ram (Behavior Driven Development) som används för att skriva acceptansprov för webbapplikationen. Det möjliggör automatisering av funktionell validering i lättläst och förståeligt format (som vanlig engelska) till affärsanalytiker, utvecklare, testare etc.
Gurka-funktionsfiler kan fungera som ett bra dokument för alla. Det finns många andra verktyg som JBehave som också stöder BDD-ramverk. Ursprungligen implementerades Gurka i Ruby och utvidgades sedan till Java-ramverk. Båda verktygen stöder inbyggd JUnit.
Behavior Driven Development är en förlängning av Test Driven Development och används för att testa systemet i stället för att testa den specifika kodkoden. Vi kommer att diskutera mer BDD och skrivstilen för BDD-tester.
Gurka kan användas tillsammans med selen, Watir och Capybara etc. Gurka stöder många andra språk som Perl, PHP, Python, Net etc. I denna handledning kommer vi att koncentrera oss på Gurka med Java som språk.
Gurka Grunderna
För att förstå gurka måste vi känna till alla funktioner i gurka och dess användning.
viktad grafanslutningslista c ++
# 1) Funktionsfiler:
Funktionsfiler är den viktigaste delen av gurka som används för att skriva testautomatiseringssteg eller acceptantest. Detta kan användas som live-dokument. Stegen är applikationsspecifikationen. Alla funktionsfiler slutar med .feature-tillägget.
Exempelfunktionsfil:
Funktion : Inloggningsfunktion
För att säkerställa att inloggningsfunktionalitet fungerar,
Jag vill köra gurktestet för att verifiera att det fungerar
Scenario : Inloggningsfunktionalitet
Given användaren navigerar till SOFTWARETETINGHELP.COM
När användaren loggar in med användarnamn som 'ANVÄNDARE' och lösenord 'LÖSENORD'
Sedan inloggningen ska lyckas
Scenario : Inloggningsfunktionalitet
Given användaren navigerar till SOFTWARETETINGHELP.COM
När användaren loggar in med användarnamn som 'USER1' och lösenord 'LÖSENORD1'
Sedan felmeddelande ska kastas
# 2) Funktion:
T hans ger information om den höga affärsfunktionaliteten (se föregående exempel) och syftet med applikationen som testas. Alla ska kunna förstå avsikten med funktionsfilen genom att läsa det första funktionssteget. Denna del hålls i grunden kort.
# 3) Scenario:
I grund och botten representerar ett scenario en viss funktionalitet som testas. Genom att se scenariot ska användaren kunna förstå avsikten bakom scenariot och vad testet handlar om. Varje scenario ska följa givet, när och sedan formatera. Detta språk kallas 'gurka'.
- Given: Som nämnts ovan specificerar given förutsättningarna. Det är i grunden ett känt tillstånd.
- När : Detta används när någon åtgärd ska utföras. Som i exemplet ovan har vi sett när användaren försöker logga in med användarnamn och lösenord blir det en åtgärd .
- Sedan: Det förväntade resultatet eller resultatet bör placeras här. Till exempel: kontrollera att inloggningen är framgångsrik, lyckad sidnavigering.
- Bakgrund: När något steg krävs för att utföra i varje scenario måste dessa steg placeras i bakgrunden. Till exempel: Om en användare behöver rensa databasen före varje scenario kan dessa steg läggas i bakgrunden.
- Och : Och används för att kombinera två eller flera samma typer av åtgärder.
Exempel:
Funktion : Inloggningsfunktion
Scenario : Inloggningsfunktionalitet
Given användaren navigerar till SOFTWARETETINGHELP.COM
När användaren loggar in med användarnamnet som “USER”
Och lösenord som 'lösenord'
Sedan inloggningen ska lyckas
Och Hemsidan ska visas
hur man kör körbar jar-fil
Exempel på bakgrund:
Bakgrund:
Given användare inloggad som databasadministratör
Och alla skräpvärden rensas
# 4) Scenarioöversikt:
Scenariokonturer används när samma test måste utföras med olika datamängder. Låt oss ta samma exempel. Vi måste testa inloggningsfunktionaliteten med flera olika uppsättningar användarnamn och lösenord.
Funktion : Inloggningsfunktion
För att säkerställa att inloggningsfunktionalitet fungerar,
Jag vill köra gurktestet för att verifiera att det fungerar
Scenarioöversikt : Inloggningsfunktionalitet
Given användaren navigerar till SOFTWARETESTINGHELP.COM
När användaren loggar in med användarnamnet som< Användarnamn > och lösenord< Lösenord >
Sedan inloggningen ska lyckas
Exempel:
| användarnamn | lösenord |
| Tom | lösenord1 |
| Harry | lösenord2 |
| Jerry | lösenord3 |
Notera:
- Som visas i exemplet ovan skickas kolumnnamn som en parameter till När påstående.
- I stället för Scenario måste du använda Scenario Outline.
- Exempel används för att skicka olika argument i tabellformat. Vertikala rör används för att separera två olika kolumner. Ett exempel kan innehålla många olika kolumner.
# 5) Taggar:
Gurka kör som standard alla scenarier i alla funktionsfiler. I realtidsprojekt kan det finnas hundratals funktionsfiler som inte krävs att köras hela tiden.
Till exempel : Funktionsfiler relaterade till röktest behöver inte köras hela tiden. Så om du nämner en tagg som rökfri i varje funktionsfil som är relaterad till röktest och kör gurktest med @SmokeTest-taggen. Gurka kör bara de funktionsfiler som är specifika för givna taggar. Följ nedanstående exempel. Du kan ange flera taggar i en funktionsfil.
Exempel på användning av enstaka taggar:
@SmokeTest
Funktion : Inloggningsfunktion
För att säkerställa att inloggningsfunktionalitet fungerar,
Jag vill köra gurktestet för att verifiera att det fungerar
Scenarioöversikt : Inloggningsfunktionalitet
Given användaren navigerar till SOFTWARETESTINGHELP.COM
När användaren loggar in med användarnamnet som< Användarnamn > och lösenord< Lösenord >
Sedan inloggningen ska lyckas
Exempel:
| användarnamn | lösenord |
| Tom | lösenord1 |
| Harry | lösenord2 |
| Jerry | lösenord3 |
Exempel på användning av flera taggar:
Som visas i exemplet nedan kan samma funktionsfil användas för rökprovscenarier och för inloggningstestscenario. När du tänker köra ditt skript för ett rökprov använder du @SmokeTest. På samma sätt när du vill att ditt skript ska köras för inloggningstest, använd taggen @LoginTest.
Valfritt antal taggar kan nämnas för en funktionsfil såväl som för ett scenario.
@SmokeTest @LoginTest
Funktion : Inloggningsfunktion
För att säkerställa att inloggningsfunktionalitet fungerar,
Jag vill köra gurktestet för att verifiera att det fungerar
Scenarioöversikt : Inloggningsfunktionalitet
Given användaren navigerar till SOFTWARETETINGHELP.COM
När användaren loggar in med användarnamn som och lösenord
Sedan inloggningen ska lyckas
Exempel:
| användarnamn | lösenord |
| Tom | lösenord1 |
| Harry | lösenord2 |
| Jerry | lösenord3 |
På samma sätt kan du ange taggar för att köra det specifika scenariot i en funktionsfil. Se exemplet nedan för att köra specifikt scenario.
Funktion : Inloggningsfunktion
För att säkerställa att inloggningsfunktionalitet fungerar,
Jag vill köra gurktestet för att verifiera att det fungerar
@positiveScenario
Scenario : Inloggningsfunktionalitet
Given användaren navigerar till SOFTWARETETINGHELP.COM
När användaren loggar in med användarnamn som 'ANVÄNDARE' och lösenord 'LÖSENORD'
Sedan inloggningen ska lyckas
@negaviveScenario
Scenario : Inloggningsfunktionalitet
Given användaren navigerar till SOFTWARETETINGHELP.COM
När användaren loggar in med användarnamn som 'USER1' och lösenord 'LÖSENORD1'
Sedan felmeddelande ska kasta
# 6) JUnit Runner:
För att köra den specifika funktionen fil gurka använder standard JUnit Runner och ange taggar i @Cucumber. Alternativ. Flera taggar kan ges med kommaseparat. Här kan du ange sökvägen för rapporten och vilken typ av rapport du vill generera.
Exempel på Junit Runner:
import cucumber.api.junit.Cucumber;
importera org.junit.runner.RunWith; @RunWith (Cucumber.class) @ Cucumber.Options (format = {'SimpleHtmlReport: report / smokeTest.html'}, tags = {'@ smokeTest'}) Allmän klass JUnitRunner {} På samma sätt kan du ge gurka instruktioner om att köra flera taggar. Nedanstående exempel illustrerar hur man använder flera taggar i gurka för att köra olika 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) Gurka-rapport:
företag som är involverade i sakernas internet
Gurka genererar sitt eget HTML-format. Bättre rapportering kan dock göras med Jenkins eller bambuverktyg. Information om rapportering behandlas i nästa gurkaämne.
Gurkaprojektinstallation:
Detaljerad förklaring av gurkaprojektets uppställning finns separat i nästa handledning. Se Cucumber Tutorial Part2 för mer information om projektinstallation. Kom ihåg att inga extra programvaruinstallationer krävs för gurka.
Implementering av funktionsfil:
Vi måste implementera dessa steg i Java för att testa funktionsfilerna. Behöver skapa en klass som innehåller de givna, när och sedan uttalanden. Gurka använder sina anteckningar och alla steg är inbäddade i dessa anteckningar (ges när, då). Varje fras börjar med “^” så att gurka förstår stegets början. På samma sätt slutar varje steg med “$”. Användaren kan använda reguljära uttryck för att skicka olika testdata. Regelbundna uttryck tar data från funktionssteg och övergår till definitioner. Parametrarnas ordning beror på hur de skickas från funktionsfilen. Se nästa handledning för projektinstallation och mappning mellan funktionsfiler och Java-klasser.
Exempel:
Nedanstående exempel är för att illustrera hur funktionsfiler kan implementeras.
I det här exemplet har vi inte använt något selen-API. Detta för att bara visa hur gurka fungerar som en fristående ram. Följ nästa handledning för selenintegration med gurka.
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 kör gurklöpare kommer gurka att börja läsa funktionsfilens steg. När du till exempel kör @smokeTest kommer gurka att läsa Funktion steg och Given ett uttalande av scenario . Så snart gurka hittar Givet uttalandet, samma Given uttalande kommer att sökas efter dina java-filer. Om samma steg finns i java-filen kör gurka den funktion som anges för samma steg, annars kommer gurka att hoppa över steget.
Slutsats
I denna handledning har vi täckt funktioner i gurkaverktyg och dess användning i realtidsscenario.
Gurka är ett favoritverktyg för många projekt eftersom det är lätt att förstå, läsbart och innehåller affärsfunktionalitet.
I nästa kapitel , kommer vi att beskriva hur man skapar ett gurka-java-projekt och hur man integrerar Selen WebDriver med Gurka.
Rekommenderad läsning
- Gurkselen-handledning: Gurka Java Selen WebDriver-integration
- 30+ bästa selen-självstudier: Lär dig selen med riktiga exempel
- Selen Grid Tutorial: Installation och exempel på testning av webbläsare
- Spock för integration och funktionstestning med selen
- Användning av Maven Build Automation Tool och Maven Project Setup för Selen - Selen Tutorial # 24
- Introduktion till Selen WebDriver - Selen Tutorial # 8
- Fördjupade förmörkningsövningar för nybörjare
- Handledning för testning av WAVE-tillgänglighetsverktyg