bdd cucumber tutorial with examples
Deze diepgaande komkommer-zelfstudie bespreekt BDD en zijn voordelen, komkommerkader, omgevingsinstellingen, testscripts maken, komkommerfuncties, rapporten, enz.:
Komkommer is erg populair geworden en wordt nu veel gebruikt in de Software Testing Industry.
Eerste vereisten - Beoogde ontvangers moeten kennis hebben van Scrum, Maven, TestNG, etc.
Wat je leert:
- Achtergrond van BDD
- Voordelen van gedragsgestuurde ontwikkeling (BDD)
- BDD-hulpprogramma's
- Waarom komkommer?
- Hoe werkt komkommer?
- Milieu-instellingen
- Testcases schrijven met komkommer
- Bestanden maken voor komkommer
- Komkommer kenmerken
- TestNG Met Komkommer
- Gevolgtrekking
- Aanbevolen literatuur
Achtergrond van BDD
In de TDD Framework of Agile-methodologie schrijven we normaal gesproken eerst de testcases en voeren deze vervolgens uit. Dit is goed om Test Coverage te bereiken en ervoor te zorgen dat de build klaar is voor productie.
We kunnen het TDD-raamwerk echter verbeteren door gedragingen, functies, enz. In de test te introduceren en vervolgens hetzelfde uit te voeren. Deze verbetering van TDD wordt BDD (Behavior Driven Development) genoemd.
Voordelen van gedragsgestuurde ontwikkeling (BDD)
Enkele voordelen van het gebruik van BDD zijn:
# 1) Overbrugt de kloof tussen zakelijke belanghebbenden en het technische team via een gemeenschappelijk platform. Daarom wordt de communicatie tussen het team transparanter.
#twee) Scenario's kunnen door iedereen worden geschreven, inclusief mensen van de kant van de klant, een lid van het zakelijke team, het management, enz. Vandaar dat de vereisten en scenario's worden afgedekt.
# 3) Ontwikkelaars zullen de code schrijven in overeenstemming met de scenario's die in het BDD-framework zijn geschreven in plaats van de code te schrijven / ontwikkelen volgens hun begrip.
# 4) Het testen wordt scherper, de tijd die wordt besteed aan het maken en vervolgens uitvoeren van een test wordt bespaard, met name kritieke defecten die van invloed kunnen zijn op het bedrijf, zijn te vinden in de frontend zelf.
# 5) Code, documentatie met betrekking tot BDD zijn gemakkelijk te begrijpen en te onderhouden, aangezien er geen andere inspanning nodig is om de code te onderhouden, aangezien de documenten en de bijbehorende code al gerelateerd zijn. Daarom heeft wat in de documentatie wordt vermeld, d.w.z. scenario's, de bijbehorende code.
# 6) Omdat we zeer gemakkelijk te begrijpen scenario's hebben, kunnen we ze gemakkelijk op een logische manier in taken, subtaken, enz. Opsplitsen.
# 7) Het team kan dynamischer en wendbaarder zijn omdat er vooraf duidelijkheid is over de scenario's, acceptatiecriteria en een bijna nauwkeurige testschatting.
# 8) Zeer goed platform voor een nieuw lid om met het bestaande team te trimmen, zowel qua documentatie als de code vanwege de eenvoud.
# 9) Het helpt niet alleen bij het valideren van de scenario's (meestal UI, gedragsgerelateerd), maar het helpt ook bij testcases op unit-niveau.
# 10) Het is ook handig om de voortgang van het team vanaf de eerste dag bij te houden, omdat de vereisten en scenario's duidelijk zijn gedefinieerd (iets dat de ontwikkelaars meestal moeilijk kunnen verzamelen in TDD).
Vandaar dat de implementatie van BDD de veronderstelling wegneemt dat 'eindklant niet nadenkt over het belang van testen', 'opdrachtgever niet betrokken wil zijn bij de testactiviteiten', enz.
BDD-hulpprogramma's
Er zijn verschillende testtools waarmee we de BDD-aanpak kunnen implementeren.
Zoals:
- Komkommer
- SpecFlow
- Jbehave
- Sla
- Concordion
- FitNesse
- BeanSpec
- Makkelijk B
- Jdave
- Givwenzen-flex
- GivWenZen
- Instinct
- Tumbler-glas
- Gospecify
- Spectaculair
- dSpec
- Specs
- Biefstuk
- JSSpec
Van de bovenstaande tools werkt Jbehave vrij gelijkaardig aan Cucumber, maar deze verschillen enigszins in termen van hun implementatie.
JBEHAVE | KOMKOMMER |
---|---|
Ondersteunt externe gegevensbronnen | Het ondersteunt geen externe gegevensbronnen |
Ondersteunt verhalen | Ondersteunt functies |
Zeer goede documentatie | Geen standaard documentatie |
Ondersteunt samengestelde treden | Ondersteunt geen samengestelde stappen |
Niet zo flexibel | Flexibel in het doorgeven van parameters |
Ondersteunt geen achtergrond | Ondersteunt achtergrond |
Niet zo uitgebreide rapporten | Betere opmaakflexibiliteit, ingebouwde rapporten |
Ontwikkeld met Java | Ontwikkeld met Ruby |
Waarom komkommer?
Komkommer wordt gebruikt voor het schrijven van allerlei testcases, met name testcases op acceptatieniveau (waarover eindgebruikers zich meer zorgen maken) geschreven in een Behavioural Driven Development-stijl. Het ondersteunt het gebruik van taalparsers zoals augurk.
Oorspronkelijk is Cucumber geschreven met de programmeertaal Ruby en speciaal ontwikkeld voor het testen van Ruby. Maar nu wordt het ondersteund door andere programmeertalen zoals Java.
Augurk wordt gebruikt als de taal waarin de testcases zijn geschreven in een eenvoudig formaat en ook kunnen worden gelezen en gewijzigd door een niet-technische gebruiker.
Behalve Engels ondersteunt Cucumber ook andere talen.
Hoe werkt komkommer?
Wat betreft het werkingsmechanisme, laten we eerst de gebruikers (technisch / niet-technisch) hun gewenste testcases (als functies) schrijven met behulp van de augurk-syntaxis, zodra het klaar is, moeten we ervoor zorgen dat ze zijn goedgekeurd, zodat ze naar het volgende niveau.
Daarna moeten we scripts voor elke regel implementeren (met behulp van een stepdef-bestand) zoals vermeld in het feature-bestand. Zodra de codes zijn geïmplementeerd, zou het volgende zijn om de scripts uit te voeren (met behulp van een runner-bestand).
Milieu-instellingen
De omgevingsopstelling voor Cucumber is enigszins ingewikkeld in vergelijking met het werken met een ander hulpmiddel zoals Eclipse of een andere IDE.
Uitdagingen
We moeten ervoor zorgen dat de versies van Cucumber-potten overeenkomen met de geïnstalleerde Java-versie en met de IDE waarin we momenteel werken.
Milieu-instellingen
# 1) Eclipse Cucumber-plug-in : Het helpt de Eclipse om de Gherkin-syntaxis te begrijpen en benadrukt de syntaxis van het feature-bestand in plaats van een platte tekst.
We moeten naar toe Eclipse >> Help >> Installeer nieuwe software >> Klik op de knop Toevoegen >> Specificeer de locatie zoals deze De naam zegt 'Komkommer' en klik vervolgens op OK en volg de rest van het installatieproces.
Start eindelijk uw IDE opnieuw, d.w.z. Eclipse.
#twee) Gebruik Maven om alle potjes te hebben, d.w.z. afhankelijkheden, plug-ins, enz. Zoals hieronder vermeld.
# 3) Zorg ervoor dat we Ctrl + s uitvoeren of Maven-installatie uitvoeren.
# 4) Zorg er daarna voor dat u Maven-build uitvoert om afhankelijkheidsgerelateerde fouten te voorkomen, zodat we later geen afhankelijkheids-, plug-in-, versie-mismatch-fout hebben.
sql server 2012 interviewvragen en antwoorden voor ervaren pdf
# 5) Zodra de bovenstaande stappen zijn voltooid, is onze omgeving klaar.
Testcases schrijven met komkommer
Komkommer bevat de volgende drie bestanden:
- Feature-bestand: Hier schrijven we de functies die moeten worden getest in augurk-indeling, d.w.z. gegeven wanneer dan. We kunnen zelfs het feature-bestand uitvoeren om de testscripts uit te voeren die in het Stepdef-bestand zijn geschreven.
- Stepdef-bestand: Zodra het Feature-bestand klaar is, kan elke zin van het Feature-bestand verder worden geïmplementeerd via het Stepdef-bestand.
- Runner-bestand: Dit is alleen om het eigenlijke testscript uit te voeren dat over het Stepdef-bestand is geschreven door naar het feature-bestand te verwijzen. Afgezien daarvan heeft het vele andere opties voor maatwerk, rapportage, selectieve uitvoering, enz.
Hier is een eenvoudig voorbeeld van een Runner-bestand
Bestanden maken voor komkommer
- Stepdef-bestand - Src / test / java >> Nieuw >> Overige >> Komkommer >> StepDef klasse.
- Feature-bestand - Project >> Nieuw >> Bestand >> specificeer de naam voor het bestand met de extensie ‘.feature’.
- Runner-bestand - Het is vergelijkbaar met het maken van andere Java-klassen, maar het kan zijn dat we hier een methode moeten implementeren.
Komkommer kenmerken
Hier zijn enkele basisfuncties van komkommer die we in ons testscript zullen implementeren.
# 1) Komkommerhaken
Dit zijn de blokken van de code die voor of na elk scenario worden uitgevoerd. Zodat we deze overal in ons project kunnen definiëren. Bijvoorbeeld, Stap Definitie.
Volgens de definitie zijn dit slechts twee annotaties @After en @Before. In de console kunnen we zien dat de blokken worden uitgevoerd en duidelijke uitvoer geven. We kunnen ook de hooks uitvoeren voor specifieke tags.
# 2) Komkommertags
Deze worden normaal gesproken over het feature-bestand gebruikt om de scenario's over de feature-bestanden te classificeren volgens hun gegeven tagnaam. We kunnen meerdere tags hebben voor een bepaald scenario in het feature-bestand.
Tags zijn door de gebruiker gedefinieerd en we kunnen er elke naam aan geven, zoals @Smoke, @Regression, etc.
# 3) Komkommeraantekeningen
Deze zijn ingebouwd in komkommer. Normaal gesproken zijn tags @Given, @When, @Then.
Als we dat later nodig hebben, kunnen we echter onze eigen annotatie maken en deze vervolgens in ons programma gebruiken. Tijdens de uitvoering wordt de overeenkomende lijmcode, d.w.z. functies, geschreven in een Stepdef-bestand met @Given, @When, @Then wordt uitgevoerd.
# 4) Komkommerachtergrond
Dit zijn stappen of series stappen die gemeenschappelijk zijn voor alle scenario's in het feature-bestand.
Het stelt ons in staat om wat context toe te voegen aan de scenario's voor een functie waar deze is gedefinieerd. Het wordt uitgevoerd vóór elk scenario voor een functie waarin het is gedefinieerd.
# 5) Gegevenstabellen voor komkommers
Cucumber heeft de functie om gegevensgestuurd testen te ondersteunen, waardoor we automatisch een testcase meerdere keren kunnen uitvoeren met verschillende invoer- en validatiewaarden voor een bepaald script.
Komkommer ondersteunt de gegevenstabel. De eerste rij wordt beschouwd als de kolom en de rijen ernaast zijn de gegevens voor de scripts.
# 6) Komkommer transponeren
Dit is een kleine wijziging in de datatabel Cucumber. Hier wordt de eerste kolom als kolom beschouwd en de volgende kolommen als gegevens voor de scripts.
# 7) Multi-scenario's voor komkommers
Met Cucumber kunnen we meerdere scenario's testen onder één feature-bestand.
# 8) Komkommerrapportage
In tegenstelling tot rapportage- en andere tools van derden, waarbij we enige configuratie moeten uitvoeren om de rapportage te bekijken.
Hier in Cucumber hebben we ingebouwde plug-ins zoals pretty, JSON, HTML, XML die ons het uitgebreide rapport van testuitvoering geven.
TestNG Met Komkommer
We kunnen nog steeds de JUnit-testcases uitvoeren die in Cucumber zijn geschreven met TestNG door te volgen:
- We moeten de afhankelijkheden toevoegen aan het Maven-project.
- Breid de klasse uit in de klasse Runner als pakketrunner van AbstractTestNGCucumberTests.
- Converteer het maven-project en voeg het pakket toe (waar de klasse runner bestaat).
Daarna kunnen we de volledige Cucumber-testcase als TestNG uitvoeren en rapporten met betrekking tot hetzelfde genereren (als we de luisteraars hebben).
In deze tutorial bespreken we 3 verschillende voorbeelden van komkommers om de bovenstaande concepten te behandelen
voorbeeld 1
Het behandelt hooks, tags, annotaties, achtergrond, meerdere scenario's en TestNG met komkommer.
Zodra de testomgeving is ingesteld:
- Voeg de Eclipse Cucumber-plug-in toe in Eclipse.
- Maak een Maven-project en voeg alle vereiste afhankelijkheden eraan toe en voeg ook TestNG-gerelateerde afhankelijkheid toe in Maven.
- Maak een nieuw feature-bestand.
- Voeg de vereiste implementatie ervoor toe in het Stepdef-bestand.
- Maak nu een runner-bestand met extends AbstractTestNGCucumberTests.
- Converteer het Maven-project naar TestNG en voeg in testng.xml het pakketpad van de Cucumber runner-klasse toe.
- Voer het bestand TestNG.xml uit.
Feature-bestand
Voorzien zijn van:
Als gebruiker
Ik wil nieuwe klanten aan het systeem kunnen toevoegen
Zodat ik boekhoudgegevens voor die klant kan toevoegen
Achtergrond:
Gegeven dat ik op de startpagina van Github ben
Wanneer ik gebruikersnaam specificeer als 'xxxxxxxxxxxxxxxxxxxx' en wachtwoord als 'xxx'
En klik op de knop Aanmelden
@Rook
Scenario: Het profiel bewerken
Aangezien ik op de optie Uw profiel klik
Wanneer ik op de knop Profiel bewerken klik
En nieuwe foto geüpload
Dan zou ik een nieuwe profielfoto moeten zien
@Regressie @Everytime
Scenario: Creëer een nieuwe kern
Aangezien ik op de optie Your Gists klik
Wanneer ik een bestandsnaam geef, een beschrijving
En klik op Maak openbare gist-methode
Dan zou ik de nieuwe kern moeten zien
Stepdef-bestand
Hier is het testresultaat van TestNG XML
Het standaard TestNG-rapport ziet eruit als het onderstaande.
Voorbeeld 2
Het behandelt gegevenstabellen en transponeert.
Zodra de omgeving is ingesteld:
- Voeg de Eclipse Cucumber-plug-in toe in Eclipse.
- Maak een Maven-project en voeg alle vereiste afhankelijkheden eraan toe.
- Maak een nieuw feature-bestand.
- Voeg de vereiste implementatie ervoor toe in het stepdef-bestand.
- Voer rechtstreeks uit vanuit het feature-bestand door met de rechtermuisknop op het bestand >> Uitvoeren als >> Cucumber.feature te klikken
Feature-bestand
Voorzien zijn van: Titel van uw element
Ik wil deze sjabloon gebruiken voor mijn feature-bestand
Achtergrond:
Aangezien ik op de inlogpagina van Gmail ben
Wanneer ik gebruikersnaam en wachtwoord specificeer
En klik op de knop Aanmelden
Scenario: Maak een nieuw bericht vanuit de gegevenstabel
Wanneer ik op de nieuwe e-mailpagina ben
En ik specificeer de volgende details
To1 | Onderwerp |
Persoon1@email.com | Persoon1 onderwerp |
Persoon2@email.com | Persoon2 onderwerp |
Scenario: Maak een nieuw bericht van de getransponeerde gegevenstabel
Wanneer ik op de nieuwe e-mailpagina ben
En ik specificeer de volgende details van de transponeertabel
To1 | Persoon1@email.com | Persoon2@email.com |
Onderwerp | Persoon1 onderwerp | Persoon2 onderwerp |
Stepdef-bestand
Uitvoer : Dus het bovenstaande voorbeeld zal inloggen op Gmail en twee e-mails verzenden voor elk scenario dat voor de gegevenstabel en de getransponeerde gegevenstabel is.
Voorbeeld 3
Het zal rapportage omvatten.
Zodra de omgeving is ingesteld:
- Voeg de Eclipse Cucumber-plug-in toe in Eclipse.
- Maak een Maven-project en voeg alle vereiste afhankelijkheden eraan toe.
- Maak een nieuw feature-bestand.
- Voeg de vereiste implementatie ervoor toe in het Stepdef-bestand.
- Maak een runner-klasse en voer de runner-klasse uit.
- Bekijk alle soorten rapporten.
Feature-bestand
Voorzien zijn van: Titel van uw element
Ik wil deze sjabloon gebruiken voor mijn feature-bestand
@ tag1
Scenario: Titel van uw scenario
Gegeven dat ik op de startpagina van Github ben
Wanneer ik gebruikersnaam en wachtwoord specificeer
En klik op de knop Aanmelden
Dan zou ik de uitlogoptie moeten kunnen zien
Stepdef-bestand
Hier zijn de verschillende soorten rapporten die door Cucumber worden gegenereerd:
HTML-rapport
Mooi
Junit
Gevolgtrekking
Omdat het een open-source tool is, wordt Cucumber veel gebruikt in BDD. En het is heel gemakkelijk te begrijpen en het heeft veel reikwijdte met betrekking tot nieuwe functies en het is praktisch mogelijk om komkommer te integreren met Selenium of andere tools / potten van derden enz.
Omdat het actieve hulpgroepen / leden heeft, wordt het echt gemakkelijk voor iedereen die net is begonnen met het leren van komkommer of voor degenen die een gemiddelde kennis hebben van komkommer / BDD.
Cucumber ondersteunt verder de integratie met het Excel-blad en ook met Jenkins.
Aanbevolen literatuur
- Cucumber Selenium Tutorial: Cucumber Java Selenium WebDriver Integration
- Python DateTime-zelfstudie met voorbeelden
- REST API-testen met komkommer met behulp van BDD-benadering
- Automatiseringstests met behulp van komkommer-tool en selenium - Selenium-zelfstudie # 30
- Komkommer-augurk-zelfstudie: automatiseringstests met augurk
- Unix Shell Scripting Tutorial met voorbeelden
- Selenium Find Element By Text Tutorial met voorbeelden
- Java 'dit' trefwoord: zelfstudie met codevoorbeelden