Automatiseringstests met behulp van Cucumber Tool en Selenium – Selenium Tutorial # 30

In de vorige Selenium-tutorial hebben we u kennis laten maken met Selenium Grid, een gedistribueerde testomgeving om te versnellen de uitvoering van een testpas.

Nu aan het einde van deze uitgebreide Selenium-trainingsreeks leren we geavanceerde Selenium-testen en gerelateerde concepten.

In deze en de volgende tutorial leren we zal u kennis laten maken met het komkommer – een gedragsgestuurde ontwikkeling (BDD) -raamwerk dat wordt gebruikt met Selenium voor het uitvoeren van acceptatietests.

Inleiding komkommer

Een komkommer is een tool gebaseerd op het Behavior Driven Development (BDD) framework dat gebruikt wordt om acceptatietests voor de webapplicatie te schrijven. Het maakt automatisering van functionele validatie mogelijk in een gemakkelijk leesbaar en begrijpelijk formaat (zoals gewoon Engels) voor bedrijfsanalisten, ontwikkelaars, testers, enz.

Komkommer-feature-bestanden kunnen als een goed document voor iedereen dienen. Er zijn veel andere tools zoals JBehave die ook het BDD-framework ondersteunen. Aanvankelijk werd Cucumber geïmplementeerd in Ruby en vervolgens uitgebreid naar Java-framework. Beide tools ondersteunen native JUnit.

Behavior Driven Development is een uitbreiding van Test Driven Development en wordt gebruikt om het systeem te testen in plaats van het specifieke stuk code te testen. We zullen meer de BDD en de stijl van het schrijven van BDD-tests bespreken.

Komkommer kan samen met Selenium, Watir en Capibara enz. Worden gebruikt. Komkommer ondersteunt vele andere talen zoals Perl, PHP, Python, Net enz. in deze tutorial zullen we ons concentreren op komkommer met Java als taal.

Cucumber Basics

Om komkommer te begrijpen, moeten we alle kenmerken van komkommer en het gebruik ervan kennen.

# 1) Feature-bestanden:

Feature-bestanden zijn het essentiële onderdeel van komkommer die wordt gebruikt om testautomatiseringsstappen of acceptatietests te schrijven. Dit kan worden gebruikt als het live document. De stappen zijn de toepassingsspecificatie. Alle feature-bestanden eindigen op .feature-extensie.

Voorbeeld feature-bestand:

Feature: Login-functionaliteit-functie

Om ervoor te zorgen dat de inlog-functionaliteit werkt,
Ik wil de komkommertest uitvoeren om te controleren of deze werkt

Scenario: inlogfunctionaliteit

Gegeven gebruiker navigeert naar SOFTWARETINGHELP.COM
Wanneer gebruiker inlogt met gebruikersnaam als “GEBRUIKER ”En wachtwoord” PASSWORD “
Dan moet het inloggen succesvol zijn

Scenario: inlogfunctionaliteit

Gegeven gebruiker navigeert naar SOFTWARETETINGHELP.COM
Wanneer gebruiker inlogt met gebruikersnaam als” USER1 “en wachtwoord” PASSWORD1 “
Dan zou er een foutmelding moeten verschijnen.

# 2) Functie:

Dit geeft informatie over de zakelijke functionaliteit op hoog niveau (raadpleeg de vorige voorbeeld) en het doel van de te testen applicatie. Iedereen zou de bedoeling van het feature-bestand moeten kunnen begrijpen door de eerste Feature-stap te lezen. Dit deel wordt in principe kort gehouden.

# 3) Scenario:

In wezen vertegenwoordigt een scenario een bepaalde functionaliteit die wordt getest. Door het scenario te zien, moet de gebruiker de bedoeling achter het scenario kunnen begrijpen en waar de test over gaat. Elk scenario zou moeten volgen, gegeven, wanneer en dan opgemaakt. Deze taal wordt “augurk” genoemd.

  1. Gegeven: zoals hierboven vermeld, specificeert gegeven de voorwaarden. Het is in feite een bekende staat.
  2. Wanneer: dit is gebruikt wanneer een actie moet worden uitgevoerd. Zoals in het bovenstaande voorbeeld hebben we gezien dat wanneer de gebruiker probeert in te loggen met gebruikersnaam en wachtwoord, het een actie wordt.
  3. Dan: Het verwachte resultaat of resultaat zou moeten zijn hier geplaatst. Bijvoorbeeld: controleer of het inloggen is gelukt, succesvolle paginanavigatie.
  4. Achtergrond: elke stap die moet worden uitgevoerd in elk scenario, moeten die stappen op de achtergrond worden geplaatst. Bijvoorbeeld: als een moet de gebruiker de database wissen voor elk scenario, dan kunnen die stappen op een achtergrond worden geplaatst.
  5. En: En wordt gebruikt om twee of meer van hetzelfde type acties te combineren.

