rest api testing with cucumber using bdd approach
Ovaj vodič objašnjava REST API testiranje s krastavcem korištenjem BDD pristupa. Obuhvaća instalaciju softvera, postavljanje projekata, izvršavanje TestScripta i izvješća.
U ovom ćemo članku vidjeti kako započeti s REST API testiranjem u BDD stilu s okvirom Cucumber.
Prije dubinskog zaranjanja u temu, shvatimo važne pojmove koji su u nju uključeni.
Počnimo!!
Što ćete naučiti:
- Važni koncepti u REST API-ju
- Kako djeluje krastavac?
- Postavljanje okvira za ispitivanje krastavaca na sustavu Windows
- Zaključak
- Preporučena literatura
Važni koncepti u REST API-ju
ODMOR
Ovo je softverski arhitektonski stil. Puni oblik REST je reprezentativni državni prijenos . Definira skup ograničenja koja će se koristiti za stvaranje web usluga. Web usluge koje odgovaraju arhitektonskom stilu REST nazivaju se RESTful web usluge.
REST API testiranje
REST API testiranje je testiranje API-ja pomoću 4 glavne metode, tj. POST, GET, PUT i DELETE.
razlika između b i b + stabla
ODMORNI predložak
RestTemplate je proljetna okvirna klasa otvorenog koda koja pruža prikladan način za testiranje mirnih web usluga temeljenih na HTTP-u pružajući preopterećene metode za HTTP metode.
Bilješka : Da biste saznali više o konceptu testiranja REST API-ja, možete pogledati naš raniji vodič ' REST API testiranje s Spring RestTemplate i TestNG 'Gdje smo opisali kako ručno izvršiti REST API testiranje zajedno s konceptom JSON-a.
BDD
BDD je pristup zasnovan na ponašanju. Ovo je jedna od tehnika razvoja softvera koja je nastala iz Test Driven Developmenta, tj. TDD stila.
Princip BDD testiranja je da su test slučajevi napisani na prirodnom jeziku koji je lako čitljiv i onima koji nisu programeri.
Krastavac
Krastavac je alat koji podržava razvoj usmjeren na ponašanje
Kako djeluje krastavac?
Pogledajmo kako krastavac djeluje.
Krastavac se sastoji od datoteka značajki, datoteka definicije koraka i klase Runner.
Datoteke značajki
Datoteke značajki piše vaš poslovni analitičar ili možda vaš sponzor. Oni su napisani u formatu prirodnog jezika s opisanim specifikacijama i potvrđuju da funkcije aplikacije funkcioniraju prema specifikacijama.
Ove specifikacije sadrže više scenarija ili primjera spomenutih u njima. Svaki je scenarij popis određenih koraka kako bi krastavac mogao proći.
Razmotrimo scenarij u kojem se korisnik želi prijaviti u sustav.
Da biste provjerili radi li ovo prema specifikacijama, treba opisati ovaj scenarij. Evo koraka koje treba izvršiti zajedno sa željenim ishodom prema specifikacijama.
Samo da bismo dobili ideju, ovako će izgledati primjer scenarija:
Scenario: Login to the system Given User launches Login screen When User enters username, password and submit Then Login Successful message appearsMožete vidjeti, svaki je scenarij neka vrsta popisa koraka za krastavac. Da bi Krastavac razumio scenarije, moraju slijediti neka osnovna sintaksička pravila, tzv Kornišion .
Datoteke definicije koraka
Datoteke definicija koraka preslikavaju svaki Gherkin korak spomenut u datoteci značajke u implementacijski kod. To omogućuje Krastavcu da izvrši radnju koju treba izvršiti korak.
Okvir krastavaca podržava mnoge programske jezike za pisanje definicija koraka poput Java, .net i Ruby.
Bilješka : U članku ‘ REST API testiranje s Spring RestTemplate i TestNG ’, Razvili smo testni projekt TestNG s proljetnim predloškom.
Sada ćemo razviti testni okvir za istu REST uslugu i RestTemplate, ali koristeći Cucumber za stil testiranja razvoja temeljenog na ponašanju.
Krenimo s postavljanjem našeg okvira za automatizaciju s krastavcem!
Postavljanje okvira za ispitivanje krastavaca na sustavu Windows
# 1) Instalacija
(i) Koristit ćemo Javu za razvoj definicija koraka. Dakle, prvo preuzmite JDK instalacijski program za Windows s Oracle i instalirajte Javu na svoj stroj.
(ii) IDE (integrirano razvojno okruženje) : Eclipse sam koristio kao IDE za razvoj programa Automation Test Suite. Možete ga preuzeti s Zasjeniti
(iii) Nabavite dodatak Eclipse za krastavac:
Slijedite ove korake u Eclipseu:
- Odaberite Pomoć -> Instaliraj novi softver s opcije izbornika.
- Unesi ‘Pomrčina krastavca’ u tekstualnom okviru za pretraživanje.
- Klikni na Instalirati dugme.
Ugradnja dodatka krastavca u Eclipseu

