web services testing using apache http client
Este tutorial trata sobre la realización de varias operaciones CRUD en servicios web y la prueba de servicios web mediante el cliente HTTP Apache:
En esto Serie completa de tutoriales de pruebas de API , hemos aprendido que los servicios web actúan como un medio de comunicación entre las máquinas cliente y servidor que interactúa a través de una red. Explicamos todo sobre Pruebas de API con POSTMAN en nuestro tutorial anterior.
En este artículo, enfatizaremos cómo probar los servicios web usando el cliente HTTP Apache y realizar diferentes operaciones CRUD en los servicios web. También se discutirán los diferentes tipos de clientes REST disponibles para las pruebas de backend.
preguntas y respuestas de la entrevista de prueba de aplicaciones web
Lo que vas a aprender:
- ¿Qué es un servicio web?
- ¿Qué es el cliente REST?
- Operaciones CRUD con el cliente HTTP Apache
- Conclusión
¿Qué es un servicio web?
Los servicios web son un medio de comunicación entre las máquinas cliente y servidor que interactúa a través de una red con la ayuda de protocolos HTTP. Los servicios web son generalmente API que no se instalan ni almacenan localmente, pero que están disponibles en nubes o en algunos servidores remotos.
Consulte el siguiente ejemplo para comprender cómo funcionan los servicios web.
MakeMyTrip y Goibibo.com son algunos de los famosos sitios web de reserva de vuelos y hoteles, y hay diferentes proveedores de vuelos disponibles como Indigo, Air India y Etihad, etc.
Si un cliente desea reservar un vuelo de Nueva York a Londres, puede navegar directamente en el portal de proveedores de vuelos o puede reservar a través de proveedores externos. Si están reservando a través de proveedores externos como MakeMyTrip y otros sitios de reserva, en unos pocos segundos compararán y mostrarán resultados que brinden detalles del vuelo como el precio más bajo, el tiempo de vuelo y mucha más información.
La pregunta que surge aquí es, ¿cómo exactamente, en segundos, nos están proporcionando la información? ¿Qué hacen exactamente?
Desde la interfaz de usuario, toman toda la información necesaria y la almacenan en un archivo JSON o XML y llaman a las API de su proveedor con un token de autenticación cuando exponen sus API y, en respuesta, el sitio del proveedor de vuelos envía una respuesta JSON / XML a MakeMyTrip, y convierten la respuesta recibida y muestran los detalles en la interfaz de usuario.
Tipos de servicios web
Hay dos tipos de servicios web, a saber
- API SOAP
- API REST
Veamos las diferencias entre estos dos servicios web como se muestra en la siguiente imagen.
Archivos JSON / XML en el servicio web
Dejemos que el sistema S1 se devuelva en lenguaje J2EE y que el sistema S2 se devuelva en .NET o Python y sabemos que ambas tecnologías son completamente diferentes entre sí por cuestiones de seguridad también. Entonces, ¿cómo compartirá el sistema S2 el código con otro sistema?
Por lo tanto, el sistema S2 expone sus API al sistema S1 sin exponer la lógica empresarial, y el sistema S2 comparte el nombre de la API, la URL de la API, el formato de la API y la clave de autenticación / clave de token para acceder a su sistema. La comunicación ocurre entre los dos sistemas usando archivos JSON o XML.
¿Por qué solo archivos JSON / XML?
Se utilizan archivos JSON / XML porque son recopiladores de datos. Cualquier información en particular se almacena en formato JSON o XML, ya que son livianos y son un lenguaje estándar para comunicarse entre dos interfaces / plataformas o sistemas diferentes.
Por lo tanto, la API siempre se usa cuando dos sistemas independientes interactúan entre sí, ya sea localmente, dentro del sistema o en la red.
¿Qué es el cliente REST?
REST Client es una herramienta que llama a las API. Se utiliza en las pruebas de backend cuando no hay una interfaz de usuario para llamar a las API. Algunos clientes REST populares son el cliente HTTP Apache, POSTMAN, SOAP UI, Swagger y muchos más.
Aquí, en este artículo, solo discutiremos el cliente HTTP Apache y cubriremos otros clientes HTTP diferentes en nuestros artículos futuros.
Configuración del cliente Http en Eclipse
#1) Abra Eclipse y cree un nuevo proyecto Maven.
#2) Elimine los paquetes ficticios proporcionados por MAVEN, es decir, 'Src / main / java' y 'Src / test / java'
#3) Vaya al archivo pom.xml y elimine la dependencia JUnit ya que no la necesitamos.
#4) Luego, requerimos la biblioteca HTTP Client, la biblioteca HTTP Core, la biblioteca JSON Parser, la biblioteca TestNG, la biblioteca Jackson-data bind
#5) Agregue las dependencias anteriores (biblioteca) en el archivo pom.xml.
Biblioteca de cliente HTTP:
Biblioteca HTTP Core:
Biblioteca JSON Parser:
Biblioteca TestNG:
#6) Descargue las versiones más recientes y estables. No agregaremos el tarro de selenio en nuestro proyecto, ya que estamos haciendo pruebas de backend completas. El archivo final pom.xml se ve como se muestra en la siguiente imagen:
#7) A continuación, cree un marco para su prueba de API
a) Cree un paquete 'com.qa.config' -> Cree un archivo 'config.properties' y almacene todas las URL.
b) Cree otro paquete 'qa.com.base' -> Cree una clase 'testBase.java' que será una clase principal para todas las clases. Contiene funciones comunes para ser utilizadas por todos los métodos.
c) Cree otro paquete 'com.qa.client' y la clase 'restClient.java'. Contiene código para obtener llamadas GET, POST, DELETE, PUT.
D) Cree otro paquete 'com.qa.data' y la clase 'user.java' que defina diferentes propiedades de usuario.
es) Finalmente, cree un paquete 'com.qa.Test' en 'src / test / java' y declare un método y funciones principales para probar todos los métodos GET, PUT, POST y Delete.
f) La estructura del marco final se verá como se muestra a continuación:
gramo) Utilice la API ficticia proporcionada por este sitio REQ RES .
Métodos HTTP u operaciones CRUD
Veamos diferentes métodos HTTP u operaciones CRUD que automatizamos.
Las operaciones enumeradas a continuación se denominan operaciones CRUD:
- C : Crear (significa llamada POST)
- R : Recuperar (significa llamada GET)
- U : Actualización (significa llamada PUT)
- D : Eliminar (significa Eliminar llamada)
Parámetros en servicios web REST
Valide o enfatice los siguientes parámetros en los servicios web REST:
(i) URI: URI es la combinación del parámetro URL + Ruta y el parámetro de consulta.
Ejemplo: http://api.com/service/account/1
Aquí, api.com es la URL del servidor S2, Servicio es el titular. En este servicio, el titular acude al cuenta class, y desde esta clase de cuenta, llama al método account = 1. En todas y cada una de las llamadas pasamos el URI.
(ii) Carga útil: Datos JSON / XML que alimentamos al sistema.
(iii) Código de estado: Para todas y cada una de las respuestas, obtenemos los códigos de estado.
Aquí, algunos códigos se enumeran a continuación:
- 200: Ok, todo está funcionando bien.
- 201: Creado con éxito, siempre que esté haciendo una llamada POST o creando una nueva entidad.
- 400: La carga útil es incorrecta, la URL final es incorrecta, muestra una solicitud incorrecta.
- 404: Actualice o elimine una entidad y esa entidad no está disponible, luego obtenemos el resultado como una solicitud no encontrada.
- 500: Supongamos que el servidor S2 está inactivo, obtenemos un error interno del servidor.
- 401: Error de autenticación
Hacer clic Aquí para obtener todos los códigos de estado.
(iv) Encabezados: Como token de autenticación, identificación de usuario / contraseña, tipo de contenido, etc.
fases del ciclo de vida del desarrollo del sistema con ejemplos
Operaciones CRUD con el cliente HTTP Apache
# 1) OBTENER LLAMADA
¿Cómo se comporta la operación GET Call?
Get Call envía la solicitud y recibe la respuesta. No pasamos ningún JSON o la carga útil aquí, pasamos un URI, en el cual URL (parámetro de ruta de punto final, parámetro de consulta) junto con el encabezado, si está disponible.
marco impulsado por datos en el ejemplo de selenium webdriver
Antes de escribir el código de llamada GET, tenga en cuenta lo siguiente:
- Necesita un método GET
- Entonces necesito una URL
- Una vez que presione el botón enviar, obtendrá la respuesta. Luego guarde la respuesta.
- Necesita código de estado, encabezados.
Consulte la siguiente captura de pantalla del cliente POSTMAN que muestra la respuesta a la llamada GET:
En la clase restClient.java,
(I) Cree el método GET que llamará a la URL y obtendrá la respuesta en forma de objeto JSON sin encabezado.
|_+_|(ii) Cree la clase principal 'getAPITest.java' en 'src / test / java'
Producción
# 2) POST LLAMADA
POST Call crea una cuenta o crea una nueva entidad.
Ejemplo - Pase estos detalles como nombre, trabajo y encabezado a la carga útil JSON. El servidor S2 estará vinculado a alguna base de datos, por ejemplo, Oracle y tiene un nombre de tabla llamado Tabla de cuentas. El método POST creará una entrada en la base de datos y el servidor S2 pasa la información al cliente S1. Recuerde que la operación de llamada POST siempre se usa para crear una nueva entidad.
En el método POST, tenemos que pasar la URL y la carga útil.
Descargue esta dependencia ya que necesitamos convertir la clase Java en un objeto Java que en un objeto JSON.
En la clase restClient.java,
(I) Cree el método POST, que llamará a la URL y publicará la respuesta.
|_+_|(ii) Cree la clase principal 'postAPI_Test.java' en 'src / test / java'.
|_+_| Producción:
# 3) PUT Call
Con la operación de llamada PUT, puede crear una nueva entidad y actualizar una entidad existente.
En la clase restClient.java,
(I) Cree el método PUT, que llamará a la URL y actualizará la respuesta.
|_+_|(ii) Cree la clase principal 'putAPI_Test.java' en 'src / test / java'
|_+_|Producción
# 4) Eliminar llamada
La operación de eliminación de llamadas es simple, es decir, elimine el ID de cuenta-100 y pase la información en un archivo JSON.
En la clase restClient.java,
(I) Cree el método de eliminación, que llamará a la URL y eliminará el registro.
|_+_|(ii) Cree la clase principal 'deleteAPI_Test.java' en 'src / test / java'.
|_+_| Producción
Antes de validar cualquier respuesta, obtenga la URL correcta del desarrollador, luego verifique si está obteniendo la respuesta esperada del servidor, prepare casos de prueba para todos y cada uno de los escenarios y organice los casos de prueba en secuencia w.r.t funcionalidad.
Conclusión
En este artículo, hemos cubierto cómo usar Apache HTTP Client para automatizar llamadas POST, PUT, GET y Delete en detalle con ejemplos de código. También hemos discutido los tipos de servicios web y la importancia de los archivos JSON / XML y por qué se utilizan.
PREV Tutorial | PRIMER Tutorial
Lectura recomendada
- Tutorial de servicios web: componentes, arquitectura, tipos y ejemplos
- Más de 15 tutoriales de SoapUI: la mejor herramienta de prueba de API de servicios web
- Preguntas y respuestas de la entrevista de Amazon Web Services (AWS)
- Las 20 preguntas y respuestas principales de la entrevista de servicios web RESTful
- Las 25 preguntas y respuestas principales de la entrevista de Java Web Services
- Las 45 preguntas y respuestas principales de la entrevista de servicios web (RESTful, SOAP, preguntas de seguridad)
- Pruebas de rendimiento de servicios web mediante secuencias de comandos LoadRunner VuGen
- Tutorial de pruebas de API: una guía completa para principiantes