rest api testing with cucumber using bdd approach
Denne veiledningen forklarer REST API-testing med agurk ved bruk av BDD-tilnærming. Den dekker programvareinstallasjon, prosjektoppsett, TestScript-gjennomføring og rapporter.
programvareutvikling livssyklusanalysefase
I denne artikkelen vil vi se hvordan du kommer i gang med REST API-testing i BDD-stil med agurkerammen.
Før vi dykker dypt inn i emnet, la oss forstå de viktige begrepene som er involvert i det.
La oss begynne!!
Hva du vil lære:
- Viktige konsepter i REST API
- Hvordan fungerer agurk?
- Sette opp agurk testrammer på Windows
- Konklusjon
- Anbefalt lesing
Viktige konsepter i REST API
HVILE
Dette er en programvarestrukturell stil. Den fulle formen for REST er representasjonsstatlig overføring . Den definerer et sett med begrensninger som skal brukes til å lage webtjenester. Webtjenester som samsvarer med REST-arkitektoniske stil kalles RESTful web-tjenester.
REST API-testing
REST API-testing tester API ved hjelp av fire hovedmetoder, dvs. POST, GET, PUT og DELETE.
REST-mal
RestTemplate er en åpen kildekode-rammeklasse som gir en praktisk måte å teste de HTTP-baserte avslappende webtjenestene ved å tilby overbelastede metoder for HTTP-metodene.
Merk : For å vite mer om REST API Testing-konseptet, kan du referere til vår tidligere opplæring ‘ REST API-testing med Spring RestTemplate og TestNG Der vi har dekket hvordan vi utfører REST API-testing manuelt sammen med konseptet JSON.
BDD
BDD er den atferdsstyrte utviklingsmetoden. Dette er en av programvareutviklingsteknikkene som har kommet fra den testdrevne utviklingen, dvs. TDD-stil.
Prinsippet med BDD-testing er at testtilfeller er skrevet på et naturlig språk som også er lettlest av ikke-programmerere.
Agurk
Agurk er et verktøy som støtter atferdsstyrt utvikling
Hvordan fungerer agurk?
La oss se hvordan agurk fungerer.
Agurk består av funksjonsfiler, trinndefinisjonsfiler og Runner-klasse.
Funksjonsfiler
Funksjonsfilene er skrevet av din forretningsanalytiker eller kanskje din sponsor. Disse er skrevet i naturlig språkformat med spesifikasjoner beskrevet i det og bekrefter at applikasjonens funksjoner i henhold til spesifikasjonene.
Disse spesifikasjonene har flere scenarier eller eksempler nevnt i den. Hvert scenario er en liste over bestemte trinn for agurk å gjennomgå.
La oss se på et scenario der brukeren vil logge på systemet.
For å bekrefte om dette fungerer i henhold til spesifikasjonene, må dette scenariet beskrives. Her er trinnene som skal utføres sammen med ønsket resultat i henhold til spesifikasjonene.
Bare for å få en ide, slik vil et eksempelscenario se 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, hvert scenario er en slags liste over trinnene for agurk å jobbe gjennom. For at agurk skal forstå scenariene, må de følge noen grunnleggende syntaksregler, kalt Agurk .
Trinndefinisjonsfiler
Trinndefinisjonsfiler tilordner hvert Gherkin-trinn nevnt i en funksjonsfil til implementeringskoden. Dette gjør at agurk kan utføre handlingen som kreves av trinnet.
Agurkerammeverk støtter mange programmeringsspråk for å skrive trinndefinisjoner som Java, .net og Ruby.
Merk : I artikkelen ‘ REST API-testing med Spring RestTemplate og TestNG ’, Vi har utviklet TestNG testprosjektet med vårmalen.
Nå skal vi utvikle Test Framework for den samme REST-tjenesten og RestTemplate, men ved å bruke Cucumber for atferdsdrevet utviklingstest for utvikling.
La oss komme i gang med oppsettet av vårt automatiske testrammeverk med agurk!
Sette opp agurk testrammer på Windows
# 1) Installasjon
(Jeg) Vi skal bruke Java for trinndefinisjonsutvikling. Så første nedlasting av JDK-installasjonsprogrammet for Windows fra Oracle og installer Java på maskinen din.
(ii) IDE (Integrert utviklingsmiljø) : Jeg har brukt Eclipse som IDE for min Automation Test Suite-utvikling. Du kan laste den ned fra Formørkelse
(iii) Få Eclipse Plug-in for agurk:
Følg disse trinnene i formørkelsen:
- Velg Hjelp -> Installer ny programvare fra menyvalget.
- Tast inn ‘Agurkformørkelse’ i søke tekstboksen.
- Klikk på Installere knapp.
Agurkplugg-installasjon i formørkelse
- Fortsett å klikke på Neste-knappen til du kommer til Gjennomgå lisens skjerm.
Til slutt klikker du i avkrysningsruten for å godta lisensavtalen og klikker på Bli ferdig knapp. Dette vil fullføre installasjonen. Start nå om formørkelsen IDE. Dette er nødvendig for å ta i bruk plugin-installasjonen.
(iv) Vårkrukker: Da vi skal bruke RestTemplate-klassen som hører til vårrammen, må du ha vårens rammekrukker. Du kan laste ned vårkrukker fra Vårramme og lagre den i den lokale mappen. For eksempel, C: / prosjektJar
(v) JSON-enkle krukker: Vi må utføre JSON-parsing. Derfor vil vi bruke en lett JSON-enkel API. Så, last ned JSON-simple-1.1.jar og lagre den til C: / prosjektJar
(vi) Agurkekrukker:
Du trenger følgende agurk krukker for å kjøre agurkprosjektet:
- agurk-kjerne
- agurk-java
- agurk-JUnit
- agurk-JVM-deps
- agurkrapportering
- agurk
- JUnit
- mockito-all
- dekning
- agurk-HTML (For rapporter i html)
Du kan laste ned disse filene ved hjelp av pom.xml-filen. Men den enkleste måten er å laste ned disse jar-filene fra Sentralt arkiv og lagre jar-filene i den lokale mappen, For eksempel, C: / prosjektJar
Nå, med dette, har vi fullført alle nødvendige installasjoner. Så la oss lage vårt BDD Test Automation-prosjekt.
# 2) Prosjektoppsett
- Opprett fil -> Ny -> Java-prosjekt -> Gi den navnet ‘ CRUD_Cucumber ’.
- Nå, opprett en ny Java-pakke demo.
- Konfigurer BuildPath for prosjektet:
- Som du har sett i den tidligere delen, har vi installert Cucumber plug-in, nedlastede vår- og JSON-enkle krukker. Så det er på tide å legge til byggesti i prosjektet vårt for å konsumere dem. For det, lag en lib mappen i CRUD_Cucumber ’-mappe og kopier nå alle glassene fra C: / projectJar til lib / Agurk, lib / Spring mappe.
- Høyreklikk på ‘ CRUD_ agurk ' -> Bygg sti -> Konfigurer byggesti.
- Klikk på Biblioteker kategorien.
- Klikk på Tilsett krukker knapp-> Velg alle krukker fra lib / agurk mappe og lib / vår mappe. Dette vil legge alle agurk krukker, vårkrukker og JSON-enkle krukke til prosjektbygningsstien din.
Prosjektstrukturen din vises som følger i Eclipse Package Explorer.
Pakkestruktur av testprosjekt
# 3) Feature File
La oss nå bygge funksjonsfilen vår DemoFeature.feature har funksjonen som Utfører CRUD-operasjoner på ansattes tjeneste.
I vårt eksempel har jeg brukt en dummy http://dummy.restapiexample.com/api eksempel REST Service.
Denne funksjonsfilen beskriver scenariene for å utføre CRUD-operasjonene, dvs. å dekke CRUD (Create-Read-Update-Delete).
- La oss definere funksjonen først, i vårt tilfelle er det Testing CRUD-metoder, som kan beskrives som følger.
Feature: Test CRUD methods in Sample Employee REST API testing
- Nå har dette forskjellige scenarier som Opprett, Oppdater, Les og Slett medarbeideroppføringen. Så ta en titt på POST-scenariet:
Scenario: Add Employee record
- Beskriv forutsetningen for testen som angir URL-en til ansattes tjeneste.
Given I Set POST employee service api endpoint
- Spesifiser testtrinnet for å sende en postforespørsel.
When I Set request HEADER And Send a POST HTTP request
- Beskriv nå verifiseringen av responsorganet.
Then I receive valid Response
Så i vår funksjonsfil vil scenariet se slik ut:
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å samme måte kan du skrive de gjenværende scenariene som vist nedenfor.
DemoFeature.feature
# 4) Trinn Definisjon Implementering
For funksjonstrinn som brukes i scenariene ovenfor, må du skrive programmatiske implementeringer, i dette tilfellet er det Java.
En trinndefinisjon er en metode skrevet i Java med et uttrykk. Den knytter metoden til ett eller flere trinn. Så når agurk utfører trinnene som er beskrevet i et scenario av funksjonsfilen, ser den først etter en samsvarende trinndefinisjon å henrette.
For eksempel, når trinndefinisjon for Legg til ansatt ved hjelp av POST kan skrives som følger.
For gitt trinn er implementering skrevet som følger:
@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å samme måte, for When step, er følgende definisjonsmetoden:
@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); }
Nå, her er verifiseringstrinndelen, dvs. implementeringen av deretter trinn:
@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); }
Merk: Her bruker vi RestTemplate-metoden for sending av forespørsel. Dette er det samme som metoden som brukes i REST API-testing med Spring RestTemplate og TestNG ' . For å vite mer om Rest Template-metoder, kan du henvise til opplæringen.
Dermed vil trinndefinisjonen din se slik ut.
StepDefinition.java
Du kan implementere trinndefinisjonene for de gjenværende scenariene Oppdater, Les og Slett ansatt på samme måte.
# 5) Kjører testene
Nå har vi fullført scenariet og trinnutviklingsoppgaven vår, så la oss kjøre testene våre. For dette må vi skrive en JUnit-løperklasse.
publicclassRunner { }
Her må du legge til følgende merknader over kursnavnet:
@RunWith (Cucumber.class): Å løpe som en testløperklasse for Agurk.
@CucumberOptions: Her angir du Filplassering av funksjoner og trinndefinisjonsfilplassering for agurkrammeverket å se på under utførelse.
features='' glue=''
Plugg inn: Dette brukes til å spesifisere forskjellige formateringsalternativer for rapporten som blir generert som utdata.
Derfor vil løperklassen din se slik ut.
TestRunner.java
Bare høyreklikk på TestRunner.java og velg alternativet ‘ Kjør som JUnit Test ' . Dette viser testutførelsesresultatet som følger.
Junit Tab Output
Du vil se følgende meldinger på Console.
Konsollutgang
# 6) Rapporter
Vi har sett resultatet på konsollen. Imidlertid gir agurk testresultater i et mer presentabelt HTML-format som kan deles med dine interessenter.
Åpen mål -> agurkrapporter i nettleseren.
Merk : Husker du Junit løperklasse CucucmberOptions?
@CucumberOptions (features='Features',glue={'demo'},plugin={'pretty', 'html:target/cucumber-reports'})
Her er plugin det alternativet vi spesifiserer for HTML-formatrapporter sammen med mappen.
target/cucumber-reports
Åpne nå mål agurk-rapporter index.html-siden. Rapportsiden er HTML-siden der du kan se funksjonsnavnet med scenarier som ble utført.
Så rapporten vil se ut som følger.
CucumberTest-resultat i HTML-format
Konklusjon
For å avslutte denne opplæringen, la oss oppsummere det vi har lært så langt.
Vi så alle trinnene fra begynnelsen for å sette opp BDD Cucumber REST API Test Automation Framework.
I denne prosessen lærte vi følgende:
- For testautomatisering valgte vi Java som programmeringsspråk.
- Vi valgte Agurk som testrammeverk for å lage en testpakke på den måten Behavior Driven Development utvikler seg på.
- For å sende faktiske HTTP-forespørsler til serveren, konsumerte vi vårens rammeverk RestTemplate-klasse.
- For å konsumere disse API-ene, installerte vi Cucumber plug-in, lastet ned Cucumber avhengighets jar-filer, Spring-krukker og JSON-enkle jar for parser API.
- Vi opprettet funksjonsfilen for å beskrive scenarier på vanlig engelsk, trinndefinisjonsfil for å kartlegge trinn og JUnit Runner-klasse for å kjøre funksjonsfilen.
- Til slutt utførte vi Test Runner-klassen og så resultatet på konsollen i et mer presentabelt og lesbart HTML-format.
Kort fortalt forklarte denne artikkelen hvordan du kommer i gang med REST API-testautomatisering med agurk. Vi dekket oppsett av vårt rammeverk for testautomatisering rett fra installasjon av all viktig programvare, prosjektoppsett, TestScript-utvikling til testutførelse og visning av genererte rapporter.
Dette er tilstrekkelig for at enhver automatiserings-QA skal komme i gang med rammen for testautomatisering. Men hvis noen vil forstå i detalj hvordan agurk fungerer internt, hvordan fungerer agurkespråk, så kan det utforskes på Agurk.
Jeg håper du er klar til å komme i gang med testing av REST API i BDD-stil med agurk !!
Anbefalt lesing
- 10 beste API-testverktøy i 2021 (SOAP og REST API-testverktøy)
- Beste verktøy for testing av programvare 2021 (QA Test Automation Tools)
- REST API-testing med Spring RestTemplate og TestNG
- Testing Primer eBook Download
- Topp 20 viktigste API-tester Intervju spørsmål og svar
- SaaS Testing: Utfordringer, verktøy og testtilnærming
- Å gjøre API-testing enkel med Katalon Studio
- Automatiseringstesting ved hjelp av agurkverktøy og selen - Selenveiledning nr. 30