rest api testing with cucumber using bdd approach
Este tutorial explica las pruebas de API REST con pepino utilizando el enfoque BDD. Cubre la instalación de software, la configuración del proyecto, la ejecución de TestScript y los informes.
En este artículo, veremos cómo comenzar con las pruebas de API REST en estilo BDD con el marco Cucumber.
Antes de profundizar en el tema, comprendamos los conceptos importantes involucrados en él.
¡¡Empecemos!!
Preguntas y respuestas de la entrevista para desarrolladores de .net
Lo que vas a aprender:
- Conceptos importantes en la API REST
- ¿Cómo funciona el pepino?
- Configuración de Cucumber Test Framework en Windows
- Conclusión
- Lectura recomendada
Conceptos importantes en la API REST
DESCANSO
Este es un estilo de arquitectura de software. La forma completa de REST es transferencia de estado representacional . Define un conjunto de restricciones que se utilizarán para crear servicios web. Los servicios web que se ajustan al estilo arquitectónico REST se denominan servicios web RESTful.
Pruebas de API REST
Las pruebas de API REST están probando API utilizando 4 métodos principales, es decir, POST, GET, PUT y DELETE.
Plantilla REST
RestTemplate es una clase de marco de primavera de código abierto que proporciona una forma conveniente de probar los servicios web de descanso basados en HTTP al proporcionar métodos sobrecargados para los métodos HTTP.
Nota : Para obtener más información sobre el concepto de prueba de API REST, puede consultar nuestro tutorial anterior ' Pruebas de API REST con Spring RestTemplate y TestNG 'Donde hemos cubierto cómo realizar pruebas de API REST manualmente junto con el concepto de JSON.
BDD
BDD es el enfoque de desarrollo impulsado por el comportamiento. Esta es una de las técnicas de desarrollo de software que ha surgido del desarrollo basado en pruebas, es decir, el estilo TDD.
El principio de las pruebas de BDD es que los casos de prueba están escritos en un lenguaje natural que también es fácilmente legible por quienes no son programadores.
Pepino
El pepino es una herramienta que apoya el desarrollo impulsado por el comportamiento
¿Cómo funciona el pepino?
Veamos cómo funciona el pepino.
Cucumber consta de archivos de características, archivos de definición de pasos y clase de corredor.
Archivos de características
Los archivos de características los escribe su analista de negocios o tal vez su patrocinador. Estos están escritos en formato de lenguaje natural con especificaciones descritas en él y validan que la aplicación funciona según las especificaciones.
Estas especificaciones tienen múltiples escenarios o ejemplos mencionados en él. Cada escenario es una lista de ciertos pasos que debe seguir Cucumber.
Consideremos un escenario en el que el usuario desea iniciar sesión en el sistema.
Para verificar si esto funciona según las especificaciones, es necesario describir este escenario. Aquí están los pasos que se deben realizar junto con el resultado deseado según las especificaciones.
Solo para tener una idea, así es como se verá un escenario de muestra:
|_+_|Como puede ver, cada escenario es una especie de lista de los pasos que debe seguir Cucumber. Para que Cucumber comprenda los escenarios, deben seguir algunas reglas de sintaxis básicas, llamadas Pepinillo .
Archivos de definición de pasos
Los archivos de definiciones de pasos asignan cada paso de Gherkin mencionado en un archivo de características al código de implementación. Esto permite a Cucumber ejecutar la acción que debe realizar el paso.
El marco de Cucumber admite muchos lenguajes de programación para escribir definiciones de Step como Java, .net y Ruby.
Nota : En el artículo ' Pruebas de API REST con Spring RestTemplate y TestNG ’, Hemos desarrollado el proyecto de prueba TestNG con la plantilla Spring.
Ahora, desarrollaremos el marco de prueba para el mismo servicio REST y RestTemplate, pero utilizando Cucumber para el estilo de prueba de desarrollo impulsado por el comportamiento.
¡Comencemos con la configuración de nuestro marco de prueba de automatización con Cucumber!
Configuración de Cucumber Test Framework en Windows
# 1) Instalación
(yo) Usaremos Java para el desarrollo de definiciones de pasos. Entonces, primero descargue el instalador de JDK para Windows desde Oráculo e instale Java en su máquina.
(ii) IDE (entorno de desarrollo integrado) : He utilizado Eclipse como un IDE para el desarrollo de mi Automation Test Suite. Puedes descargarlo desde Eclipse
(iii) Obtenga el complemento Eclipse para pepino:
Siga estos pasos en Eclipse:
- Seleccione Ayuda -> Instalar nuevo software en la opción del menú.
- Ingresar 'Eclipse de pepino' en el cuadro de texto de búsqueda.
- Clickea en el Instalar en pc botón.
Instalación del complemento Cucumber en Eclipse
- Siga haciendo clic en el botón Siguiente hasta llegar al Revisar licencia pantalla.
Finalmente, haga clic en la casilla de verificación para aceptar el Acuerdo de licencia y haga clic en el Finalizar botón. Esto completará la instalación. Ahora, reinicie el IDE de Eclipse. Esto es necesario para que la instalación del complemento entre en vigor.
(iv) Frascos de primavera: Como vamos a usar la clase RestTemplate que pertenece al marco de Spring, necesita tener jarras de marco de Spring. Puede descargar frascos de primavera desde el Marco de primavera y guárdelo en la carpeta local. Por ejemplo, C: / projectJar
(v) Frascos JSON-Simple: Necesitamos realizar un análisis JSON. Por lo tanto, usaremos una API simple JSON ligera. Entonces, descargue JSON-simple-1.1.jar y guárdelo en C: / projectJar
(vi) Tarros de pepino:
Necesitaría los siguientes frascos de pepino para ejecutar el proyecto de pepino:
- pepino
- pepino-java
- pepino-JUnit
- pepino-JVM-deps
- informes de pepino
- pepinillo
- JUnit
- mockito-todo
- cobertura
- pepino-HTML (Para informes en html)
Puede descargar estos archivos usando el archivo pom.xml. Pero, la forma más sencilla es descargar estos archivos jar desde el Repositorio central y guarde esos archivos jar en la carpeta local, Por ejemplo, C: / projectJar
Ahora, con esto, hemos completado todas las instalaciones necesarias. Entonces, creemos nuestro proyecto BDD Test Automation.
# 2) Configuración del proyecto
- Crear archivo -> Nuevo -> Proyecto Java -> Nómbrelo como ' CRUD_Cucumber '.
- Ahora, cree un nuevo paquete de Java manifestación.
- Configure BuildPath del proyecto:
- Como ha visto en la sección anterior, hemos instalado el complemento Cucumber, la primavera descargada y los frascos JSON-simple. Entonces, es hora de agregar una ruta de compilación en nuestro proyecto para consumirlos. Para eso, crea un lib carpeta en Carpeta CRUD_Cucumber ' y ahora copie todos los archivos jar de C: / projectJar a lib / Pepino, lib / Spring carpeta.
- Haga clic con el botón derecho en ' CRUD_Cucumber ' -> Ruta de construcción -> Configurar ruta de construcción.
- Clickea en el Bibliotecas pestaña.
- Haga clic en Agregar frascos botón-> Seleccionar todos los frascos del lib / Pepino carpeta y lib / Spring carpeta. Esto agregará todos los frascos de pepino, los frascos de primavera y el frasco simple JSON a la ruta de construcción de su proyecto.
La estructura de su proyecto se mostrará de la siguiente manera en el Explorador de paquetes de Eclipse.
Estructura del paquete del proyecto de prueba
# 3) Archivo de características
Ahora, construyamos nuestro archivo de características DemoFeature.feature teniendo la característica como Realizar operaciones CRUD en el servicio al empleado.
En nuestro ejemplo, he usado un http://dummy.restapiexample.com/api ejemplo de servicio REST ficticio.
Este archivo de características describe los escenarios para realizar las operaciones CRUD, es decir, para cubrir CRUD (Crear-Leer-Actualizar-Eliminar).
- Primero definamos la característica, en nuestro caso, se trata de probar los métodos CRUD, que se pueden describir de la siguiente manera.
- Ahora, esto tiene diferentes escenarios como Crear, Actualizar, Leer y Eliminar el registro del empleado. Así que eche un vistazo al escenario POST:
- Describa el requisito previo para la prueba que establece la URL del servicio para empleados.
- Especifique el paso de prueba real para enviar una solicitud de publicación.
- Ahora, describa la verificación del cuerpo de respuesta.
Entonces, en nuestro archivo de características, el escenario se verá de la siguiente manera:
|_+_|Del mismo modo, puede escribir los escenarios restantes como se muestra a continuación.
DemoFeature.feature
# 4) Implementación de la definición de pasos
Para los pasos de funciones utilizados en los escenarios anteriores, debe escribir implementaciones programáticas, en este caso, es Java.
Una definición de paso es un método escrito en Java que tiene una expresión. Vincula su método a uno o varios pasos. Entonces, cuando Cucumber ejecuta los pasos descritos en un escenario del archivo de características, primero busca una coincidencia definición de paso ejecutar.
Por ejemplo, cuando la definición de paso para Agregar empleado usando POST se puede escribir de la siguiente manera.
Para el paso dado, la implementación se escribe de la siguiente manera:
|_+_|De manera similar, para el paso When, el siguiente es el método de definición:
|_+_|Ahora, aquí está la parte del paso de verificación, es decir, la implementación del paso Then:
tutorial de lista enlazada de c ++|_+_|
Nota: Aquí, estamos usando el método RestTemplate para enviar solicitudes. Este es el mismo que el método utilizado en ' Pruebas de API REST con Spring RestTemplate y TestNG ’ . Para saber más sobre los métodos de plantilla de descanso, puede consultar el tutorial.
Por lo tanto, la definición de su paso se verá de la siguiente manera.
StepDefinition.java
Puede implementar las definiciones de pasos para los escenarios restantes Actualizar, Leer y Eliminar empleado de la misma manera.
# 5) Ejecución de las pruebas
Ahora, hemos completado nuestra tarea de desarrollo de guiones de pasos y escenarios, así que ejecutemos nuestras pruebas. Para esto, necesitamos escribir una clase de corredor JUnit.
|_+_|Aquí, debe agregar las siguientes anotaciones sobre el nombre de la clase:
@RunWith (Cucumber.class): Para ejecutar como una clase de corredor de prueba para Cucumber.
@CucumberOptions: Aquí especifica la ubicación del archivo de características y la ubicación del archivo de definición de paso para que el marco de Cucumber lo examine durante la ejecución.
|_+_|Enchufar: Esto se utiliza para especificar diferentes opciones de formato para el informe que se genera como salida.
Por lo tanto, su clase de corredor se verá así.
TestRunner.java
Simplemente haga clic derecho en TestRunner.java y seleccione la opción ' Ejecutar como prueba JUnit ' . Esto mostrará el resultado de la ejecución de la prueba de la siguiente manera.
Salida de la pestaña Junit
Verá los siguientes mensajes en la consola.
Salida de consola
# 6) Informes
Hemos visto el resultado en la consola. Sin embargo, Cucumber proporciona los resultados de las pruebas en un formato HTML más presentable que se puede compartir con las partes interesadas.
Abierto objetivo -> informes de pepino en el navegador.
Nota : ¿Recuerdas la clase CucucmberOptions de Junit?
|_+_|Aquí, el complemento es la opción que especificamos para los informes en formato HTML junto con la carpeta.
|_+_|Ahora abra la página target cucumber-reports index.html. La página del informe es la página HTML donde puede ver el nombre de la función con los escenarios que se ejecutaron correctamente.
Por tanto, su informe se verá de la siguiente manera.
Resultado de la prueba de pepino en formato HTML
Conclusión
Para concluir este tutorial, resumamos lo que hemos aprendido hasta ahora.
Vimos todos los pasos desde el principio para configurar BDD Cucumber REST API Test Automation Framework.
En este proceso aprendimos lo siguiente:
- Para la automatización de pruebas, seleccionamos Java como lenguaje de programación.
- Elegimos Cucumber como el marco de prueba para crear un conjunto de pruebas en la forma de prueba de desarrollo impulsado por el comportamiento.
- Para enviar solicitudes HTTP reales al servidor, consumimos la clase RestTemplate del marco de Spring.
- Para consumir estas API, hicimos la instalación del complemento Cucumber, descargamos los archivos jar de las dependencias de Cucumber, Spring jars y JSON-simple jar para la API del analizador.
- Creamos el archivo de características para describir escenarios en un lenguaje sencillo, el archivo de definición de pasos para mapear pasos y la clase JUnit Runner para ejecutar el archivo de características.
- Finalmente, ejecutamos la clase Test Runner y vimos el resultado en la consola en un formato HTML más presentable y legible.
En resumen, este artículo explica cómo comenzar con la automatización de pruebas de API REST con Cucumber. Cubrimos la configuración de nuestro marco de automatización de pruebas desde la instalación de todo el software esencial, la configuración del proyecto, el desarrollo de TestScript hasta la ejecución de la prueba y la visualización de los informes generados.
Esto es suficiente para que cualquier QA de automatización comience con el marco de automatización de pruebas. Pero si alguien quiere comprender en detalle cómo funciona el pepino internamente, cómo funciona el lenguaje de pepinillo, entonces se puede explorar en Pepino.
¡Espero que esté listo para comenzar con la prueba de API REST en estilo BDD con pepino!
Lectura recomendada
- Las 10 mejores herramientas de prueba de API en 2021 (herramientas de prueba de API SOAP y REST)
- Mejores herramientas de prueba de software 2021 (Herramientas de automatización de pruebas de control de calidad)
- Pruebas de API REST con Spring RestTemplate y TestNG
- Descarga del libro electrónico Testing Primer
- Las 20 preguntas y respuestas más importantes de la entrevista de pruebas de API
- Pruebas de SaaS: desafíos, herramientas y enfoque de prueba
- Simplificar las pruebas de API con Katalon Studio
- Pruebas de automatización con la herramienta Pepino y selenio - Tutorial de selenio n. ° 30