rest api testing with cucumber using bdd approach
Denna handledning förklarar REST API-testning med gurka med BDD-metod. Den täcker programvaruinstallation, projektinstallation, testScript-körning och rapporter.
I den här artikeln kommer vi att se hur man kommer igång med REST API-testning i BDD-stil med gurka-ramverket.
Innan vi dyker djupt in i ämnet, låt oss förstå de viktiga begreppen som är involverade i det.
Låt oss börja!!
sql utvecklare intervju frågor och svar pdf
Vad du kommer att lära dig:
- Viktiga begrepp i REST API
- Hur fungerar gurka?
- Konfigurera gurktestram på Windows
- Slutsats
- Rekommenderad läsning
Viktiga begrepp i REST API
RESTEN
Detta är en arkitektonisk programvarustil. Den fullständiga formen av REST är representativ statsöverföring . Den definierar en uppsättning begränsningar som ska användas för att skapa webbtjänster. Webbtjänster som överensstämmer med REST-arkitekturen kallas RESTful web services.
REST API-testning
REST API-testning testar API med fyra huvudmetoder, dvs POST, GET, PUT och DELETE.
REST-mall
RestTemplate är en öppen källkodsfjäderramklass som ger ett bekvämt sätt att testa HTTP-baserade vilsam webbtjänster genom att tillhandahålla överbelastade metoder för HTTP-metoderna.
Notera : Om du vill veta mer om REST API Testing-konceptet kan du hänvisa till vår tidigare handledning ” REST API-testning med Spring RestTemplate och TestNG ”Där vi har beskrivit hur man utför REST API-testning manuellt tillsammans med konceptet JSON.
BDD
BDD är den beteendedrivna utvecklingsstrategin. Det här är en av programvaruutvecklingsteknikerna som har framkommit från den testdrivna utvecklingen, dvs. TDD-stil.
Principen för BDD-testning är att testfall skrivs på ett naturligt språk som också är lättläst av icke-programmerare.
Gurka
Gurka är ett verktyg som stöder beteendestyrd utveckling
Hur fungerar gurka?
Låt oss se hur gurka fungerar.
Gurka består av Feature Files, Step Definition Files och Runner-klass.
Funktionsfiler
Funktionsfiler skrivs av din affärsanalytiker eller kanske din sponsor. Dessa är skrivna i naturligt språkformat med specifikationer som beskrivs och validerar att applikationens funktioner enligt specifikationerna.
Dessa specifikationer har flera scenarier eller exempel som nämns i den. Varje scenario är en lista över vissa steg för gurka att arbeta igenom.
Låt oss överväga ett scenario där användaren vill logga in på systemet.
För att verifiera om detta fungerar enligt specifikationerna måste detta scenario beskrivas. Här är stegen som ska utföras tillsammans med önskat resultat enligt specifikationerna.
Bara för att få en uppfattning så ser ett exempelscenario ut:
Scenario: Login to the system Given User launches Login screen When User enters username, password and submit Then Login Successful message appears
Du kan se, varje scenario är en slags lista över stegen för gurka att arbeta igenom. För att Gurka ska förstå scenarierna måste de följa några grundläggande syntaxregler, kallade Gurka .
Stegdefinitionsfiler
Stegdefinitionsfiler mappar varje Gherkin-steg som nämns i en funktionsfil till implementeringskoden. Detta gör att gurka kan utföra den åtgärd som krävs för steget.
Gurka ramverk stöder många programmeringsspråk för att skriva stegdefinitioner som Java, .net och Ruby.
Notera : I artikeln ' REST API-testning med Spring RestTemplate och TestNG ”, Vi har utvecklat TestNG-testprojektet med vårmallen.
Nu kommer vi att utveckla testramverket för samma REST-tjänst och RestTemplate, men genom att använda Gurka för beteendestyrd utvecklingsteststil.
Låt oss komma igång med installationen av vårt ramverk för automatiseringstest med gurka!
Konfigurera gurktestram på Windows
# 1) Installation
(i) Vi ska använda Java för stegdefinitionsutveckling. Så ladda ner först JDK-installationsprogrammet för Windows från Orakel och installera Java på din maskin.
(ii) IDE (integrerad utvecklingsmiljö) : Jag har använt Eclipse som IDE för min utveckling av Automation Test Suite. Du kan ladda ner den från Förmörkelse
(iii) Skaffa Eclipse Plug-in för gurka:
Följ dessa steg i förmörkelsen:
- Välj Hjälp -> Installera ny programvara från menyalternativet.
- Stiga på 'Gurka Eclipse' i söktextrutan.
- Klicka på Installera knapp.
Gurka-plugin-installation i förmörkelse
- Fortsätt klicka på Nästa tills du når Granska licens skärm.
Klicka slutligen på kryssrutan för att acceptera licensavtalet och klicka på Avsluta knapp. Detta kommer att slutföra installationen. Starta om Eclipse IDE. Detta krävs för att plugin-installation ska gälla.
(iv) Fjäderburkar: Eftersom vi ska använda RestTemplate-klassen som tillhör vårramverket måste du ha vårramramar. Du kan ladda ner vårburkar från Vårens ramverk och spara den i den lokala mappen. Till exempel, C: / projectJar
(v) JSON-enkla burkar: Vi måste utföra JSON-parsning. Därför kommer vi att använda ett lätt JSON-enkelt API. Så ladda ner JSON-simple-1.1.jar och spara den till C: / projectJar
(vi) Gurkkrukor:
Du behöver följande gurkaskruvar för att köra gurkaprojektet:
- gurkakärna
- gurka-java
- gurka-JUnit
- gurka-JVM-deps
- gurka-rapportering
- gurka
- JUnit
- mockito-all
- rapportering
- gurka-HTML (För rapporter i html)
Du kan ladda ner dessa filer med pom.xml-filen. Men det enklaste sättet är att ladda ner dessa jar-filer från Centralförvar och spara jar-filerna i den lokala mappen, Till exempel, C: / projectJar
Nu, med detta, har vi slutfört alla nödvändiga installationer. Så, låt oss skapa vårt BDD Test Automation-projekt.
# 2) Projektinställning
- Skapa fil -> Ny -> Java-projekt -> Namnge den som ‘ CRUD_Cucumber '.
- Skapa nu ett nytt Java-paket demo.
- Konfigurera BuildPath för projektet:
- Som du har sett i det tidigare avsnittet har vi installerat Cucumber plug-in, nedladdade vår- och JSON-enkla burkar. Så det är dags att lägga till byggvägen i vårt projekt för att konsumera dem. För det, skapa en lib mapp i CRUD_Cucumber-mappen och kopiera nu alla burkar från C: / projectJar till lib / Gurka, lib / Spring mapp.
- Högerklicka på “ CRUD_Cucumber ' -> Bygg väg -> Konfigurera byggväg.
- Klicka på Bibliotek flik.
- Klicka på Lägg till burkar knapp-> Välj alla burkar från lib / Gurka mapp och lib / vår mapp. Detta lägger till alla gurkaskruvar, vårburkar och JSON-enkel burk i din projektbyggnad.
Din projektstruktur visas enligt följande i Eclipse Package Explorer.
Paketstruktur för testprojekt
# 3) Funktionsfil
Låt oss nu bygga vår funktionsfil DemoFeature.feature har funktionen som att utföra CRUD-operationer på medarbetarservice.
I vårt exempel har jag använt en dummy http://dummy.restapiexample.com/api exempel REST Service.
Den här funktionsfilen beskriver scenarierna för att utföra CRUD-operationerna, dvs. täcka CRUD (Create-Read-Update-Delete).
- Låt oss definiera funktionen först, i vårt fall är det Testing CRUD-metoder, som kan beskrivas enligt följande.
Feature: Test CRUD methods in Sample Employee REST API testing
- Nu har detta olika scenarier som Skapa, Uppdatera, Läs och Ta bort anställdsposten. Så ta en titt på POST-scenariot:
Scenario: Add Employee record
- Beskriv förutsättningen för testet som ställer in URL för anställdstjänsten.
Given I Set POST employee service api endpoint
- Ange det faktiska teststeget för att skicka en postförfrågan.
When I Set request HEADER And Send a POST HTTP request
- Beskriv nu verifieringen av svarsorganet.
Then I receive valid Response
Så i vår funktionsfil kommer scenariot att se ut så här:
Scenario: Add Employee record Given I Set POST employee service api endpoint When I Set request HEADER And Send a POST HTTP request Then I receive valid Response
På samma sätt kan du skriva de återstående scenarierna som visas nedan.
DemoFeature.feature
# 4) Steg Definition Implementering
För funktionssteg som används i ovanstående scenarier måste du skriva programmatiska implementeringar, i det här fallet är det Java.
En stegdefinition är en metod skriven i Java med ett uttryck. Den länkar sin metod till ett eller flera steg. Så när Gurka utför stegen som beskrivs i ett scenario med funktionsfilen, letar det först efter en matchning stegdefinition att verkställa.
Till exempel, när stegdefinition för Lägg till anställd med POST kan skrivas enligt följande.
För givet steg skrivs implementeringen enligt följande:
@Given('^I Set POST employee service api endpoint$') public void setPostEndpoint(){ addURI = 'http://dummy.restapiexample.com/api/v1/create'; System.out.println('Add URL :'+addURI); }
På samma sätt är definitionsmetoden för When step följande:
@When ('^Send a POST HTTP request$') public void sendPostRequest(){ doublename_id = Math.random(); emp_name = 'zozo_'+name_id;//Just to avoid Duplicate Name entry String jsonBody'{'name':''+emp_name+'','salary':'123','age':'23'}'; System.out.println('
' + jsonBody); HttpEntityentity = new HttpEntity(jsonBody, headers); //POST Method to Add New Employee restTemplate = newRestTemplate (); response = restTemplate.postForEntity(addURI, entity, String.class); }
Här är verifieringsstegsdelen, dvs. implementeringen av sedan steg:
@Then ('^I receive valid Response$') Public void verifyPostResponse(){ responseBodyPOST = response.getBody(); // Write response to file responseBody = response.getBody().toString(); System.out.println('responseBody --->' + responseBody); // Get ID from the Response object employeeId = getEmpIdFromResponse(responseBody); System.out.println('empId is :' + employeeId); // Check if the added Employee is present in the response body. Assert.hasText(responseBody,employeeId); // Check if the status code is 201 Assert.isTrue(response.getStatusCode()==HttpStatus.OK); System.out.println('Employee is Added successfully employeeId:'+employeeId); }
Notera: Här använder vi RestTemplate-metoden för att skicka begäran. Detta är samma som metoden som används i REST API-testning med Spring RestTemplate och TestNG '' . Om du vill veta mer om Rest Template-metoder kan du hänvisa till handledningen.
Således kommer din stegdefinition att se ut enligt följande.
StepDefinition.java
Du kan implementera stegdefinitionerna för de återstående scenarierna Uppdatera, Läs och Ta bort anställd på samma sätt.
# 5) Köra testerna
Nu har vi slutfört vårt scenario och steg-skriptutvecklingsuppgift, så låt oss köra våra tester. För detta måste vi skriva en JUnit-löparklass.
publicclassRunner { }
Här måste du lägga till följande kommentarer ovanför klassnamnet:
@RunWith (Cucumber.class): Att springa som en testlöparklass för Gurka.
@CucumberOptions: Här anger du platsfunktionerna för funktioner och plats för stegdefinition för gurkastrukturen att undersöka under körningen.
features='' glue=''
Plug-in: Detta används för att specificera olika formateringsalternativ för rapporten som genereras som utdata.
Därför kommer din löparklass att se ut så här.
TestRunner.java
Högerklicka bara på TestRunner.java och välj alternativet “ Kör som JUnit Test ' . Detta visar testkörningsresultatet enligt följande.
Junit Tab Output
Följande meddelanden visas på konsolen.
Konsolutgång
# 6) Rapporter
Vi har sett resultatet på konsolen. Cucumber ger dock testresultat i ett mer presentabelt HTML-format som kan delas med dina intressenter.
Öppen mål -> gurka-rapporter i webbläsaren.
Notera : Kommer du ihåg Junit-löparklass CucucmberOptions?
@CucumberOptions (features='Features',glue={'demo'},plugin={'pretty', 'html:target/cucumber-reports'})
Här är plugin det alternativ som vi anger för HTML-formatrapporter tillsammans med mappen.
target/cucumber-reports
Öppna nu mål gurka-rapporter index.html-sidan. Rapportsidan är HTML-sidan där du kan se funktionsnamnet med scenarier som har körts framgångsrikt.
Så din rapport kommer att se ut enligt följande.
CucumberTest-resultat i HTML-format
Slutsats
För att avsluta denna handledning, låt oss sammanfatta vad vi har lärt oss hittills.
Vi såg alla steg från början för att ställa in BDD Cucumber REST API Test Automation Framework.
I denna process lärde vi oss följande:
- För testautomatisering valde vi Java som programmeringsspråk.
- Vi valde gurka som testram för att skapa en testsvit på sättet Behavior Driven Development.
- För att skicka faktiska HTTP-förfrågningar till servern konsumerade vi vårens ramverk RestTemplate-klass.
- För att konsumera dessa API: er installerade vi gurka-plugin-programmet, laddade ner burkfilerna för gurkaberoende, Spring-burkar och JSON-enkel burk för parser-API.
- Vi skapade Feature-filen för att beskriva scenarier på vanlig engelska, Step Definition-fil för att mappa Steps och JUnit Runner-klass för att köra Feature-filen.
- Slutligen körde vi Test Runner-klassen och såg resultatet på konsolen i ett mer presentabelt och läsbart HTML-format.
Kort sagt förklarade den här artikeln hur man kommer igång med REST API-testautomatisering med gurka. Vi täckte upp installationen av vårt ramverk för testautomatisering direkt från installationen av all nödvändig programvara, Project Setup, TestScript-utveckling till testkörning och visning av genererade rapporter.
Detta är tillräckligt för alla automatiserings-QA för att komma igång med testautomatiseringsramen. Men om någon vill förstå i detalj hur gurka fungerar internt, hur fungerar ättikspråk, kan det undersökas på Gurka.
Jag hoppas att du är redo att komma igång med testningen av REST API i BDD-stil med gurka !!
Rekommenderad läsning
- 10 bästa API-testverktyg 2021 (SOAP och REST API-testverktyg)
- Bästa verktyg för testning av programvara 2021 (QA Test Automation Tools)
- REST API-testning med Spring RestTemplate och TestNG
- Testing Primer eBook Download
- Topp 20 viktigaste API-testintervjuer och svar
- SaaS-testning: utmaningar, verktyg och testmetod
- Att göra API-testning enkelt med Katalon Studio
- Automationstestning med gurkaverktyg och selen - Selen självstudie # 30