- Nastavite pritiskati gumb Dalje dok ne dođete do Pregledajte licencu zaslon.
Na kraju, kliknite potvrdni okvir da biste prihvatili Ugovor o licenci i kliknite na Završi dugme. Ovo će dovršiti instalaciju. Sada ponovno pokrenite Eclipse IDE. To je potrebno za stupanje na snagu instalacije dodatka.
(iv) Proljetne tegle: Kako ćemo koristiti klasu RestTemplate koja pripada opružnom okviru, trebate imati staklenke opružnog okvira. Proljetne staklenke možete preuzeti s Proljetni okvir i spremite ga u lokalnu mapu. Na primjer, C: / projektJar
(v) JSON-jednostavni teglice: Moramo izvršiti JSON raščlanjivanje. Stoga ćemo koristiti lagani JSON-ov API. Dakle, preuzmite JSON-simple-1.1.jar i spremite ga u C: / projektJar
(vi) Staklenke krastavaca:
Za pokretanje projekta Krastavac trebale bi vam sljedeće staklenke krastavaca:
- jezgra krastavca
- krastavac-java
- krastavac-JUnit
- krastavac-JVM-deps
- izvještavanje krastavaca
- kornišon
- JUNIT
- podsmijeh-sve
- pokrivenost
- krastavac-HTML (Za izvješća u html-u)
Te datoteke možete preuzeti pomoću datoteke pom.xml. Ali, najjednostavniji način je preuzeti ove jar datoteke s Središnje spremište i spremite te jar datoteke u lokalnu mapu, Na primjer, C: / projektJar
Sada smo ovim dovršili sve potrebne instalacije. Dakle, kreirajmo naš projekt automatizacije BDD testa.
# 2) Postavljanje projekta
- Stvori datoteku -> Novo -> Java projekt -> Nazovite je kao ‘ CRUD_Krastavac '.
- Sada stvorite novi Java paket demo.
- Konfigurirajte BuildPath projekta:
- Kao što ste vidjeli u prethodnom odjeljku, instalirali smo dodatak za krastavac, preuzeli proljeće i JSON-jednostavne staklenke. Dakle, vrijeme je da u naš projekt dodamo put izgradnje koji će ih potrošiti. Za to stvorite a lib mapa u Mapa CRUD_Cucumber ’ a sada kopirajte sve staklenke iz C: / projectJar u lib / krastavac, lib / proljeće mapu.
- Desnom tipkom miša kliknite ' CRUD_Krastavac ' -> Gradnja puta -> Konfiguriranje puta gradnje.
- Klikni na Knjižnice tab.
- Kliknite na Dodajte staklenke gumb-> Odaberite sve staklenke iz lib / krastavac mapa i lib / Proljeće mapu. Ovo će dodati sve staklenke krastavaca, proljetne tegle i JSON-jednostavnu staklenku u put izgradnje vašeg projekta.
Struktura vašeg projekta prikazat će se na sljedeći način u programu Eclipse Package Explorer.
Struktura paketa testnog projekta

# 3) Datoteka značajke
Sada, napravimo našu datoteku značajki DemoFeature.feature ima značajku kao Izvođenje CRUD operacija na usluzi zaposlenika.
U našem primjeru koristio sam jednu lutku http://dummy.restapiexample.com/api uzorak REST usluge.
Ova datoteka značajke opisuje scenarije za izvođenje CRUD operacija, tj. Za pokrivanje CRUD-a (Stvori-pročitaj-ažuriraj-izbriši).
- Prvo definirajmo značajku, u našem slučaju to je testiranje CRUD metoda, koje se mogu opisati na sljedeći način.
Feature: Test CRUD methods in Sample Employee REST API testing - Sada ovo ima različite scenarije poput Stvaranja, ažuriranja, čitanja i brisanja zapisa zaposlenika. Dakle, pogledajte POST scenarij:
Scenario: Add Employee record- Opišite preduvjet za test koji postavlja URL službene službe.
Given I Set POST employee service api endpoint- Navedite stvarni testni korak slanja zahtjeva za objavu.
When I Set request HEADER And Send a POST HTTP request- Sada opišite provjeru tijela za odgovor.
Then I receive valid ResponseDakle, u našoj datoteci značajki Scenarij će izgledati kako slijedi:
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 Slično tome, možete napisati i preostale scenarije kako je prikazano u nastavku.
DemoFeature.feature

# 4) Primjena definicije koraka
Za korake značajki korištene u gornjim scenarijima trebate napisati programske implementacije, u ovom slučaju to je Java.
Definicija koraka metoda je napisana na Javi koja ima izraz. Povezuje svoju metodu s jednim ili više koraka. Dakle, kada Krastavac izvrši korake opisane u scenariju datoteke značajke, prvo traži podudaranje definicija koraka izvršiti.
Na primjer, kada se definicija koraka za Dodavanje zaposlenika pomoću POST-a može napisati na sljedeći način.
Za dati korak, implementacija je napisana kako slijedi:
@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); } Slično tome, za korak When sljedeća je metoda definicije:
@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); }Sad je dio koraka provjere, tj. Implementacija Zatim korak:
@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); }Bilješka: Ovdje koristimo metodu RestTemplate za slanje zahtjeva. To je isto kao metoda korištena u REST API testiranje s Spring RestTemplate i TestNG ' . Da biste saznali više o metodama Predloga za odmor, možete se obratiti uputstvu.
Stoga će vaša definicija koraka izgledati kako slijedi.
StepDefinition.java

