rest api testing with cucumber using bdd approach
Acest tutorial explică testarea API REST cu castraveți folosind abordarea BDD. Acoperă instalarea software-ului, configurarea proiectului, execuția TestScript și rapoarte.
În acest articol, vom vedea cum să începeți cu testarea API REST în stil BDD cu cadrul Cucumber.
Înainte de a ne adânci în subiect, permiteți-ne să înțelegem conceptele importante implicate în acesta.
Să începem!!
Ce veți învăța:
- Concepte importante în REST API
- Cum funcționează castraveții?
- Configurarea cadrului de testare a castraveților pe Windows
- Concluzie
- Lectură recomandată
Concepte importante în REST API
ODIHNĂ
Acesta este un stil arhitectural software. Forma completă a REST este Transfer de stat reprezentativ . Acesta definește un set de constrângeri care trebuie utilizate pentru crearea serviciilor web. Serviciile web care se conformează stilului arhitectural REST se numesc servicii web RESTful.
Testarea API REST
Testarea REST API testează API folosind 4 metode majore, adică POST, GET, PUT și DELETE.
Șablon REST
RestTemplate este o clasă cadru de primăvară open-source care oferă o modalitate convenabilă de a testa serviciile web odihnitoare bazate pe HTTP, oferind metode supraîncărcate pentru metodele HTTP.
Notă : Pentru a afla mai multe despre conceptul de testare API REST, puteți consulta tutorialul nostru anterior „ Testarea API REST cu Spring RestTemplate și TestNG ”În care am prezentat cum să efectuăm testarea API REST manual împreună cu conceptul JSON.
BDD
BDD este abordarea dezvoltării bazate pe comportament. Aceasta este una dintre tehnicile de dezvoltare software care a apărut din dezvoltarea testată, adică stilul TDD.
Principiul testării BDD este că cazurile de testare sunt scrise într-un limbaj natural ușor de citit și de neprogramatori.
Castravete
Castravetele este un instrument care susține dezvoltarea bazată pe comportament
Cum funcționează castraveții?
Să vedem cum funcționează Castravetele.
Castravetele constă din fișiere de caracteristici, fișiere de definire a pașilor și clasa Runner.
care este cel mai bun server de e-mail
Fișiere de caracteristici
Fișierele cu funcții sunt scrise de analistul dvs. de afaceri sau poate de sponsorul dvs. Acestea sunt scrise în format de limbaj natural având specificațiile descrise în acesta și confirmă funcțiile aplicației conform specificațiilor.
Aceste specificații au mai multe scenarii sau exemple menționate în ea. Fiecare scenariu este o listă cu anumite etape pe care Castravetele trebuie să le parcurgă.
Să luăm în considerare un scenariu în care utilizatorul dorește să se conecteze la sistem.
Pentru a verifica dacă acest lucru funcționează conform specificațiilor, acest scenariu trebuie descris. Iată pașii care trebuie efectuați împreună cu rezultatul dorit conform specificațiilor.
Doar pentru a vă face o idee, așa va arăta un exemplu de scenariu:
Scenario: Login to the system Given User launches Login screen When User enters username, password and submit Then Login Successful message appears
Puteți vedea, fiecare scenariu este un fel de listă a pașilor pentru care Castravetele trebuie parcurși. Pentru ca Castravetele să înțeleagă scenariile, trebuie să respecte câteva reguli de sintaxă de bază, numite Castravecior .
Fișiere de definiție a pasului
Fișierele de definiții ale pasului mapează fiecare pas Gherkin menționat într-un fișier Feature la codul de implementare. Acest lucru permite Castravetelui să execute acțiunea care trebuie executată de pas.
Cadrul de castraveți acceptă multe limbaje de programare pentru a scrie definiții Step, cum ar fi Java, .net și Ruby.
Notă : In articol ' Testarea API REST cu Spring RestTemplate și TestNG ’, Am dezvoltat proiectul de testare TestNG cu șablonul Spring.
Acum, vom dezvolta cadrul de testare pentru același serviciu REST și RestTemplate, dar folosind Castravete pentru stilul de testare a dezvoltării bazate pe comportament.
Să începem cu configurarea cadrului nostru de testare a automatizării cu Castravete!
Configurarea cadrului de testare a castraveților pe Windows
# 1) Instalare
(i) Vom folosi Java pentru dezvoltarea definiției pașilor. Deci, mai întâi descărcați programul de instalare JDK pentru Windows de la Oracol și instalați Java pe mașina dvs.
(ii) IDE (mediu de dezvoltare integrat) : Am folosit Eclipse ca IDE pentru dezvoltarea Automation Test Suite. O puteți descărca de la Eclipsă
(iii) Obțineți pluginul Eclipse pentru Castravete:
Urmați acești pași în Eclipse:
- Selectați Ajutor -> Instalare software nou din opțiunea de meniu.
- introduce „Eclipse de castraveți” în caseta de text de căutare.
- Faceți clic pe Instalare buton.
Instalare plug-in castravete în Eclipse
- Continuați să faceți clic pe butonul Următor până când ajungeți la Revizuirea licenței ecran.
În cele din urmă, faceți clic pe caseta de selectare pentru a accepta Acordul de licență și faceți clic pe finalizarea buton. Aceasta va finaliza instalarea. Acum, reporniți IDE-ul Eclipse. Acest lucru este necesar pentru a efectua instalarea plug-in-ului.
(iv) Borcane de primăvară: Deoarece vom folosi clasa RestTemplate care aparține cadrului arc, trebuie să aveți borcane cadru arc. Puteți descărca borcane de primăvară din Cadru de primăvară și salvați-l în folderul local. De exemplu, C: / projectJar
(v) JSON-Borcane simple: Trebuie să efectuăm analiza JSON. Prin urmare, vom folosi un API simplu JSON ușor. Deci, descărcați JSON-simple-1.1.jar și salvați-l în C: / projectJar
(vi) Borcane de castraveți:
Ați avea nevoie de următoarele borcane de castravete, pentru a rula proiectul Cucumber:
- castravete-miez
- castravete-java
- castravete-JUnit
- castravete-JVM-deps
- raportare castravete
- castravecior
- JUnit
- mockito-all
- acoperire
- castravete-HTML (Pentru rapoarte în html)
Puteți descărca aceste fișiere folosind fișierul pom.xml. Dar, cel mai simplu mod este să descărcați aceste fișiere jar din Depozit central și salvați acele fișiere jar în folderul local, De exemplu, C: / projectJar
Acum, cu aceasta, am finalizat toate instalațiile necesare. Deci, să ne creăm proiectul BDD Test Automation.
# 2) Configurarea proiectului
- Creați fișier -> Nou -> Proiect Java -> Denumiți-l ca „ CRUD_Cucumber ’.
- Acum, creați un nou pachet Java demo.
- Configurați BuildPath al proiectului:
- După cum ați văzut în secțiunea anterioară, am instalat pluginul Cucumber, descărcat primăvara și borcane simple JSON. Deci, este timpul să adăugăm calea de construcție în proiectul nostru pentru a le consuma. Pentru aceasta, creați un lib dosar în Dosarul CRUD_Cucumber ’ și acum copiați toate borcanele din C: / projectJar în lib / Castravete, lib / Spring pliant.
- Faceți clic dreapta pe „ CRUD_Cucumber ' -> Build Path -> Configure Build Path.
- Faceți clic pe Biblioteci filă.
- Click pe Adăugați borcane buton-> Selectați toate borcanele din lib / Castravete folder și lib / Spring pliant. Aceasta va adăuga toate borcanele de castraveți, borcanele de primăvară și borcanul simplu JSON la calea de construire a proiectului.
Structura proiectului dvs. va fi afișată după cum urmează în Eclipse Package Explorer.
Structura pachetului proiectului de testare
# 3) Fișier de caracteristici
Acum, permiteți-ne să construim fișierul nostru de caracteristici DemoFeature.feature având caracteristica ca Efectuarea operațiunilor CRUD pe serviciul angajaților.
În exemplul nostru, am folosit un eșantion http://dummy.restapiexample.com/api Service REST sample.
Acest fișier de caracteristici descrie scenariile pentru efectuarea operațiunilor CRUD, adică pentru a acoperi CRUD (Creați-Citiți-Actualizați-Ștergeți).
- Să definim mai întâi funcția, în cazul nostru, este testarea metodelor CRUD, care poate fi descrisă după cum urmează.
Feature: Test CRUD methods in Sample Employee REST API testing
- Acum, acesta are diferite scenarii, cum ar fi Creați, actualizați, citiți și ștergeți înregistrarea angajatului. Așadar, aruncați o privire la scenariul POST:
Scenario: Add Employee record
- Descrieți condiția prealabilă pentru test care setează adresa URL a serviciului pentru angajați.
Given I Set POST employee service api endpoint
- Specificați pasul de testare efectiv al trimiterii unei cereri de postare.
When I Set request HEADER And Send a POST HTTP request
- Acum, descrieți verificarea corpului de răspuns.
Then I receive valid Response
Deci, în fișierul nostru de caracteristici, Scenariul va arăta după cum urmează:
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
În mod similar, puteți scrie scenariile rămase așa cum se arată mai jos.
DemoFeature.feature
# 4) Implementarea definiției pașilor
Pentru pașii de caracteristici utilizați în scenariile de mai sus, trebuie să scrieți implementări programatice, în acest caz, este Java.
O definiție de pas este o metodă scrisă în Java având o expresie. Acesta își leagă metoda de unul sau mai mulți pași. Deci, atunci când Cucumber execută pașii descriși într-un scenariu al fișierului de caracteristici, acesta caută mai întâi o potrivire definirea pasului a executa.
De exemplu, când definiția pasului pentru Adăugarea unui angajat utilizând POST poate fi scrisă după cum urmează.
Pentru etapa dată, implementarea este scrisă după cum urmează:
@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); }
În mod similar, pentru pasul When, următoarea este metoda de definiție:
@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); }
Acum, iată partea pasului de verificare, adică implementarea pasului apoi:
@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); }
Notă: Aici, folosim metoda RestTemplate pentru trimiterea cererii. Aceasta este la fel ca metoda utilizată în „ Testarea API REST cu Spring RestTemplate și TestNG ' . Pentru a afla mai multe despre metodele Rest Template, puteți consulta tutorialul.
Astfel, definiția pasului dvs. va arăta după cum urmează.
StepDefinition.java
Puteți implementa definițiile pașilor pentru scenariile rămase Actualizați, citiți și ștergeți angajatul în același mod.
# 5) Rularea testelor
Acum, ne-am finalizat sarcina de dezvoltare a scenariului și a scriptului pas, așa că haideți să rulăm testele noastre. Pentru aceasta, trebuie să scriem o clasă de alergători JUnit.
publicclassRunner { }
Aici, trebuie să adăugați următoarele adnotări deasupra numelui clasei:
@RunWith (Cucumber.class): Pentru a alerga ca o clasă de test runner pentru Castravete.
@CucumberOptions: Aici specificați locația fișierului Caracteristici și locația fișierului de definire a pașilor pentru ca cadrul Cucumber să fie analizat în timpul executării.
features='' glue=''
Conecteaza: Aceasta este utilizată pentru a specifica diferite opțiuni de formatare pentru raport care este generat ca ieșire.
Prin urmare, clasa ta de alergători va arăta astfel.
TestRunner.java
Doar faceți clic dreapta pe TestRunner.java și selectați opțiunea „ Rulați ca test JUnit ” . Aceasta va afișa rezultatul executării testului după cum urmează.
Ieșire filă Junit
Veți vedea următoarele mesaje pe Consolă.
Ieșire consolă
# 6) Rapoarte
Am văzut rezultatul pe consolă. Cu toate acestea, Castravete oferă rezultate ale testelor într-un format HTML mai prezentabil, care poate fi partajat cu părțile interesate.
Deschis ţintă -> castravete-rapoarte în browser.
Notă : Îți amintești clasa de alergători Junit CucucmberOptions?
@CucumberOptions (features='Features',glue={'demo'},plugin={'pretty', 'html:target/cucumber-reports'})
Aici pluginul este opțiunea pe care o specificăm pentru rapoartele în format HTML împreună cu dosarul.
target/cucumber-reports
Acum deschideți pagina target castraveți-rapoarte index.html. Pagina de raport este pagina HTML în care puteți vedea numele funcției cu scenarii care au fost executate cu succes.
Deci, Raportul dvs. va arăta după cum urmează.
Rezultatul CucumberTest în format HTML
Concluzie
Pentru a încheia acest tutorial, să rezumăm ceea ce am învățat până acum.
Am văzut toți pașii de la început pentru a configura BDD Cucumber REST API Test Automation Framework.
În acest proces am învățat următoarele:
- Pentru automatizarea testelor, am selectat Java ca limbaj de programare.
- Am ales Castravetele ca cadru de testare pentru crearea unei suite de testare în modul de testare a dezvoltării conduse de comportament.
- Pentru trimiterea cererilor HTTP efective către server, am consumat clasa RestTemplate Spring cadru.
- Pentru consumul acestor API-uri, am făcut instalarea pluginului Cucumber, am descărcat fișierele jar de dependențe de Cucumber, borcane Spring și jar JSON-simplu pentru parser API.
- Am creat fișierul Feature pentru a descrie scenarii în engleză simplă, fișierul Step Definition pentru maparea pașilor și clasa JUnit Runner pentru a rula fișierul Feature.
- În cele din urmă, am executat clasa Test Runner și am văzut rezultatul pe consolă într-un format HTML mai prezentabil și mai lizibil.
Pe scurt, acest articol a explicat cum să începeți cu automatizarea REST API Test cu Castravete. Am acoperit configurarea cadrului nostru de automatizare a testelor chiar de la instalarea tuturor software-urilor esențiale, configurarea proiectului, dezvoltarea TestScript până la executarea testului și vizualizarea rapoartelor generate.
Acest lucru este suficient pentru orice QA de automatizare pentru a începe cu cadrul de automatizare de testare. Dar dacă cineva vrea să înțeleagă în detaliu cum funcționează Castravetele intern, cum funcționează limba Gherkin, atunci acesta poate fi explorat pe Castravete.
Sper că sunteți gata să începeți cu testarea API-ului REST în stil BDD cu castraveți !!
Lectură recomandată
- Cele mai bune 10 instrumente de testare API în 2021 (SOAP și REST API Testing Tools)
- Cele mai bune instrumente de testare software 2021 (Instrumente de automatizare a testelor de calitate)
- Testarea API REST cu Spring RestTemplate și TestNG
- Descărcare eBook Descărcare Primer
- Top 20 Cele mai importante API Testarea întrebărilor și răspunsurilor la interviu
- Testarea SaaS: provocări, instrumente și abordare de testare
- Simplificarea testării API cu Katalon Studio
- Testarea automatizării folosind instrumentul Castravete și Seleniu - Tutorial Seleniu # 30