rest api testing with cucumber using bdd approach
Denne vejledning forklarer REST API-test med agurk ved hjælp af BDD-tilgang. Den dækker softwareinstallation, projektopsætning, testScript-udførelse og rapporter.
I denne artikel vil vi se, hvordan du kommer i gang med REST API-test i BDD-stil med agurkerammen.
Før vi dykker dybt ned i emnet, lad os forstå de vigtige begreber, der er involveret i det.
Lad os begynde!!
Hvad du lærer:
- Vigtige begreber i REST API
- Hvordan fungerer agurk?
- Opsætning af agurktestramme på Windows
- Konklusion
- Anbefalet læsning
Vigtige begreber i REST API
HVILE
Dette er en software-arkitektonisk stil. Den fulde form for REST er repræsentativ statsoverførsel . Det definerer et sæt begrænsninger, der skal bruges til at oprette webtjenester. Webtjenester, der overholder REST-arkitektoniske stil kaldes RESTful webtjenester.
REST API-test
REST API-test tester API ved hjælp af 4 hovedmetoder, dvs. POST, GET, PUT og SLET.
REST-skabelon
RestTemplate er en open source-springrammeklasse, der giver en bekvem måde at teste de HTTP-baserede afslappende webtjenester ved at levere overbelastede metoder til HTTP-metoderne.
Bemærk : Hvis du vil vide mere om REST API Testing-konceptet, kan du henvise til vores tidligere tutorial ' REST API-test med Spring RestTemplate og TestNG ”Hvor vi har dækket, hvordan man udfører REST API-test manuelt sammen med konceptet JSON.
BDD
BDD er den adfærdsdrevne udviklingsmetode. Dette er en af de softwareudviklingsteknikker, der er kommet frem fra den testdrevne udvikling, dvs. TDD-stil.
Princippet med BDD-test er, at testcases er skrevet på et naturligt sprog, der også er let læseligt for ikke-programmører.
Agurk
Agurk er et værktøj, der understøtter adfærdsstyret udvikling
Hvordan fungerer agurk?
Lad os se, hvordan agurk fungerer.
Agurk består af Feature Files, Step Definition Files og Runner klasse.
Funktionsfiler
Funktionsfiler er skrevet af din forretningsanalytiker eller måske din sponsor. Disse er skrevet i naturligt sprogformat med specifikationer beskrevet i det og validerer, at applikationens funktioner i henhold til specifikationerne.
Disse specifikationer har flere scenarier eller eksempler nævnt i den. Hvert scenario er en liste over bestemte trin, som agurk kan arbejde igennem.
Lad os overveje et scenarie, hvor brugeren ønsker at logge ind på systemet.
For at kontrollere, om dette fungerer i henhold til specifikationerne, skal dette scenario beskrives. Her er de trin, der skal udføres sammen med det ønskede resultat i henhold til specifikationerne.
Bare for at få en idé, sådan ser et eksempelscenarie ud:
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 scenarie er en slags liste over de trin, som agurk kan arbejde igennem. For at agurk skal forstå scenarierne, skal de følge nogle grundlæggende syntaksregler, kaldet Agurk .
Trindefinitionsfiler
Trindefinitionsfiler kortlægger hvert Gherkin-trin, der er nævnt i en Feature-fil, til implementeringskoden. Dette giver agurk mulighed for at udføre den handling, der kræves for at blive udført af trinnet.
Agurkeramme understøtter mange programmeringssprog til at skrive trindefinitioner som Java, .net og Ruby.
Bemærk : I artiklen “ REST API-test med Spring RestTemplate og TestNG ”, Vi har udviklet TestNG testprojektet med Spring-skabelonen.
Nu vil vi udvikle Test Framework til den samme REST-service og RestTemplate, men ved at bruge Agurk til adfærdsdrevet udviklingsteststil.
Lad os komme i gang med opsætningen af vores automatiseringstestrammer med agurk!
Opsætning af agurktestramme på Windows
# 1) Installation
(jeg) Vi skal bruge Java til udvikling af trindefinition. Så download først JDK-installationsprogrammet til Windows fra Oracle og installer Java på din maskine.
(ii) IDE (integreret udviklingsmiljø) : Jeg har brugt Eclipse som IDE til min udvikling af Automation Test Suite. Du kan downloade det fra Formørkelse
(iii) Få Eclipse-plugin til agurk:
Følg disse trin i formørkelsen:
- Vælg Hjælp -> Installer ny software fra menupunktet.
- Gå ind 'Agurkformørkelse' i søgetekstfeltet.
- Klik på Installere knap.
Agurk Plug-in installation i formørkelse
- Fortsæt med at klikke på knappen Næste, indtil du når Gennemgå licens skærm.
Til sidst skal du klikke på afkrydsningsfeltet for at acceptere licensaftalen og klikke på Afslut knap. Dette vil afslutte installationen. Genstart nu formørkelsen IDE. Dette er nødvendigt for at aktivere plugin-installation.
(iv) Forårskrukker: Da vi skal bruge RestTemplate-klasse, der hører til forårets ramme, skal du have forårsrammer. Du kan downloade forårskrukker fra Spring Framework og gem den i den lokale mappe. For eksempel, C: / projektJar
(v) JSON-enkle krukker: Vi er nødt til at udføre JSON-parsing. Derfor bruger vi en let JSON-simpel API. Så download JSON-simple-1.1.jar og gem det til C: / projektJar
(vi) Agurkerglas:
Du har brug for følgende agurkkrukker for at køre agurkeprojektet:
- agurk-kerne
- agurk-java
- agurk-JUnit
- agurk-JVM-deps
- agurk-rapportering
- agurk
- JUnit
- mockito-all
- dækning
- agurk-HTML (For rapporter i html)
Du kan downloade disse filer ved hjælp af pom.xml-filen. Men den enkleste måde er at downloade disse jar-filer fra Centralt arkiv og gem disse jar-filer i den lokale mappe, For eksempel, C: / projektJar
Nu med dette har vi afsluttet alle de nødvendige installationer. Så lad os oprette vores BDD Test Automation-projekt.
# 2) Opsætning af projekt
- Opret fil -> Ny -> Java-projekt -> Navngiv den som ‘ CRUD_ agurk '.
- Opret nu en ny Java-pakke demo.
- Konfigurer BuildPath for projektet:
- Som du har set i det tidligere afsnit, har vi installeret agurk plug-in, downloadede fjeder og JSON-enkle krukker. Så det er på tide at tilføje build-sti i vores projekt for at forbruge dem. Til det skal du oprette en lib mappe i CRUD_Cucumber 'mappe og kopier nu alle krukker fra C: / projectJar til lib / Agurk, lib / Spring folder.
- Højreklik på ‘ CRUD_ agurk ' -> Byg sti -> Konfigurer Byg sti.
- Klik på Biblioteker fanen.
- Klik på Tilsæt krukker knap-> Vælg alle krukker fra lib / agurk mappe og lib / Spring folder. Dette tilføjer alle agurk krukker, forårskrukke og JSON-simpel krukke til din projektbygningssti.
Din projektstruktur vises som følger i Eclipse Package Explorer.
Pakkestruktur af testprojekt
# 3) Funktionsfil
Lad os nu bygge vores funktionsfil DemoFeature.feature har funktionen som Udførelse af CRUD-operationer på medarbejderstjeneste.
I vores eksempel har jeg brugt en dummy http://dummy.restapiexample.com/api prøve REST Service.
Denne funktionsfil beskriver scenarierne for udførelse af CRUD-operationer, dvs. for at dække CRUD (Create-Read-Update-Delete).
- Lad os definere funktionen først, i vores tilfælde er det Test af CRUD-metoder, som kan beskrives som følger.
Feature: Test CRUD methods in Sample Employee REST API testing
- Nu har dette forskellige scenarier som Opret, opdater, læs og slet medarbejderjournalen. Så kig på POST-scenariet:
Scenario: Add Employee record
- Beskriv forudsætningen for testen, der indstiller URL'en til medarbejdertjenesten.
Given I Set POST employee service api endpoint
- Angiv det faktiske teststrin for at sende en postanmodning.
When I Set request HEADER And Send a POST HTTP request
- Beskriv nu verifikationen af responsorganet.
Then I receive valid Response
Så i vores funktionsfil vil scenariet se således ud:
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åde kan du skrive de resterende scenarier som vist nedenfor.
DemoFeature.feature
# 4) Trin Definition Implementering
For funktionstrin, der bruges i ovenstående scenarier, skal du skrive programmatiske implementeringer, i dette tilfælde er det Java.
En trindefinition er en metode skrevet i Java med et udtryk. Det forbinder sin metode til et eller flere trin. Så når agurk udfører de trin, der er beskrevet i et scenarie for funktionsfilen, ser det først efter en matchning trindefinition at udføre.
For eksempel, når trindefinition for Tilføj medarbejder ved hjælp af POST kan skrives som følger.
For givet trin skrives implementeringen som følger:
lav en kopi af en array-java
@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åde er definitionsmetoden for When step det følgende:
@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); }
Nu er her verifikationstrin-delen, dvs. implementeringen af derefter trin:
@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); }
Bemærk: Her bruger vi RestTemplate-metoden til afsendelsesanmodning. Dette er det samme som metoden anvendt i ' REST API-test med Spring RestTemplate og TestNG '' . Hvis du vil vide mere om hvileskabelonmetoder, kan du henvise til vejledningen.
Din trindefinition vil således se ud som følger.
StepDefinition.java
Du kan implementere trindefinitionerne for de resterende scenarier Opdater, læse og slette medarbejder på samme måde.
# 5) Kørsel af testene
Nu har vi afsluttet vores scenarie og trin-script-udviklingsopgave, så lad os køre vores tests. Til dette er vi nødt til at skrive en JUnit-løberklasse.
publicclassRunner { }
Her skal du tilføje følgende kommentarer over klassens navn:
@RunWith (Agurk.klasse): At køre som en testløberklasse for agurk.
@CucumberOptions: Her angiver du filens placeringsfunktioner og trindefinitionsfilplacering, som agurkerammen kan undersøges under udførelsen.
features='' glue=''
Plug-in: Dette bruges til at specificere forskellige formateringsmuligheder for rapporten, der genereres som output.
Derfor vil din løberklasse se sådan ud.
TestRunner.java
Højreklik bare på TestRunner.java og vælg indstillingen ' Kør som JUnit Test ' . Dette viser testudførelsesresultatet som følger.
Junit-faneoutput
Du vil se følgende meddelelser på konsollen.
Konsol output
# 6) Rapporter
Vi har set resultatet på konsollen. Imidlertid giver agurk testresultater i et mere præsentabelt HTML-format, der kan deles med dine interessenter.
Åben mål -> agurk-rapporter i browseren.
Bemærk : Kan du huske Junit-løberklasse CucucmberOptions?
@CucumberOptions (features='Features',glue={'demo'},plugin={'pretty', 'html:target/cucumber-reports'})
Her er plugin den mulighed, som vi angiver for rapporter i HTML-format sammen med mappen.
target/cucumber-reports
Åbn nu mål agurk-rapporter index.html-siden. Rapportsiden er HTML-siden, hvor du kan se funktionsnavnet med scenarier, der blev udført med succes.
Så din rapport vil se ud som følger.
CucumberTest-resultat i HTML-format
Konklusion
For at afslutte denne tutorial, lad os opsummere det, vi har lært indtil videre.
Vi så alle trin fra starten til opsætning af BDD Agurk REST API Test Automation Framework.
I denne proces lærte vi følgende:
- Til testautomatisering valgte vi Java som programmeringssprog.
- Vi valgte Agurk som testramme for oprettelse af en testpakke på den måde Behavior Driven Development test på.
- For at sende faktiske HTTP-anmodninger til serveren forbrugte vi Spring Framework RestTemplate-klassen.
- For at forbruge disse API'er, installerede vi agurk plug-in, downloadede agurkafhængigheds jar-filer, Spring-krukker og JSON-simpel jar til parser-API.
- Vi oprettede Feature-filen til at beskrive scenarier på almindeligt engelsk, Step Definition-fil for at kortlægge trin og JUnit Runner-klasse for at køre Feature-filen.
- Endelig udførte vi Test Runner-klassen og så resultatet på konsollen i et mere præsentabelt og læsbart HTML-format.
Kort fortalt forklarede denne artikel, hvordan man kommer i gang med REST API-testautomatisering med agurk. Vi dækkede opsætningen af vores testautomatiseringsramme lige fra installation af al væsentlig software, Project Setup, TestScript-udvikling til testudførelse og visning af genererede rapporter.
Dette er tilstrækkeligt for enhver automatiseret kvalitetssikring for at komme i gang med rammen om testautomatisering. Men hvis nogen ønsker at forstå detaljeret, hvordan agurk fungerer internt, hvordan fungerer agurkesprog, så kan det udforskes på Agurk.
Jeg håber du er klar til at komme i gang med afprøvning af REST API i BDD-stil med agurk !!
Anbefalet læsning
- 10 bedste API-testværktøjer i 2021 (SOAP og REST API-testværktøjer)
- Bedste softwaretestværktøjer 2021 (QA Test Automation Tools)
- REST API-test med Spring RestTemplate og TestNG
- Test af Primer eBook Download
- Top 20 mest vigtige API-test Interviewspørgsmål og svar
- SaaS-test: udfordringer, værktøjer og testtilgang
- Gør API-test enkel med Katalon Studio
- Automatiseringstest ved hjælp af agurkværktøj og selen - Selen-tutorial # 30