Voorbeeld:

Functie: functie inlogfunctionaliteit

Scenario: inlogfunctie
Gegeven gebruiker navigeert naar SOFTWARETINGHELP.COM
Wanneer gebruiker inlogt met gebruikersnaam als “GEBRUIKER”
En passwo rd als “wachtwoord”
Dan zou het inloggen succesvol moeten zijn
En de startpagina moet worden weergegeven

Voorbeeld van achtergrond:

Achtergrond:

Gegeven gebruiker aangemeld als databasebeheerder
En alle ongewenste waarden worden gewist

# 4) Scenario-omtrek:

Scenario-omtrek wordt gebruikt wanneer dezelfde test moet worden uitgevoerd met verschillende gegevensset. Laten we hetzelfde voorbeeld nemen. We moeten de inlogfunctionaliteit testen met meerdere verschillende sets gebruikersnaam en wachtwoord.

Functie: Functie inlogfunctionaliteit

Om ervoor te zorgen dat de inlogfunctionaliteit werkt,
Ik wil de komkommertest om te controleren of het werkt

Scenario-overzicht: inlogfunctionaliteit

Gegeven gebruiker navigeert naar SOFTWARETESTINGHELP.COM
Wanneer de gebruiker inlogt met gebruikersnaam als < gebruikersnaam > en wachtwoord < wachtwoord >
Dan moet het inloggen succesvol zijn

Voorbeelden:
| gebruikersnaam | wachtwoord |
| Tom | wachtwoord1 |
| Harry | wachtwoord2 |
| Jerry | wachtwoord3 |

Opmerking:

  1. Zoals in het bovenstaande voorbeeld wordt getoond, worden kolomnamen als parameter doorgegeven aan When-instructie.
  2. In plaats van Scenario moet u Scenario Outline gebruiken.
  3. Voorbeelden worden gebruikt om verschillende argumenten in tabelvorm door te geven. Verticale buizen worden gebruikt om twee verschillende kolommen te scheiden. Een voorbeeld kan veel verschillende kolommen bevatten.

# 5) Tags:

Komkommer voert standaard alle scenarios uit in alle feature-bestanden. In real-time projecten kunnen er honderden feature-bestanden zijn die niet altijd hoeven te worden uitgevoerd.

Bijvoorbeeld: Feature-bestanden met betrekking tot rooktesten hoeven niet altijd te worden uitgevoerd. Dus als je een tag noemt als rookloos in elk feature-bestand dat gerelateerd is aan rooktest en komkommertest uitvoert met @SmokeTest-tag. Cucumber zal alleen die feature-bestanden uitvoeren die specifiek zijn voor bepaalde tags. Volg het onderstaande voorbeeld. U kunt meerdere tags in één feature-bestand specificeren.

Voorbeeld van het gebruik van enkele tags:

@SmokeTest

Functie: Functie voor inloggen

Om ervoor te zorgen dat de inlogfunctionaliteit werkt,
Ik wil de komkommertest uitvoeren om te controleren of deze werkt

Scenario-overzicht: inlogfunctionaliteit

Gegeven gebruiker navigeert naar SOFTWARETESTINGHELP. COM
Wanneer de gebruiker inlogt met gebruikersnaam als < gebruikersnaam > en wachtwoord < wachtwoord >
Dan moet het inloggen succesvol zijn

Voorbeeld van het gebruik van meerdere tags:

Zoals getoond in onderstaand voorbeeld, hetzelfde feature-bestand kan worden gebruikt voor rooktestscenarios en voor inlogtestscenarios. Als u van plan bent uw script voor een rooktest uit te voeren, gebruik dan @SmokeTest. Op dezelfde manier als u wilt dat uw script wordt uitgevoerd voor de login-test, gebruikt u de @LoginTest-tag.

Een willekeurig aantal tags kan worden vermeld voor een feature-bestand en voor een scenario.

@SmokeTest @ LoginTest

Functie: functie inlogfunctionaliteit

Om ervoor te zorgen dat de inlogfunctionaliteit werkt,
Ik wil de komkommertest uitvoeren om te controleren of deze werkt

Scenario-overzicht: inlogfunctionaliteit

