Pruebas Automatizadas de APIs REST con Postman y Newman
Este tutorial completo te enseña paso a paso cómo estructurar colecciones de pruebas en Postman, escribir scripts de aserciones en JavaScript y automatizar la ejecución mediante Newman para integrarlo con pipelines de CI/CD.
🚀 Introducción a las Pruebas Automatizadas de APIs REST
En el desarrollo web moderno, garantizar que nuestros servicios backend funcionen correctamente ante cualquier cambio es una necesidad crítica. Las pruebas automatizadas de APIs REST permiten verificar de manera rápida y repetible que los endpoints devuelven los códigos de estado adecuados, las estructuras de datos correctas y los tiempos de respuesta esperados.
Tradicionalmente, muchos desarrolladores prueban sus APIs manualmente utilizando herramientas como cURL o la interfaz gráfica de Postman. Sin embargo, a medida que un proyecto crece, la verificación manual se vuelve insostenible. Aquí es donde entran en juego Postman (para el diseño y pruebas interactivas) y Newman (para la ejecución por línea de comandos y automatización).
🛠️ Herramientas Necesarias
Para seguir este tutorial de principio a fin, asegúrate de tener instalado en tu sistema:
- Node.js (versión 16 o superior)
- Postman (aplicación de escritorio o cliente web)
- Newman (se instalará globalmente mediante npm)
Instalación de Newman
Newman es el ejecutor oficial de colecciones de Postman para la línea de comandos. Para instalarlo, abre tu terminal y ejecuta el siguiente comando:
npm install -g newman
Una vez finalizada la instalación, puedes verificar que todo funciona correctamente consultando su versión:
newman --version
Nivel: Intermedio Duración estimada: 45 minutos
📋 Diseño de la Colección en Postman
Una colección en Postman es un grupo de solicitudes HTTP organizadas lógicamente. Para este tutorial, simularemos una API de gestión de usuarios.
Estructura de la Colección
Crearemos una colección llamada Gestión de Usuarios API con los siguientes endpoints:
POST /api/users- Crear un nuevo usuario.GET /api/users/{id}- Obtener los detalles de un usuario.DELETE /api/users/{id}- Eliminar un usuario.
Configuración de Variables de Entorno
Para evitar hardcodear URLs y tokens, utilizaremos variables de entorno en Postman. Crea un entorno llamado Desarrollo con las siguientes variables:
| Variable | Valor Inicial | Valor Actual |
|---|---|---|
base_url | https://api.example.com | http://localhost:3000 |
user_id | (vacío) | (vacío) |
✍️ Escribiendo Scripts de Pruebas (Tests)
Postman permite ejecutar código JavaScript después de recibir la respuesta de una petición. Esto se hace en la pestaña Tests de cada solicitud.
1. Prueba de Código de Estado y Estructura JSON
Para la petición POST /api/users, añadiremos un script que verifique que el servidor responde con un código 201 Created y que el cuerpo de la respuesta contiene un ID de usuario válido.
pm.test("El código de estado es 201", function () {
pm.response.to.have.status(201);
});
pm.test("La respuesta contiene un ID de usuario", function () {
var jsonData = pm.response.json();
pm.expect(jsonData).to.have.property('id');
// Guardamos el ID en una variable de entorno para usarlo en siguientes peticiones
pm.environment.set("user_id", jsonData.id);
});
pm.test("El tiempo de respuesta es menor a 500ms", function () {
pm.expect(pm.response.responseTime).to.be.below(500);
});
pm.environment.set permite encadenar peticiones de forma dinámica, pasando datos generados en una respuesta hacia las variables que consumirán las siguientes solicitudes.
2. Prueba para la Petición GET
A continuación, en la petición GET /api/users/{{user_id}}, validaremos que los datos del usuario recuperado coincidan con los esperados.
pm.test("El código de estado es 200", function () {
pm.response.to.have.status(200);
});
pm.test("El nombre del usuario coincide", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.name).to.eql("Juan Pérez");
});
⚡ Ejecución Automatizada con Newman
Una vez que hemos diseñado y probado nuestra colección de manera interactiva en Postman, el siguiente paso es exportarla para ejecutarla sin interfaz gráfica.
Exportar la Colección y el Entorno
- En Postman, haz clic derecho sobre la colección
Gestión de Usuarios API. - Selecciona Export y guarda el archivo JSON (por ejemplo,
usuarios_collection.json). - Exporta también tu archivo de entorno
Desarrollocomodev_environment.json.
Ejecutar desde la Terminal
Abre tu terminal en el directorio donde guardaste los archivos y ejecuta el siguiente comando con Newman:
newman run usuarios_collection.json -e dev_environment.json
Verás una salida en formato de consola detallando cada prueba ejecutada, el estado de las aserciones y un resumen final con los resultados.
newman-reporter-htmlextra.
🔄 Integración Continua (CI/CD)
El verdadero poder de Newman se desata cuando se integra en un pipeline de integración continua, como GitHub Actions, GitLab CI o Jenkins.
Ejemplo de GitHub Actions
Crea un archivo en tu repositorio .github/workflows/api-tests.yml con el siguiente contenido para ejecutar las pruebas automáticamente en cada push:
name: Ejecutar Pruebas de API
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout del repositorio
uses: actions/checkout@v3
- name: Configurar Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Instalar Newman
run: npm install -g newman
- name: Ejecutar Pruebas con Newman
run: newman run usuarios_collection.json -e dev_environment.json
❓ Preguntas Frecuentes (FAQ)
¿Puedo ejecutar pruebas de Newman contra un servidor local?
Sí, siempre y cuando la máquina que ejecuta Newman tenga accesibilidad de red al servidor local (por ejemplo, utilizandohttp://localhost:3000 o la IP de la red local).
¿Cómo manejo tokens de autenticación dinámicos en las pruebas?
Puedes agregar una petición inicial de login en tu colección cuyo script de pruebas guarde el token JWT en una variable de entorno mediantepm.environment.set("token", response.token).
¿Es Newman gratuito?
Sí, Newman es una herramienta de código abierto desarrollada por Postman y distribuida bajo licencia Apache 2.0.🎯 Conclusión
Las pruebas automatizadas de APIs REST son un pilar fundamental para asegurar la calidad del software en equipos de desarrollo ágiles. Combinando la versatilidad de Postman para la creación visual de pruebas y la potencia de Newman para la ejecución en consola e integración continua, dispondrás de un sistema robusto y confiable para proteger tus endpoints ante cualquier cambio futuro. ¡Es momento de aplicarlo en tus propios proyectos!
Tutoriales relacionados
- Diseñando APIs REST con Pagilación y Filtros Avanzados: Estrategias para Conjuntos de Datos Grandesintermediate18 min
- API Gateway: La Capa Esencial para tus Microservicios y APIs RESTintermediate15 min
- Diseñando APIs REST con Hypermedia (HATEOAS): El Arte de la Descubribilidadadvanced20 min
- Estrategias Avanzadas de Caching para APIs REST: Optimizando la Entrega de Datosadvanced18 min
- Asegurando APIs REST: Estrategias de Autenticación y Autorización Eficacesintermediate15 min
Comentarios (0)
Aún no hay comentarios. ¡Sé el primero!