tutoriales.com

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.

Intermedio6 min de lectura5 views
Reportar error

🚀 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).

💡 Consejo: Automatizar tus pruebas desde el inicio del desarrollo te ahorrará horas de depuración y evitará que regresiones rompan la producció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:

  1. POST /api/users - Crear un nuevo usuario.
  2. GET /api/users/{id} - Obtener los detalles de un usuario.
  3. DELETE /api/users/{id} - Eliminar un usuario.
Secuencia de Llamadas a la API 1. PETICIÓN POST Crear recurso y capturar ID ID recibido 2. PETICIÓN GET Verificar la creación del recurso Validación OK 3. PETICIÓN DELETE Limpiar estado y eliminar datos Ciclo de vida completo del recurso

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:

VariableValor InicialValor Actual
base_urlhttps://api.example.comhttp://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);
});
🔥 Importante: El uso de 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

  1. En Postman, haz clic derecho sobre la colección Gestión de Usuarios API.
  2. Selecciona Export y guarda el archivo JSON (por ejemplo, usuarios_collection.json).
  3. Exporta también tu archivo de entorno Desarrollo como dev_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.

📌 Nota: Newman también permite generar reportes detallados en HTML utilizando complementos adicionales como 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
1. Commit GitHub Repository 2. Disparo CI GitHub Actions 3. Preparación Instalación Newman 4. Ejecución Newman Tests Servidor QA Validación API 5. Resultado Éxito o Fallo

❓ 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, utilizando http://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 mediante pm.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

Comentarios (0)

Aún no hay comentarios. ¡Sé el primero!