rest api testing with cucumber using bdd approach
In deze zelfstudie worden REST API-testen met komkommer uitgelegd met behulp van de BDD-benadering. Het behandelt software-installatie, projectconfiguratie, testScript-uitvoering en rapporten.
In dit artikel zullen we zien hoe u aan de slag kunt gaan met REST API Testing in BDD-stijl met het Cucumber-framework.
Voordat we dieper ingaan op het onderwerp, moeten we eerst de belangrijke concepten die erbij betrokken zijn, begrijpen.
Laten we beginnen!!
Wat je leert:
- Belangrijke concepten in REST API
- Hoe werkt komkommer?
- Het komkommertestframework instellen op Windows
- Gevolgtrekking
- Aanbevolen literatuur
Belangrijke concepten in REST API
RUST UIT
Dit is een softwarearchitectuurstijl. De volledige vorm van REST is representatieve staatsoverdracht Het definieert een reeks beperkingen die moeten worden gebruikt voor het maken van webservices. Webservices die voldoen aan de architectuurstijl REST worden RESTful webservices genoemd.
REST API-testen
REST API-testen is het testen van de API met behulp van 4 belangrijke methoden, namelijk POST, GET, PUT en DELETE.
REST-sjabloon
RestTemplate is een open-source springframeklasse die een gemakkelijke manier biedt om de op HTTP gebaseerde rustgevende webservices te testen door overbelaste methoden voor de HTTP-methoden te bieden.
Opmerking : Voor meer informatie over het REST API Testing-concept kunt u onze eerdere tutorial ‘ REST API-testen met Spring RestTemplate en TestNG ’Waar we hebben besproken hoe u REST API-tests handmatig kunt uitvoeren, samen met het concept van JSON.
BDD
BDD is de gedragsgestuurde ontwikkelingsbenadering. Dit is een van de softwareontwikkelingstechnieken die is voortgekomen uit de Test-Driven Development, d.w.z. TDD-stijl.
Het principe van BDD-testen is dat testcases worden geschreven in een natuurlijke taal die ook gemakkelijk leesbaar is voor niet-programmeurs.
Komkommer
Komkommer is een tool die gedragsgestuurde ontwikkeling ondersteunt
Hoe werkt komkommer?
Laten we eens kijken hoe komkommer werkt.
Cucumber bestaat uit Feature Files, Step Definition Files en Runner-klasse.
Feature-bestanden
Functiebestanden zijn geschreven door uw bedrijfsanalist of misschien uw sponsor. Deze zijn geschreven in natuurlijke taal met daarin beschreven specificaties en valideren dat de applicatie functioneert volgens de specificaties.
In deze specificaties worden meerdere scenario's of voorbeelden genoemd. Elk scenario is een lijst met bepaalde stappen die Komkommer moet doorlopen.
Laten we eens kijken naar een scenario waarin de gebruiker zich wil aanmelden bij het systeem.
Om te controleren of dit volgens de specificaties werkt, moet dit scenario worden beschreven. Hier zijn de stappen die moeten worden uitgevoerd, samen met het gewenste resultaat volgens de specificaties.
Om een idee te krijgen, dit is hoe een voorbeeldscenario eruit zal zien:
U kunt zien dat elk scenario een soort lijst is van de stappen die Komkommer moet doorlopen. Om Cucumber de scenario's te laten begrijpen, moeten ze enkele basissyntaxisregels volgen, genaamd Augurk
tar-commando in unix met voorbeelden
Stapdefinitiebestanden
Stapdefinitiebestanden wijzen elke augurkstap die in een Feature-bestand wordt genoemd, toe aan de implementatiecode. Hierdoor kan Cucumber de actie uitvoeren die door de stap moet worden uitgevoerd.
Het Cucumber-framework ondersteunt vele programmeertalen om Step-definities te schrijven, zoals Java, .net en Ruby.
Opmerking : In het artikel ' REST API-testen met Spring RestTemplate en TestNG ', Hebben we het TestNG-testproject ontwikkeld met het Spring-sjabloon.
Nu gaan we het Test Framework ontwikkelen voor dezelfde REST-service en RestTemplate, maar door Cucumber te gebruiken voor een gedragsgestuurde ontwikkelingsteststijl.
Laten we aan de slag gaan met het opzetten van ons automatiseringstestframework met Cucumber!
Het komkommertestframework instellen op Windows
# 1) Installatie
(ik) We gaan Java gebruiken voor de ontwikkeling van stapdefinities. Dus download eerst het JDK-installatieprogramma voor Windows van Orakel en installeer Java op uw computer.
(ii) IDE (Integrated Development Environment) : Ik heb Eclipse gebruikt als een IDE voor de ontwikkeling van mijn Automation Test Suite. U kunt het downloaden van Verduistering
(iii) Download de Eclipse-plug-in voor komkommer:
Volg deze stappen in de Eclipse:
- Selecteer Help -> Nieuwe software installeren in de menuoptie.
- Enter ‘Cucumber Eclipse’ in het zoektekstvak.
- Klik op de Installeren knop.
Cucumber plug-in installatie in Eclipse
- Blijf op de knop Volgende klikken totdat u het Review-licentie scherm.
Klik ten slotte op het selectievakje om de licentieovereenkomst te accepteren en klik op het Af hebben knop. Hiermee is de installatie voltooid. Start nu de Eclipse IDE opnieuw op. Dit is vereist om de plug-in-installatie van kracht te laten worden.
(iv) Spring Jars: Aangezien we de klasse RestTemplate gaan gebruiken die tot het springframework behoort, hebt u springframekruiken nodig. U kunt springpotten downloaden van het Spring Framework en sla het op in de lokale map. Bijvoorbeeld, C: / projectJar
(v) JSON-Simple Jars: We moeten JSON-parsing uitvoeren. Daarom zullen we een lichtgewicht JSON-eenvoudige API gebruiken. Dus download JSON-simple-1.1.jar en sla het op in C: / projectJar
(vi) Komkommerkruiken:
Je hebt de volgende komkommerpotten nodig om het komkommerproject uit te voeren:
- komkommer-kern
- komkommer-java
- komkommer-JUnit
- komkommer-JVM-deps
- komkommer-rapportage
- augurk
- JUnit
- mockito-all
- Dekking
- komkommer-HTML (voor rapporten in html)
U kunt deze bestanden downloaden met het bestand pom.xml. Maar de eenvoudigste manier is om deze jar-bestanden te downloaden van de Centrale opslagplaats en sla die jar-bestanden op in de lokale map, Bijvoorbeeld, C: / projectJar
Nu hebben we hiermee alle benodigde installaties voltooid. Dus laten we ons BDD Test Automation-project opzetten.
# 2) Projectopstelling
- Bestand maken -> Nieuw -> Java-project -> Noem het als ‘ CRUD_Cucumber ’.
- Maak nu een nieuw Java-pakket demo.
- Configureer BuildPath van het project:
- Zoals je in de eerdere sectie hebt gezien, hebben we de plug-in Cucumber, gedownloade spring en JSON-simple jars geïnstalleerd. Het is dus tijd om een bouwpad aan ons project toe te voegen om die te consumeren. Maak daarvoor een lib map in Map CRUD_Cucumber en kopieer nu alle potten van de C: / projectJar naar lib / komkommer, lib / lente map.
- Klik met de rechtermuisknop op ‘ CRUD_Cucumber ’ -> Build Path -> Build Path configureren.
- Klik op de Bibliotheken tabblad.
- Klik op Voeg potten toe knop-> Selecteer alle potten van de lib / komkommer map en lib / Spring map. Hiermee worden alle komkommerpotten, springpotten en JSON-simple jar toegevoegd aan het bouwpad van je project.
Uw projectstructuur wordt als volgt weergegeven in de Eclipse Package Explorer.
Pakketstructuur van testproject
# 3) Feature-bestand
Laten we nu ons feature-bestand bouwen DemoFeature.feature met de functie als het uitvoeren van CRUD-bewerkingen op de service van de werknemer.
In ons voorbeeld heb ik een dummy http://dummy.restapiexample.com/api voorbeeld REST-service gebruikt.
Dit functiebestand beschrijft de scenario's om de CRUD-bewerkingen uit te voeren, d.w.z. om CRUD te dekken (Create-Read-Update-Delete).
- Laten we eerst de Feature definiëren, in ons geval zijn het Testing CRUD-methoden, die als volgt kunnen worden beschreven.
- Dit heeft nu verschillende scenario's, zoals het werknemersrecord maken, bijwerken, lezen en verwijderen. Bekijk dus het POST-scenario:
- Beschrijf de voorwaarde voor de test, namelijk het instellen van de URL van de medewerkersdienst.
- Specificeer de daadwerkelijke teststap voor het verzenden van een postverzoek.
- Beschrijf nu de verificatie van het antwoordorgaan.
Dus in ons feature-bestand ziet het scenario er als volgt uit:
Evenzo kunt u de overige scenario's schrijven zoals hieronder wordt weergegeven.
DemoFeature.feature
# 4) Stappen Definitie Implementatie
Voor functiestappen die in de bovenstaande scenario's worden gebruikt, moet u programmatische implementaties schrijven, in dit geval is dit Java.
c ++ willekeurig tussen 0 en 1
Een stapdefinitie is een in Java geschreven methode met een uitdrukking. Het koppelt zijn methode aan een of meerdere stappen. Dus wanneer Cucumber de stappen uitvoert die zijn beschreven in een scenario van het feature-bestand, zoekt het eerst naar een overeenkomst stap definitie uitvoeren.
Bijvoorbeeld, wanneer stapdefinitie voor Werknemer toevoegen met behulp van POST kan als volgt worden geschreven.
Voor de gegeven stap wordt de implementatie als volgt geschreven:
Evenzo is voor When step het volgende de definitiemethode:
Nu, hier is het verificatiestapgedeelte, d.w.z. de implementatie van de stap Dan:
Notitie: Hier gebruiken we de RestTemplate-methode voor het verzenden van verzoeken. Dit is hetzelfde als de methode die wordt gebruikt in ‘ REST API-testen met Spring RestTemplate en TestNG Om meer te weten over Rest Template-methoden, kunt u de tutorial raadplegen.
Uw stapdefinitie ziet er dus als volgt uit.
StepDefinition.java
U kunt de stapdefinities voor de overige scenario's Werknemer bijwerken, lezen en verwijderen op dezelfde manier implementeren.
# 5) De tests uitvoeren
Nu hebben we onze ontwikkelingstaak voor scenario's en stapscripts voltooid, dus laten we onze tests uitvoeren. Hiervoor moeten we een JUnit-runnerklasse schrijven.
Hier moet u de volgende annotaties toevoegen boven de klassenaam:
@RunWith (Cucumber.class): Om te lopen als een testrunnerklas voor komkommer.
@CucumberOptions: Hier specificeert u de locatie van het Features-bestand en de locatie van het stapdefinitiebestand waar het Cucumber-framework naar moet kijken tijdens de uitvoering.
Inpluggen: Dit wordt gebruikt om verschillende opmaakopties op te geven voor het rapport dat als uitvoer wordt gegenereerd.
Daarom ziet je hardloperklas er zo uit.
TestRunner.java
Klik gewoon met de rechtermuisknop op TestRunner.java en selecteer de optie ‘ Uitvoeren als JUnit-test ' Dit zal het resultaat van de testuitvoering als volgt weergeven.
Junit-tabbladuitvoer
Vragen voor het programmeren van Java-serverzijde
U ziet de volgende berichten op de console.
Console-uitgang
# 6) Rapporten
We hebben het resultaat op de console gezien. Cucumber biedt echter testresultaten in een meer presentabel HTML-formaat dat kan worden gedeeld met uw belanghebbenden.
Open doelwit komkommer-rapporten in de browser.
Opmerking : Herinner je je Junit runner class CucucmberOptions nog?
Hier is de plug-in de optie die we samen met de map specificeren voor rapporten in HTML-indeling.
Open nu de doel komkommerrapporten index.html-pagina. De rapportpagina is de HTML-pagina waar u de functienaam kunt zien met scenario's die met succes zijn uitgevoerd.
Uw rapport ziet er dus als volgt uit.
Komkommertestresultaat in HTML-indeling
Gevolgtrekking
Laten we, om deze tutorial af te sluiten, samenvatten wat we tot nu toe hebben geleerd.
We hebben vanaf het begin alle stappen gezien om het BDD Cucumber REST API Test Automation Framework op te zetten.
In dit proces hebben we het volgende geleerd:
- Voor testautomatisering hebben we Java als programmeertaal gekozen.
- We kozen voor Cucumber als het testraamwerk voor het maken van een testsuite in de testmethode Behavior Driven Development.
- Voor het verzenden van daadwerkelijke HTTP-verzoeken naar de server hebben we de Spring framework RestTemplate-klasse gebruikt.
- Voor het gebruik van deze API's hebben we de Cucumber-plug-in geïnstalleerd, de Cucumber-afhankelijkheden jar-bestanden, Spring jars en JSON-simple jar voor parser-API gedownload.
- We hebben het Feature-bestand gemaakt om scenario's in gewoon Engels te beschrijven, het Step Definition-bestand om Steps toe te wijzen en de JUnit Runner-klasse om het Feature-bestand uit te voeren.
- Ten slotte hebben we de klasse Test Runner uitgevoerd en het resultaat op de console in een beter presenteerbare en leesbare HTML-indeling gezien.
Kortom, dit artikel legde uit hoe je aan de slag gaat met de REST API Testautomatisering met Cucumber. We behandelden het opzetten van ons testautomatiseringsraamwerk vanaf de installatie van alle essentiële software, projectconfiguratie, testScript-ontwikkeling tot testuitvoering en het bekijken van gegenereerde rapporten.
Dit is voldoende voor elke automatisering QA om aan de slag te gaan met het testautomatiseringsraamwerk. Maar als iemand in detail wil begrijpen hoe komkommer intern functioneert, hoe augurk werkt, dan kan dat onderzocht worden op Komkommer.
Ik hoop dat je klaar bent om aan de slag te gaan met het testen van REST API in BDD-stijl met komkommer !!
Aanbevolen literatuur
- 10 beste API-testtools in 2021 (SOAP- en REST API-testtools)
- Beste softwaretesttools 2021 (QA Test Automation Tools)
- REST API-testen met Spring RestTemplate en TestNG
- Primer eBook downloaden testen
- Top 20 belangrijkste API-testvragen en antwoorden voor interviews
- SaaS-testen: uitdagingen, tools en testaanpak
- API-testen eenvoudig maken met Katalon Studio
- Automatiseringstests met behulp van komkommer-tool en selenium - Selenium-zelfstudie # 30