I den senaste Selen-självstudien introducerade vi dig till Selenium Grid som är en distribuerad testkörningsmiljö för att påskynda genomförandet av ett testpass.
Nu i slutet av denna omfattande Selen-träningsserie lär vi oss avancerade Selen-test och relaterade begrepp.
I denna och nästa handledning, kommer att presentera dig för Cucumber – a Behavior Driven Development (BDD) -ramverk som används med Selen för att utföra acceptantestning.
Gurkaintroduktion
En gurka är ett verktyg baserat på BDD-ram (Behavior Driven Development) som används för att skriva godtagningstester 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.
Gurkafunktioner 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 native JUnit.
Behavior Driven Development är en förlängning av testdriven utveckling och används för att testa systemet snarare än 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 den här självstudien kommer vi att koncentrera oss på gurka med Java som språk.
Gurkagrunder
För att förstå gurka måste vi känna till alla gurkans funktioner och dess användning.
# 1) Feature Files:
Feature files är den väsentliga delen av gurka som används för att skriva testautomatiseringssteg eller acceptattester. Detta kan användas som live-dokument. Stegen är applikationsspecifikationen. Alla funktionsfiler slutar med .feature-tillägg.
Exempelfunktionsfil:
Funktion: Inloggningsfunktion Funktion
För att säkerställa att inloggningsfunktionalitet fungerar,
Jag vill köra gurktestet för att verifiera att det fungerar
Scenario: Inloggningsfunktionalitet
Givet användare navigerar till SOFTWARETETINGHELP.COM
När användaren loggar in med användarnamn som ”USER ”Och lösenord” LÖSENORD ”
Då ska inloggningen lyckas
Scenario: Inloggningsfunktionalitet
Givet användare navigerar till SOFTWARETETINGHELP.COM
När användaren loggar in med användarnamn som” USER1 ”och lösenord” LÖSENORD1 ”
Då ska felmeddelande kastas
# 2) Funktion:
Detta ger information om affärsfunktionen på hög nivå (se föregående exempel) och syftet med ansökan under test. Alla ska kunna förstå avsikten med funktionsfil genom att läsa det första funktionssteget. Den här delen 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”.
- Givet: Som nämnts ovan anger given förutsättningarna. Det är i grunden ett känt tillstånd.
- När: Detta är 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.
- Då: Det förväntade resultatet eller resultatet ska vara placeras här. Till exempel: verifiera att inloggningen är framgångsrik, framgångsrik sidnavigering.
- Bakgrund: Närhelst 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ändaren måste rensa databasen före varje scenario då dessa steg kan läggas i bakgrunden.
- Och: Och används för att kombinera två eller flera samma typ av åtgärder.
Exempel:
Funktion: Inloggningsfunktion Funktion
Scenario: Inloggningsfunktionalitet
Givet användare navigerar till SOFTWARETETINGHELP.COM
När användaren loggar in med användarnamn som ”USER”
Och passwo rd som ”lösenord”
Då måste inloggningen lyckas
Och startsidan ska visas
Exempel på bakgrund:
Bakgrund:
Givet användare inloggad som databasadministratör
Och alla skräpvärden rensas
# 4) Scenario disposition:
Scenario konturer används när samma test måste utföras med olika datauppsättning. Låt oss ta samma exempel. Vi måste testa inloggningsfunktionaliteten med flera olika uppsättningar användarnamn och lösenord.
Funktion: Inloggningsfunktion Funktion
För att säkerställa att Inloggningsfunktionalitet fungerar,
Jag vill köra gurktest för att verifiera att det fungerar
Scenarioöversikt: Inloggningsfunktionalitet
Med tanke på att användaren navigerar till SOFTWARETESTINGHELP.COM
När användaren loggar in med användarnamn som < användarnamn > och lösenord < lösenord >
Då ska inloggningen lyckas
Exempel:
| användarnamn | lösenord |
| Tom | lösenord1 |
| Harry | lösenord2 |
| Jerry | lösenord3 |
Obs:
- Som visas i exemplet ovan skickas kolumnnamn som en parameter till When-uttalandet.
- I stället för scenariot måste du använda scenariot.
- 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: Inloggningsfunktionalitet
För att säkerställa att inloggningsfunktionaliteten fungerar,
Jag vill köra gurktestet för att verifiera att det fungerar
Scenarioöversikt: Inloggningsfunktionalitet
Med tanke på att användaren navigerar till SOFTWARETESTINGHELP. COM
När användaren loggar in med användarnamn som < användarnamn > och lösenord < lösenord >
Då ska inloggningen lyckas
Exempel på användning av flera taggar:
Som visas i exemplet nedan samma funktionsfil kan användas för rökprovsscenarier såväl som för inloggningstestscenarier. 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 @LoginTest-taggen.
Valfritt antal taggar kan nämnas för en funktionsfil såväl som för scenariot.
@SmokeTest @ LoginTest
Feature: Login Functionality Feature
För att säkerställa att Login-funktionalitet fungerar,
Jag vill köra gurktestet för att verifiera att det fungerar
Scenarioöversikt: Inloggningsfunktionalitet
Givet användare navigerar till SOFTWARETETINGHELP.COM
När användaren loggar in med användarnamn som < användarnamn > och lösenord < lösenord >
Då ska inloggningen lyckas
På samma sätt kan du ange taggar för att köra det specifika scenariot i en funktionsfil. Kontrollera nedanstående exempel för att köra specifikt scenario.
Funktion: Inloggningsfunktion Funktion
För att säkerställa att Inloggningsfunktionalitet fungerar,
Jag vill köra gurktestet för att verifiera att det är arbetar
@positiveScenario
Scenario: Inloggningsfunktionalitet
Givet användare navigerar till SOFTWARETETINGHELP.COM
När användaren loggar in med användarnamn som ”USER” och lösenord ”LÖSENORD”
Då ska inloggningen lyckas
@negaviveScenario
Scenario: Inloggningsfunktionalitet
Givet användare navigerar till SOFTWARETETINGHELP.COM
När användaren loggar in med användarnamnet som ”USER1” och lösenord ”PASSWORD1”
Då ska felmeddelandet 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 till rapporten och vilken typ av rapport du vill generera.
Exempel på Junit Runner:
På samma sätt kan du ge gurka instruktioner att köra flera taggar. Nedanstående exempel illustrerar hur man använder flera taggar i gurka för att köra olika scenarier.
# 7) Gurka-rapport:
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.
Gurkaprojektinställning:
Detaljförklaring av gurka-projektuppsättning finns tillgänglig 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 början på steget. 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 projektkonfiguration 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.
När du kör gurklöparklass kommer gurka att börja läsa funktionsfilstegen. Till exempel när du kör @smokeTest kommer gurka att läsa Funktionssteg och ges ett uttalande av scenariot. Så snart gurka hittar Givet uttalandet kommer samma givna uttalande 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 täcka hur man ställer in ett gurka-java-projekt och hur man integrerar Selen WebDriver med Gurka.
Senast uppdaterad: 18 januari 2021 06:40