rest api testing with cucumber using bdd approach
Aquest tutorial explica les proves de l'API REST amb cogombre mitjançant l'aproximació BDD. Cobreix la instal·lació de programari, la configuració del projecte, l'execució de TestScript i els informes.
En aquest article, veurem com començar a provar API REST a l’estil BDD amb el framework Cucumber.
Abans d’endinsar-nos en el tema, entenem els conceptes importants que hi intervenen.
Comencem!!
com provar l'aplicació del servidor client
Què aprendreu:
- Conceptes importants a l'API REST
- Com funciona el cogombre?
- Configuració del marc de proves de cogombre al Windows
- Conclusió
- Lectura recomanada
Conceptes importants a l'API REST
DESCANS
Aquest és un estil arquitectònic de programari. La forma completa de REST és Transferència d'Estat Representacional . Defineix un conjunt de restriccions que s’utilitzaran per crear serveis web. Els serveis web que s’ajusten a l’estil arquitectònic REST s’anomenen serveis web RESTful.
Proves API REST
La prova de l'API REST prova l'API mitjançant quatre mètodes principals, és a dir, POST, GET, PUT i DELETE.
Plantilla REST
RestTemplate és una classe de framework de primavera de codi obert que proporciona una manera còmoda de provar els serveis web reposats basats en HTTP proporcionant mètodes sobrecarregats per als mètodes HTTP.
Nota : Per obtenir més informació sobre el concepte REST API Testing, podeu consultar el nostre tutorial anterior. Proves d'API REST amb Spring RestTemplate i TestNG ', On hem explicat com realitzar proves d'API REST manualment juntament amb el concepte de JSON.
BDD
El BDD és l’enfocament del desenvolupament impulsat pel comportament. Aquesta és una de les tècniques de desenvolupament de programari que ha sorgit del desenvolupament impulsat per proves, és a dir, de l’estil TDD.
El principi de les proves de BDD és que els casos de prova s’escriuen en un llenguatge natural que també poden llegir fàcilment els no programadors.
Cogombre
El cogombre és una eina que dóna suport al desenvolupament basat en el comportament
Com funciona el cogombre?
Vegem com funciona el cogombre.
El cogombre consisteix en fitxers de funcions, fitxers de definició de passos i classe Runner.
Fitxers de funcions
Els fitxers de funcions els escriu el vostre Business Analyst o potser el vostre patrocinador. S’escriuen en format de llenguatge natural amb les especificacions que s’hi descriuen i validen les funcions de l’aplicació segons les especificacions.
Aquestes especificacions contenen diversos escenaris o exemples. Cada escenari és una llista de certs passos que cal dur a terme en Cogombre.
Considerem un escenari en què l'usuari vol iniciar la sessió al sistema.
Per verificar si funciona segons les especificacions, cal descriure aquest escenari. A continuació, es detallen els passos que cal realitzar juntament amb el resultat desitjat segons les especificacions.
Només per fer-se una idea, així es mostrarà un escenari de mostra:
Scenario: Login to the system Given User launches Login screen When User enters username, password and submit Then Login Successful message appears
Podeu veure que cada escenari és una mena de llista dels passos que cal dur a terme per a Cogombre. Perquè el Cogombre entengui els escenaris, ha de seguir algunes regles bàsiques de sintaxi, anomenades Cogombre .
Fitxers de definició de passos
Els fitxers de definicions de pas mapen cada pas de Gherkin esmentat en un fitxer de funcions amb el codi d'implementació. Això permet al Cogombre executar l'acció que cal fer pel pas.
Cucumber Framework admet molts llenguatges de programació per escriure definicions de passos com Java, .net i Ruby.
Nota : A l’article ‘ Proves d'API REST amb Spring RestTemplate i TestNG ’, Hem desenvolupat el projecte de prova TestNG amb la plantilla Spring.
Ara, desenvoluparem el marc de proves per al mateix servei REST i RestTemplate, però utilitzant Cucumber per a l'estil de proves de desenvolupament basat en el comportament.
Comencem amb la configuració del nostre marc de proves d'automatització amb Cucumber.
Configuració del marc de proves de cogombre al Windows
# 1) Instal·lació
(i) Utilitzarem Java per al desenvolupament de definició de passos. Per tant, primer descarregueu l'instal·lador JDK per a Windows des de Oracle i instal·leu Java a la vostra màquina.
(ii) IDE (entorn de desenvolupament integrat) : He utilitzat Eclipse com a IDE per al meu desenvolupament de Automation Test Suite. Podeu descarregar-lo des de eclipsi
(iii) Obteniu el complement Eclipse per a Cogombre:
Seguiu aquests passos a Eclipse:
- Seleccioneu Ajuda -> Instal·la programari nou a l’opció de menú.
- Entra 'Eclipsi de cogombre' al quadre de text de cerca.
- Feu clic al botó Instal·la botó.
Instal·lació del complement de cogombre a Eclipse
- Seguiu fent clic al botó Següent fins que arribeu a Llicència de revisió pantalla.
Finalment, feu clic a la casella de selecció per acceptar l 'Acord de llicència i feu clic a Acabar botó. Això completarà la instal·lació. Ara, reinicieu l'IDE Eclipse. Això és necessari per fer efectiva la instal·lació del connector.
(iv) pots de primavera: Com que farem servir la classe RestTemplate que pertany al framework spring, heu de tenir pots de framework spring. Podeu descarregar els pots de primavera des de Spring Framework i deseu-lo a la carpeta local. Per exemple, C: / projectJar
(v) JSON: pots simples: Hem de realitzar anàlisis JSON. Per tant, utilitzarem una API lleugera senzilla per a JSON. Per tant, descarregueu JSON-simple-1.1.jar i deseu-lo a C: / projectJar
(vi) Pots de cogombre:
Per executar el projecte Cucumber, necessitareu els pots de cogombre següents:
- nucli de cogombre
- cogombre-java
- cogombre-JUnit
- cogombre-JVM-deps
- informes de cogombres
- cogombre
- JUnit
- mockito-tot
- cobertura
- cucumber-HTML (Per a informes en html)
Podeu descarregar aquests fitxers mitjançant el fitxer pom.xml. Però, la forma més senzilla és descarregar aquests fitxers jar des del fitxer Dipòsit central i deseu els fitxers jar a la carpeta local, Per exemple, C: / projectJar
Ara, amb això, hem completat totes les instal·lacions necessàries. Per tant, creem el nostre projecte d’automatització de proves BDD.
# 2) Configuració del projecte
- Crea fitxer -> Nou -> Projecte Java -> Posa-li el nom com a ' CRUD_Cogombre ’.
- Ara, creeu un nou paquet Java demostració.
- Configureu BuildPath del projecte:
- Com heu vist a la secció anterior, hem instal·lat el connector Cucumber, la primavera descarregada i els pots simples JSON. Per tant, és hora d’afegir un camí de construcció al nostre projecte per consumir-los. Per a això, creeu un fitxer lib carpeta a Carpeta CRUD_Cucumber ’ i ara copieu tots els pots del C: / projectJar a lib / Cogombre, lib / Spring carpeta.
- Feu clic amb el botó dret a CRUD_Cucumber ' -> Construeix camí -> Configura el camí de construcció.
- Feu clic al botó Biblioteques fitxa.
- Fer clic a Afegiu pots botó-> Selecciona tots els pots del fitxer lib / Cogombre carpeta i lib / Primavera carpeta. Això afegirà tots els pots de cogombre, els de primavera i el pot simple JSON al vostre camí de construcció del projecte.
L'estructura del vostre projecte es mostrarà de la manera següent a l'Explorador de paquets Eclipse.
Estructura del paquet del projecte de prova
# 3) Fitxer de funcions
Ara, anem a crear el nostre fitxer de funcions DemoFeature.feature que té la funció com Realització d’operacions CRUD al servei dels empleats.
En el nostre exemple, he fet servir un servei REST de mostra http://dummy.restapiexample.com/api fictici.
Aquest fitxer de funcions descriu els escenaris per realitzar les operacions CRUD, és a dir, per cobrir CRUD (Crear-Llegir-Actualitzar-Eliminar).
- Definim primer la funció, en el nostre cas, es tracta de provar mètodes CRUD, que es poden descriure de la següent manera.
Feature: Test CRUD methods in Sample Employee REST API testing
- Ara, això té diferents escenaris, com ara crear, actualitzar, llegir i suprimir el registre dels empleats. Per tant, mireu l’escenari POST:
Scenario: Add Employee record
- Descriviu els requisits previs per a la prova que estableix l'URL del servei als empleats.
Given I Set POST employee service api endpoint
- Especifiqueu el pas de prova real d'enviar una sol·licitud de publicació.
When I Set request HEADER And Send a POST HTTP request
- Ara, descriviu la verificació del cos de resposta.
Then I receive valid Response
Per tant, al nostre fitxer de funcions, l’escenari tindrà el següent aspecte:
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
De la mateixa manera, podeu escriure la resta d’escenaris tal com es mostra a continuació.
DemoFeature.feature
# 4) Implementació de definició de passos
Per als passos de funcions utilitzats en els escenaris anteriors, heu d’escriure implementacions programàtiques, en aquest cas es tracta de Java.
Una definició de passos és un mètode escrit en Java que té una expressió. Vincula el seu mètode a un o diversos passos. Per tant, quan Cucumber executa els passos descrits en un escenari del fitxer de funcions, primer busca una coincidència definició de pas executar.
Per exemple, quan la definició del pas per afegir empleat mitjançant POST es pot escriure de la manera següent.
Per al pas donat, la implementació s'escriu de la següent manera:
@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); }
De la mateixa manera, per al pas When, el següent és el mètode de definició:
plsql preguntes i respostes de l'entrevista pdf
@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); }
Ara, aquí teniu la part del pas de verificació, és a dir, la implementació del pas Després:
@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); }
Nota: Aquí fem servir el mètode RestTemplate per enviar la sol·licitud. És el mateix que el mètode utilitzat a ‘ Proves d'API REST amb Spring RestTemplate i TestNG ' . Per obtenir més informació sobre els mètodes de plantilla de descans, podeu consultar el tutorial.
Per tant, la definició del pas serà la següent.
StepDefinition.java
Podeu implementar les definicions de passos per als escenaris restants Actualitzar, llegir i suprimir empleats de la mateixa manera.
# 5) Execució de les proves
Ara hem completat la nostra tasca de desenvolupament d’escenaris i passos, així que fem les nostres proves. Per a això, hem d’escriure una classe de corredors de JUnit.
publicclassRunner { }
Aquí heu d'afegir les anotacions següents a sobre del nom de la classe:
@RunWith (Cucumber.class): Córrer com a corredor de prova de Cogombre.
@CucumberOptions: Aquí especifiqueu la ubicació del fitxer de funcions i la ubicació del fitxer de definició de passos perquè el marc Cucumber tingui en compte durant l'execució.
features='' glue=''
Connectar: S'utilitza per especificar diferents opcions de format per a l'informe que es genera com a sortida.
Per tant, la vostra classe de corredor tindrà aquest aspecte.
TestRunner.java
Simplement feu clic amb el botó dret a sobre TestRunner.java i seleccioneu l'opció ' Executa com a prova de JUnit ' . Es mostrarà el resultat de l'execució de la prova de la següent manera.
Sortida de pestanya Junit
Veureu els missatges següents a Console.
Sortida de la consola
# 6) Informes
Hem vist el resultat a la consola. Tanmateix, Cucumber proporciona resultats de proves en un format HTML més presentable que es pot compartir amb els vostres grups d'interès.
Obert objectiu -> informes de cogombre al navegador.
Nota : Recordeu la classe Junit runner CucucmberOptions?
@CucumberOptions (features='Features',glue={'demo'},plugin={'pretty', 'html:target/cucumber-reports'})
Aquí el connector és l'opció que especifiquem per als informes de format HTML juntament amb la carpeta.
target/cucumber-reports
Ara obriu la pàgina target cucumber-reports index.html. La pàgina de l'informe és la pàgina HTML on podeu veure el nom de la funció amb escenaris que s'han executat correctament.
Per tant, el vostre informe serà el següent.
Resultat de CucumberTest en format HTML
Conclusió
Per concloure aquest tutorial, resumim el que hem après fins ara.
Vam veure tots els passos des del principi per configurar el BDD Cucumber REST API Test Automation Framework.
En aquest procés hem après el següent:
- Per a l'automatització de proves, hem seleccionat Java com a llenguatge de programació.
- Vam triar Cucumber com a marc de prova per crear una suite de proves de la manera de prova de desenvolupament impulsat pel comportament.
- Per enviar sol·licituds HTTP reals al servidor, hem consumit la classe RestTemplate del framework Spring.
- Per consumir aquestes API, vam fer la instal·lació del complement Cucumber, vam descarregar els fitxers jar de les dependències de Cucumber, Spring Jars i l'API JSON simple per a l'analitzador.
- Hem creat el fitxer Feature per descriure escenaris en anglès senzill, Step Definition file per assignar Steps i JUnit Runner class per executar el fitxer Feature.
- Finalment, vam executar la classe Test Runner i vam veure el resultat a la consola en un format HTML més presentable i llegible.
En resum, aquest article explicava com començar amb l’automatització de la prova REST API amb Cucumber. Hem tractat de configurar el nostre marc d'automatització de proves des de la instal·lació de tot el programari essencial, la configuració del projecte, el desenvolupament de TestScript fins a l'execució de la prova i la visualització d'informes generats.
Això és suficient perquè qualsevol QA d'automatització comenci amb el marc d'automatització de proves. Però si algú vol entendre amb detall com funciona el Cogombre internament, com funciona el llenguatge Gherkin, es pot explorar a Cogombre.
Espero que estigueu a punt per començar amb la prova de l'API REST en estil BDD amb cogombre !!
Lectura recomanada
- 10 millors eines de proves d'API el 2021 (eines de proves d'API SOAP i REST)
- Les millors eines de prova de programari 2021 (Eines d'automatització de proves de control de qualitat)
- Proves API REST amb Spring RestTemplate i TestNG
- Prova de descàrrega de llibres electrònics
- Top 20 de les preguntes i respostes de les entrevistes de proves API més importants
- Proves SaaS: reptes, eines i enfocament de proves
- Feu que les proves API siguin senzilles amb Katalon Studio
- Proves d'automatització mitjançant l'eina Cucumber i Selenium - Tutorial Selenium # 30