zasebna lančana hash tablica c ++
Na isti način možete implementirati definicije koraka za preostale scenarije Ažuriranje, čitanje i brisanje zaposlenika.
# 5) Pokretanje testova
Sada smo dovršili zadatak za razvoj scenarija i koraka, pa pokrenimo naše testove. Za to moramo napisati klasu JUnit runner.
publicclassRunner { }Ovdje morate dodati sljedeće napomene iznad naziva klase:
@RunWith (Cucumber.class): Trčati kao klasa test trkača za Krastavac.
@CucumberOptions: Ovdje navodite mjesto datoteke značajki i mjesto datoteke definicije koraka za okvir Krastavca koji će se pregledati tijekom izvršavanja.
features='' glue=''Uključiti: To se koristi za specificiranje različitih mogućnosti oblikovanja izvješća koje se generira kao izlaz.
Stoga će vaša klasa trkača izgledati ovako.
TestRunner.java

Samo kliknite desnom tipkom miša TestRunner.java i odaberite opciju ‘ Pokreni kao JUnit Test ' . Ovo će prikazati rezultat izvršenja testa na sljedeći način.
Izlaz kartice Junit

Na Konzoli ćete vidjeti sljedeće poruke.
Izlaz konzole

# 6) Izvješća
Rezultat smo vidjeli na konzoli. Međutim, Krastavac pruža rezultate ispitivanja u prezentabilnijem HTML formatu koji se može podijeliti s vašim dionicima.
Otvoren cilj -> krastavci-izvještaji u pregledniku.
Bilješka : Sjećate li se klase trkača Junit CucucmberOptions?
@CucumberOptions (features='Features',glue={'demo'},plugin={'pretty', 'html:target/cucumber-reports'})Ovdje je dodatak opcija koju određujemo za izvješća u HTML formatu zajedno s mapom.
target/cucumber-reportsSada otvorite stranicu target cucumber-reports index.html. Stranica izvješća je HTML stranica na kojoj možete vidjeti naziv značajke sa scenarijima koji su uspješno izvršeni.
Dakle, vaše će izvješće izgledati kako slijedi.
Rezultat testa Cucumber u HTML formatu

Zaključak
Za kraj ovog vodiča, sažeti ono što smo do sada naučili.
Vidjeli smo sve korake od početka postavljanja BDD Cucumber REST API Test Automation Framework.
U ovom smo procesu naučili sljedeće:
- Za automatizaciju ispitivanja odabrali smo Javu kao programski jezik.
- Odabrali smo Krastavac kao testni okvir za stvaranje testnog paketa na test način Behaviour Driven Development.
- Za slanje stvarnih HTTP zahtjeva na poslužitelj koristili smo klasu Spring Frame RestTemplate.
- Za upotrebu ovih API-ja izvršili smo instalaciju dodatka Cucumber, preuzeli datoteke jar Cuardsic zavisnosti, Spring staklenke i JSON-jednostavni jar za API raščlanjivača.
- Stvorili smo datoteku značajke da bismo na jednostavnom engleskom jeziku opisali scenarije, datoteku definicije koraka za mapiranje koraka i klasu JUnit Runner za pokretanje datoteke značajke.
- Napokon, izvršili smo klasu Test Runner i vidjeli rezultat na konzoli u preglednijem i čitljivijem HTML formatu.
Ukratko, ovaj je članak objasnio kako započeti s automatizacijom REST API Test s krastavcem. Pokrili smo postavljanje našeg okvira za automatizaciju testiranja od instalacije sav neophodnog softvera, postavljanja projekata, razvoja TestScript-a do izvođenja testa i pregledavanja generiranih izvješća.
To je dovoljno za bilo koji QA automatizacije da započne s testnim okvirom automatizacije. Ali ako netko želi detaljno razumjeti kako krastavac interno funkcionira, kako funkcionira jezik kornišon, onda se to može istražiti na Krastavac.
Nadam se da ste spremni za početak testiranja REST API-ja u BDD stilu s krastavcem !!
Preporučena literatura
- 10 najboljih alata za testiranje API-ja u 2021. godini (SOAP i REST API alati za testiranje)
- Najbolji alati za testiranje softvera 2021. (Alati za automatizaciju ispitivanja kvalitete)
- REST API testiranje s Spring RestTemplate i TestNG
- Preuzimanje e-knjige za testiranje primera
- 20 najvažnijih pitanja i odgovora za ispitivanje API ispitivanja
- SaaS testiranje: izazovi, alati i pristup testiranju
- Pojednostavljivanje API testiranja pomoću Katalon Studija
- Ispitivanje automatizacije pomoću alata krastavaca i selena - Vodič br. 30