Gegeven gebruiker navigeert naar SOFTWARETINGHELP.COM
Wanneer gebruiker inlogt met gebruikersnaam als < gebruikersnaam > en wachtwoord < wachtwoord >
Dan moet het inloggen succesvol zijn

Evenzo kunt u specificeer tags om het specifieke scenario in een feature-bestand uit te voeren. Controleer het onderstaande voorbeeld om een specifiek scenario uit te voeren.

Functie: Functie inlogfunctionaliteit

Om te controleren of de inlogfunctionaliteit werkt,
Ik wil de komkommertest uitvoeren om te verifiëren dat dit het geval is. working

@positiveScenario
Scenario: inlogfunctionaliteit

Gegeven gebruiker navigeert naar SOFTWARETINGHELP.COM
Wanneer gebruiker inlogt met gebruikersnaam als “GEBRUIKER” en wachtwoord “PASSWORD”
Dan zou het inloggen succesvol moeten zijn

@negaviveScenario
Scenario: inlogfunctionaliteit

Gegeven gebruiker navigeert naar SOFTWARETINGHELP.COM
Wanneer gebruiker inlogt met gebruikersnaam als “USER1” en wachtwoord “PASSWORD1”
Dan zou de foutmelding moeten geven

# 6) JUnit Runner:

Om het specifieke feature-bestand uit te voeren, gebruikt cucumber standaard JUnit Runner en specificeert u tags in @Cucumber . Opties. Meerdere tags kunnen worden gegeven door kommas te scheiden. Hier kunt u het pad specificeren van het rapport en het type rapport dat u wilt genereren.

Voorbeeld van Junit Runner:

Evenzo kunt u komkommer instructies geven om meerdere tags uit te voeren. Onderstaand voorbeeld illustreert hoe u meerdere tags in komkommer kunt gebruiken om verschillende scenarios uit te voeren.

# 7) Komkommerrapport:

Komkommer genereert zijn eigen HTML-formaat. U kunt echter beter rapporteren met de Jenkins- of Bamboo-tool. Details van rapportage worden behandeld in het volgende onderwerp van komkommer.

Komkommerproject instellen:

Gedetailleerde uitleg van het opzetten van komkommerproject is apart beschikbaar in de volgende tutorial. Raadpleeg Cucumber Tutorial Part 2 voor meer informatie over het opzetten van een project. Onthoud dat er geen extra software-installaties nodig zijn voor komkommer.

Implementatie van Feature-bestand:

We moeten deze stappen in Java implementeren om de feature-bestanden te testen. Moet een klasse maken die de gegeven, wanneer en dan instructies bevat. Komkommer gebruikt zijn annotaties en alle stappen zijn ingebed in die annotaties (gegeven, wanneer, dan). Elke zin begint met “^” zodat komkommer het begin van de stap begrijpt. Evenzo eindigt elke stap met “$”. De gebruiker kan reguliere expressies gebruiken om verschillende testgegevens door te geven. Reguliere expressies nemen gegevens van functiestappen en geven door aan stapdefinities.De volgorde van parameters hangt af van hoe ze worden doorgegeven vanuit het feature-bestand. Raadpleeg de volgende tutorial voor het opzetten van projecten en het in kaart brengen tussen feature-bestanden en Java-klassen.

Voorbeeld:

Onderstaand voorbeeld illustreert hoe feature-bestanden kunnen worden geïmplementeerd.

In dit voorbeeld hebben we geen selenium-API gebruikt. Dit is om te laten zien hoe komkommer werkt als een op zichzelf staand raamwerk. Volg de volgende tutorial voor seleniumintegratie met komkommer.

Wanneer je de komkommer-runnerklasse uitvoert, zal komkommer de feature-bestandsstappen gaan lezen. Als u bijvoorbeeld @smokeTest uitvoert, leest komkommer de functiestap en geeft een scenario-instructie. Zodra komkommer Gegeven de verklaring vindt, zal dezelfde Gegeven verklaring worden doorzocht op uw java-bestanden. Als dezelfde stap wordt gevonden in het Java-bestand, voert komkommer de functie uit die voor dezelfde stap is gespecificeerd, anders slaat komkommer de stap over.

Conclusie

In deze tutorial hebben we de functies van komkommertool en het gebruik ervan in realtime scenario.
Komkommer is een zeer favoriete tool voor veel projecten, omdat het gemakkelijk te begrijpen en leesbaar is en zakelijke functionaliteit bevat.

In het volgende hoofdstuk behandelen we hoe je een komkommer-java-project opzet en hoe je Selenium WebDriver integreert met Cucumber.

Laatst bijgewerkt: 18 januari 2021 06:40

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *