¿Qué es una API?
Una interfaz de programación de aplicaciones (API por sus siglas en inglés) es definida por la Universidad de Oxford como “un conjunto de funciones y procedimientos que permiten el acceso a las funcionalidades o los datos de un sistema operativo u otros servicios.”
Una explicación más simple: imaginémonos que estamos en un restaurante, donde interactuamos con el mesero. Él tomará nuestra orden, responderá nuestras preguntas y nos traerá la comida a la mesa cuando esté lista. El mesero está a cargo de todos los procedimientos complicados que suceden detrás de escena; nosotros no nos preocupamos por la cocina, los platos, las bebidas y demás. De cierta manera, el mesero funciona como la API del restaurante.
Las APIs permiten que distintos programas trabajen juntos en varias formas. Se utilizan para acceder a los datos para que así múltiples aplicaciones o servicios puedan funcionar juntos.
Tipos de API
Existen distintos tipos de API. Los siguientes están clasificados de acuerdo a su política:
- Interno/Privado - este tipo de API está disponible solamente para sistemas interno
- Socios - de acceso restringido, disponible solamente para socios de negocio
- Público - diseñados principalmente para clientes/terceros
Estilos de API
Existen diferentes tipos de protocolos, arquitecturas y estilos para las APIs. La siguiente es una lista breve:
- Transferencia de estado representacional (REST por sus siglas en inglés) - esta arquitectura popular se basa en un protocolo de identificador de recursos uniforme (URI por sus siglas en inglés) HTTP. Utiliza distintos formatos de datos, incluyendo formato de texto plano, HTML, XML y JSON.
- Llamada a procedimiento remoto (RPC por sus siglas en inglés) - el tipo más viejo de API; existen dos tipos de RPC: XML y JSON.
- Protocolo Simple de Acceso a Objetos (SOAP por sus siglas en inglés) - este protocolo usa XML como formato para transferir datos. Además, utiliza el Lenguaje de Descripción de los Servicios Web (WSDL por sus siglas en inglés).
- GraphQL (Lenguaje de Consulta Graph) - un lenguaje de consulta para APIs que permite la descripción declarativa de sus requerimientos de datos con un formato similar al JSON.
Pruebas API, ¿Por Qué son Importantes?
Ya que las pruebas API brindan acceso a la aplicación sin la necesidad de utilizar la interface, éstas proveen una evaluación más rápida y eficiente de una versión en el ciclo de pruebas. Exponen cualquier error y si algo está mal en la capa de negocio, ayudan a identificar problemas pequeños antes de que se conviertan en problemas grandes.
Herramientas
Antes de utilizar una herramienta para pruebas API, es clave considerar sus ventajas y desventajas de antemano para ser si se acopla a nuestras necesidades particulares. La siguiente es una lista de herramientas recomendadas:
- Katalon (SOAP y REST)
- SoapUI (SOAP y REST)
- Postman (REST)
- JMeter (SOAP y REST)
- REST-assured (Java - REST)
- RestSharp (C# - REST)
- Karate DSL (Java - SOAP y REST)
Tipos de Pruebas API
Las pruebas API cubren lo siguiente:
- Pruebas de Unidad - evalúan un solo ‘endpoint’ con una sola solicitud y buscan una respuesta o un conjunto de respuestas
- Pruebas de Funcionalidad - revisa si la API funciona y hace exactamente lo que debe de hacer
- Pruebas de Carga - verifica si la API puede manejar un número usual y/o más alto de solicitudes
- Pruebas de Confiabilidad - confirman si la API brinda una conexión consistente y resultados consistentes
- Pruebas Negativas - verifica cómo se comportan los datos de salida cuando se brinda una entrada inválida
- Pruebas de Documentación API - revisa si la documentación brinda una guía fácil para el usuario
¿Qué Verifican las Pruebas API?
Las pruebas API verifican lo siguiente:
- Autorización
- Parámetros de entrada
- Estructura de payload
- Estructura de respuesta
- Resultados esperados
- Código de status HTTP
- Manejo de errores
- Tiempo de respuesta
- Otros
¿Qué Tipos de Bugs Detectan las Pruebas API?
Las pruebas API pueden ayudar a identificar varios tipos de bugs; la siguiente es una lista breve:
- Flags que no se utilizan
- Funcionalidades ausentes o duplicadas
- Inhabilidad para manejar los errores
- Problemas de seguridad
- Respuestas de error inadecuadas
- Una estructura incorrecta de datos de respuesta
- Tiempo de respuesta prolongado
Sugerencias
Algunas sugerencias antes de comenzar con las pruebas:
- Debemos familiarizarnos con cada API que vamos a evaluar
- Agrupar los casos de prueba por categoría
- Priorizar los casos de prueba API
- Analizar la combinación de entrada que se utilizará para cada caso de prueba
- Siempre debemos intentar organizar los casos de prueba en orden de CRUD (por sus siglas en inglés): Crear, Leer, Actualizar y Eliminar