rest api testing with spring resttemplate
Este tutorial en profundidad explica cómo comenzar con las pruebas de API REST con Spring RestTemplate y TestNG con ejemplos simples:
En este artículo, veremos cómo comenzar con REST API Testing con RestTemplate y TestNG framework.
Antes de explorar las pruebas de API REST con RestTemplate y el marco TestNG, comprendamos algunos de los conceptos básicos involucrados en él.
¡¡Empecemos!!
Lo que vas a aprender:
- ¿Qué es REST?
- ¿Qué es JSON?
- ¿Qué son las pruebas de API REST?
- ¿Qué es TestNG?
- ¿Qué es la plantilla Spring REST?
- Pasos de prueba de la API REST
- Configuración de TestNG Test Framework en Windows
- Código completo de archivo TestCRUD
- Conclusión
- Lectura recomendada
¿Qué es REST?
Hoy en día, REST se ha convertido en una opción bastante popular para crear servicios web. Por ejemplo , Google tiene varios servicios REST como Calendar, API de mapas , etc.
DESCANSO es decir. Transferencia de estado representacional es un estilo de arquitectura de software. En este estilo, se define un conjunto de restricciones y los servicios web creados son necesarios para satisfacer estas restricciones. Estos servicios web que se ajustan al estilo arquitectónico REST se conocen como servicios web RESTful.
El término 'transferencia de estado representacional' fue propuesto por primera vez por Roy Fielding en su Ph.D. disertación en el año 2000. La idea básica de REST es tratar los objetos del lado del servidor como recursos que se pueden crear o eliminar.
¿Qué es JSON?
JSON es decir. Notación de objetos JavaScript es una sintaxis muy utilizada en los servicios REST para almacenar e intercambiar datos entre el navegador y el servidor.
La principal ventaja de JSON es su peso ligero y, en segundo lugar, su formato legible también. Los datos se almacenan en el formato de par clave: valor. Por ejemplo, puede tener los datos del empleado almacenados en formato JSON como este: {“nombre”: ”Emp1 ″,” salario ”:” 3000 ″, ”edad”: ”23 ″,” id ”:” 52686 ″}.
¿Qué son las pruebas de API REST?
Cuando decimos pruebas de API REST, básicamente se trata de probar API realizando acciones de Crear, Editar, Leer y Eliminar en el recurso con 4 métodos principales, es decir, POST, GET, PUT y DELETE respectivamente.
¿Qué es TestNG?
TestNG es un marco de prueba inspirado en JUnit y NUnit. Es para el lenguaje de programación Java. TestNG cubre una gama más amplia de categorías de prueba como unidad, funcional, de extremo a extremo, integración, etc.
Es un marco de código abierto que se encuentra bajo la licencia Apache. Proporciona un amplio conjunto de anotaciones que aceleran el desarrollo del script de prueba.
¿Qué es la plantilla Spring REST?
La clase Spring RestTemplate es parte de spring-web que se introdujo en Spring 3
La clase RestTemplate proporciona una forma muy conveniente de probar los servicios web restful basados en HTTP al proporcionar métodos sobrecargados para métodos HTTP como GET, POST, PUT, DELETE, etc. Spring Framework también es de código abierto.
Pasos de prueba de la API REST
Entendamos los pasos que generalmente se siguen en REST API Testing con algunos ejemplos para obtener una comprensión clara.
En este artículo, he considerado un ejemplo de servicio para empleados de API REST de esta fuente.
Inicialmente, sigamos los pasos manualmente usando la herramienta POSTMAN.
#1) Primero, conozca el punto final de la API al que desea acceder.
Por ejemplo, http://dummy.restapiexample.com/api/v1/create para crear un nuevo recurso para empleados
#2) Establezca Encabezados y Cuerpo si es necesario para el método HTTP.
En nuestro ejemplo, mientras intentamos crear un nuevo recurso usando POST. Para POST, se requiere un cuerpo de solicitud.
Entonces configuraremos el cuerpo de la siguiente manera:
'Nombre': 'zozo100 ″,' salario ':' 123 ″, 'edad': '23 ″
Aceptar : aplicación / JSON y Tipo de contenido : aplicación / JSON.
preguntas y respuestas de la entrevista del servicio web
#3) Configure el método HTTP apropiado, es decir, POST en este caso.
#4) Envíe una solicitud al servidor del servicio Rest.
#5) Reciba una respuesta del servidor.
Llamada a la API REST utilizando la herramienta POSTMAN
#6) Verifique la respuesta como se esperaba con la ayuda del código de respuesta P.ej. 200 OK como un éxito.
#7) Verifique el cuerpo de la respuesta como se esperaba si es necesario comparándolo con su archivo de referencia.
Ahora, tenemos que automatizar los mismos pasos para nuestro paquete de automatización de pruebas. Comencemos con la configuración requerida para la automatización.
Configuración de TestNG Test Framework en Windows
# 1) Instalación
- Usaremos Java para el desarrollo de scripts de prueba. Entonces, primera descarga Instalador de JDK para Windows e instale Java en su máquina.
- IDE (entorno de desarrollo integrado) : He utilizado Eclipse como IDE para el desarrollo de mi Automation Test Suite. Hacer clic aquí para descargarlo.
- Obtenga el complemento Eclipse para TestNG: Tenga en cuenta que se requiere Java 1.7+ para ejecutar TestNG para el complemento Eclipse. Se requiere Eclipse 4.2 y superior. [Referencia: TestNG ]. Siga los pasos a continuación en Eclipse:
- Seleccione Ayuda / Instalar nuevo software.
- Haga clic en Agregar -> Ingrese http://beust.com/eclipse/
- Seleccione la casilla de verificación junto a la URL y haga clic en el botón Siguiente.
Instalación de TestNG
-
- Siga haciendo clic en el botón Siguiente hasta llegar a la siguiente pantalla.
Pantalla final de instalación de TestNG
Finalmente, acepte el Acuerdo de licencia de Apache y haga clic en el botón Finalizar para completar la instalación.
Reinicie Eclipse para que la instalación del complemento entre en vigor.
- Tarros de primavera: Ahora una última cosa más, vamos a usar la clase RestTemplate del marco de Spring. Usted puede descargar tarros de primavera y guárdelo en una carpeta local, Por ejemplo ,C: / projectJar
- Frascos JSON-Simple: Necesitamos realizar un análisis JSON. Para eso, usaremos una API simple Json ligera. Entonces, descargue Json-simple-1.1.jar a C: / projectJar
Ahora hemos completado las instalaciones necesarias. Entonces, creemos nuestro proyecto de Automatización de pruebas.
# 2) Configuración del proyecto
- Crear archivo -> Nuevo -> Proyecto Java -> Nómbrelo como ' EmployeeTestSuite '.
- Ahora, cree un nuevo paquete java com.demo :
- Configurar ruta de compilación:
- Como ha visto en la sección anterior, hemos instalado TestNG, descargamos Spring y JSON-simple jars. Entonces, ahora tenemos que agregar una ruta de compilación en nuestro proyecto para consumirlos. Para eso, crea un lib carpeta en el EmployeeTestSuite carpeta y ahora copie todos los archivos jar de C: / projectJar a la lib carpeta.
- Haga clic con el botón derecho en ' EmployeeTestSuite ' -> Ruta de construcción -> Configurar ruta de construcción.
- Clickea en el lib pestaña.
- Clickea en el Agregar biblioteca Botón -> Seleccionar TestNG. Esto agregará TestNG a la ruta de construcción.
- Haga clic en Agregar frascos botón -> Seleccionar todos los frascos de lib. Esto agregará todos los archivos Spring Jars y JSON-Simple Jar a la ruta de construcción de su proyecto.
Ruta de compilación de Java
La estructura de su proyecto se mostrará de la siguiente manera en el Explorador de paquetes de Eclipse ahora.
Estructura del paquete
# 3) Clase de prueba
Necesitamos crear una clase de prueba que pueda cubrir las operaciones CRUD (Create-Read-Update-Delete).
Cree una nueva clase Archivo -> Nuevo -> Clase TestNG y asígnele el nombre TestCRUD.java
# 4) Método de prueba
Creemos métodos de prueba separados:
- addEmployee (): Método de prueba para probar Create API utilizando el método HTTP POST.
- getEmployee (): Método de prueba para probar la API de lectura mediante el método HTTP GET.
- updateEmployee (): Método de prueba para probar la API de actualización mediante el método HTTP PUT.
- deleteEmployee (): Método de prueba para probar Delete API utilizando el método HTTP DELETE.
Puede crear un método de prueba como cualquier método java solo con la anotación @Test de TestNG para que el marco TestNG lo identifique como el método de prueba
Por ejemplo,el siguiente es el método de prueba addEmployee.
|_+_|En nuestro ejemplo, he utilizado un Servicio REST de muestra.
Ahora automaticemos la llamada POST. Para eso, necesitamos mapear nuestro código con los pasos que seguimos manualmente en la sección 'Pasos de prueba de API REST' uno por uno.
#1) Primero, conozca el punto final de la API a la que desea acceder.
|_+_|#2) Establecer encabezados para el método HTTP.
|_+_|// Agregar encabezados
|_+_|Configure Body para el método HTTP.
|_+_|// Cree un objeto HttpEntity estableciendo el cuerpo y los encabezados.
|_+_|Tendremos los siguientes pasos automatizados en una declaración.
#3) Configure el método HTTP apropiado, es decir, POST en este caso.
#4) Envíe una solicitud al servidor de servicio RESTful.
#5) Reciba una respuesta del servidor.
|_+_|Estamos usando postForEntity para enviar el método POST al servidor. Recibimos la respuesta del objeto ResponseEntity del servidor.
#6) Verifique la respuesta como se esperaba con la ayuda del código de respuesta.
|_+_|Aquí, estamos usando la clase de herramienta Assert de TestNG para verificar el código de estado, método assertEquals que compara el valor real, es decir, response.getStatusCode (), con el valor esperado HttpStatus.OK.
Pero aquí, estamos haciendo una verificación más, es decir, verificando si el empleado agregado está presente en el cuerpo de respuesta o no.
|_+_|¿Cómo obtuvimos el employeeId?
Para esto, estamos tomando la ayuda de la API del analizador JSON, es decir, Json-simple.
Estamos usando un analizador JSON, ya que el formato JSON se usa para almacenar e intercambiar los datos entre el cliente y nuestro servidor en nuestro servicio REST para empleados. Como se mencionó anteriormente, los datos JSON se almacenan en valor clave formato. Aquí, queremos obtener el 'identificación' valor.
Lo obtendremos analizando el cuerpo de la respuesta de la siguiente manera:
|_+_|Entonces, esto se trata de la prueba del método Create.
diferencia entre el escenario de prueba y el caso de prueba
Actualizar, obtener y eliminar métodos
- Cree métodos de prueba separados y configure Encabezados según corresponda.
- La verificación del código de estado también se realiza de manera similar.
- La principal diferencia son los métodos para enviar una solicitud a los servidores.
Puede utilizar los siguientes métodos:
# 1) Actualizar empleado : Es la solicitud HTTP PUT. El método RestTemplate PUT que puede utilizar es:
|_+_|# 2) Consiga empleado: Es la solicitud HTTP GET. El método RestTemplate GET que puede utilizar es el siguiente:
|_+_|# 3) Eliminar recurso de empleado: Es la solicitud HTTP DELETE. El método RestTemplate DELETE que puede utilizar es:
|_+_|Aparte de estos métodos, existen métodos útiles exchange () y execute ().
Por ejemplo, si lo nota, el método Delete es nulo. Pero si desea verificar el cuerpo de la respuesta, necesitará una respuesta de la ejecución del método. Para ese propósito, puede usar el método exchange () que devuelve ResponseEntity. Referirse a Marco de primavera para más detalles.
# 5) Ejecución de las pruebas
Ahora, hemos completado nuestra tarea de desarrollo del script de prueba, así que ejecutemos nuestras pruebas. Simplemente haga clic derecho en TestCRUD.java y selecciona la opción 'Ejecutar como prueba TestNG' .
Esto mostrará los resultados de la ejecución de la prueba de la siguiente manera.
Salida de consola
Nota: Puede definir su suite de pruebas en testng.xml archivo también. En nuestro ejemplo, es solo un script de prueba. Pero en el escenario real, siempre es una colección de múltiples guiones.
Entonces, su archivo testg.xml se verá de la siguiente manera:
|_+_|# 6) Informes
Hemos visto el resultado en la consola. Pero TestNG proporciona los resultados de las pruebas en un formato html más presentable que se puede compartir con las partes interesadas. Abierto salida de prueba -> emailable-report.html en el navegador.
Verá el informe de prueba de la siguiente manera. En la página del informe, puede ver el nombre de la prueba como TestCRUD, varias pruebas aprobadas, es decir, 4, Número de omitidos y Fallidos, que son 0 en este caso. También muestra el tiempo total requerido para la ejecución de cada método de prueba.
Resultado de la prueba en formato Html
Código completo de archivo TestCRUD
|_+_|Conclusión
Hemos resumido el resultado del aprendizaje de este artículo a continuación. Vimos todos los pasos desde el principio para configurar un marco de automatización de pruebas de API REST.
En esto aprendimos lo siguiente:
- Para la automatización de pruebas, seleccionamos Java como lenguaje de programación.
- Elegimos TestNG como marco de prueba para crear un script de prueba en el que consumimos anotaciones de TestNG como @Test.
- Para enviar solicitudes HTTP reales al servidor, consumimos la clase RestTemplate de Spring Framework.
- Para consumir estas API, hicimos la instalación de TestNG, descargamos Spring jars y Json-simple jar para la API del analizador.
- Finalmente, ejecutamos la clase Test y vimos el resultado en la consola así como en un formato HTML más presentable y legible.
En pocas palabras, en este artículo, aprendimos cómo comenzar con la automatización de pruebas de API REST con Spring RestTemplate. Cubrimos la configuración de nuestro marco de automatización de pruebas a partir de la instalación de todo el software esencial, la configuración del proyecto, el desarrollo del script de prueba hasta la ejecución de la prueba y la visualización de los informes generados.
Esto es bastante suficiente para que cualquier QA de automatización comience con su marco de automatización de pruebas. Pero, hemos visto solo las partes requeridas de cada uno. Por ejemplo, hemos usado la instalación de TestNG, el método de prueba usando la anotación @Test, los informes. Sin embargo, TestNG proporciona muchas más funciones como DataProvider para pruebas basadas en datos, etc.
¿Está listo para comenzar con la automatización de pruebas de API REST con Spring RestTemplate?
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]
- Descarga del libro electrónico Testing Primer
- Las 20 preguntas y respuestas más importantes de la entrevista de pruebas de API
- Simplificar las pruebas de API con Katalon Studio
- Tutorial de Parasoft SOAtest: Herramienta de prueba de API sin script
- Pruebas de carga con tutoriales de HP LoadRunner
- Diferencia entre pruebas de escritorio, cliente-servidor y pruebas web