API TESTING
INTRO
Servicio web o web service: es una vía que facilita el intercambio entre
datos y aplicaciones, el web services se almacenan en servidores para que
la gente pueda invocarlo con sus funcionalidades, los mensajes que
contiene datos son transportados mediante protocolos como el HTTP
si estamos desarrollando algo podemos usar un servicio web ya disponible
en internet que implemente esta funcionalidad que deseamos
API: Application programing interface
es una interfaz o conjunto de procedimientos que puede ser usado por un
sistema como capa para funcionalidades, también incluye especificaciones
para estructuras de datos y rutinas, clases de objetos o variables a partir
de las cuales funciona la misma
Tipos de API:
- API expuesta por una web: permiten el intercambio de datos entre
un servicio web y una aplicación, esto ocurre mediante peticiones y
respuestas según lo especificado en la web
- API basada en una librería: son las que permiten que una
aplicación importe una biblioteca de otro software para llevar a cabo
el intercambio de información
- API basada en clases: sirven para el desarrollo de aplicaciones, ya
que permiten el intercambio de datos en torno a las clases.
- API de sistema Operativo: permiten que las aplicaciones
interactúen con el sistema operativo. Respecto a las funciones que
proporcionan estas APIs podemos destacar: depuración
ENDPOINTS:
es el extremo de comunicación entre la API y el servidor por el cual el
servidor sirve información que la API necesita para llevar a cabo sus
tareas.
En la práctica: un endpoint es una localización dentro del servidor donde
viven recursos a los cuales la API accede. Sería la dirección en el servidor
que llevar un recurso
Protocolo SOAP(simple object access
protocol)
es un protocolo que se centra en las comunicaciones y peticiones de
servicios entre objetos mediante intercambio de datos XML.
WSDL (Web services Description Language)
Los web services que usan SOAP para comunicarse se conocen como
documentos WSDL
es un lenguaje basado en XML que describe el funcionamiento de un
servicio web,
Características del SOAP:
- Extensibilidad: usar SOAP para trabajar sobre cualquier proceso de
negocio
- Neutralidad: un servicio web puede usar SOAP pero transportarlo
por cualquier protocolo de transporte como FTP o HTTP
- Independencia: su funcionamiento es independiente del lenguaje de
programación en el cual fue implementado el servicio
ventajas: pueden ser implementados en cualquier lenguaje, mensajes
pueden ser transmitidos por cualquier protocolo de transporte, es
posible la invocación de procedimientos remotos de diferentes
lenguajes debido a que usan XML
desventajas: el hecho de que use XML lo hace un protocolo más lento
a la hora de codificar texto, su uso está limitado a lo descrito en su
WSDL
REST(Representational State Transfer)
el estado de transferencia representacional: es un conjunto de principios
que definen un estilo de arquitectura de sistemas donde la comunicación
entre sistema se hace atreves de HTTP, Rest permite el uso de diferentes
formatos para intercambio de información como XML o JSON
Principios de REST:
- Arquitectura cliente-servidor sin estado: asegurarse que cada
petición HTTP contenga todo lo necesario para su procesamiento,
esto implica que ni el cliente ni el servidor mantengan el estado de
las comunicaciones
- Operaciones bien definidas: que los recursos sean accedidos y
modificados mediante un conjunto de operaciones, http provee
operaciones donde las más utilizadas son POST(crear), Get(leer),
PUT(actualizar) y DELETE(borrar)
- Sintaxis universal: cada recurso es accesible e identificable
únicamente a través de su URI(identificador de recursos uniforme)
- usa diferentes formatos para describir recursos: ofrece diferentes
formatos para los recursos para diferentes necesidades, de forma
que el cliente sepa manejar los datos recibidos
los servicios web se basan en estos principios para su arquitectura, se
conocen como RESTfull y en consecuencia, las APIs expuestas por
estos servicios se conocen como REST APIs.
Ventajas:
- Escalabilidad de la interfaz y portabilidad gracias a la separación
cliente-servidor
- funcionamiento es independiente de plataforma y lenguajes
- Se pueden usar varios formatos para el interbancario de datos como
XML JSON
DESVENTAJAS:
- masiva cantidad de endpoints, uno por recurso puede ser engorroso
trabajar con tantos recursos
- al solicitar un recurso mediante URI se obtiene toda la info del
recurso por lo que puede traer mucha info innecesaria
WADL (Web application description language)
es una documentación XML que sirve para describir
servicios http
si bien podemos decir que son muy parecidas con WSDL para servicios
como SOAP, es importante destacar el uso
Diferencias entre
RESET y SOAP
API Testing:
El API testing es un tipo de pruebas de integración, consiste en realizar
pruebas a nivel de APIs para determinar si estas cumplen con las
expectativas de funcionalidad, confiabilidad, performance, seguridad y
más.
IMPORTANCIA del API TESTING:
al probar APIS se pueden detectar fallas tanto en la API misma como en el
servidor o en otros servicios
no realizar estas pruebas pueden ser muy costoso, ya que no se previenen
errores que pueden llegar a etapas avanzadas del desarrollo y expuestos
por el cliente
Beneficios del API Testing:
- se detectan errores funcionales antes que lleguen la GUI
- se previenen vulnerabilidades entre la comunicación cliente-servidor
- sirve para prevenir incidentes que pueden no llegar a reproducirse a
nivel GUI, como por ejemplo, exposición de datos no deseados
Pruebas sobre APIs
Acá usaremos solo pruebas funcionales, pero existen pruebas de carga,
seguridad, pruebas automatizadas
¿Como probar APIs?
Es necesario un software para eso para realizar las llamadas y ver las
respuestas por parte del servidor, implementar framework por nuestra
cuenta, con librerías que nos permiten interactuar con APIs
¿Que es importante probar en una API?
- Asegurarnos que los métodos hagan lo que tienen que hacer
- asegurarnos que la API es robusta ante mal uso
- Asegurarnos que la API funciona en distintos dispositivos y sistemas
operativos
- verificar que la respuesta sea la esperada frente a distintas entradas
de datos
- Verificar que la estructura dé las respuestas sea la esperada(que
sigan un esquema específico)
- Validar casos de errores están manejados y no se expone
información interna de la API
- validar que las peticiones se realiza lo esperado y que no sucedan
eventos secundarios
- Validar que se pueda acceder a ciertos recursos con los permisos
necesarios y no de otra manera
Basándonos en esto podemos empezar la creación de casos de
prueba
Elaboración de casos de prueba:
Hay varios aspectos que son importantes al realizar la estrategia de
pruebas funcionales
- cuáles son los casos de uso más críticos?
- ¿Qué escenarios positivos puedo identificar que escenarios
negativos?
- ¿Aporta valor incluirlo en las pruebas?
- Encontrar escenarios negativos que sean realizables con entradas
válidas
- encontrar escenarios negativos que sean realizable con entradas
inválidas
- Cuando se hayan determinado los escenarios deseados, definir cuál
es el resultado esperado para cada escenario