TL;DR
- Postman es la herramienta de testing de APIs más popular con 30M+ desarrolladores
- Organiza requests en Colecciones con carpetas para endpoints relacionados
- Usa Entornos para cambiar entre dev/staging/production sin modificar requests
- Escribe tests en JavaScript usando
pm.test()— se ejecutan después de cada request- Newman CLI ejecuta colecciones en pipelines CI/CD
Ideal para: QA engineers aprendiendo testing de APIs, desarrolladores testeando sus APIs Omite si: Prefieres herramientas code-only (REST Assured, requests) o necesitas scripting complejo Postman es la plataforma de APIs más utilizada en el mundo, con más de 30 millones de desarrolladores y QA engineers que confían en ella. Según el informe SmartBear State of Testing 2025, el testing de APIs ha sido adoptado por el 72% de los equipos de desarrollo, lo que convierte las habilidades de testing de APIs en unas de las más demandadas de la industria. Postman simplifica este proceso reuniendo la creación de requests, la gestión de entornos, la escritura de scripts de prueba y la automatización de CI/CD en una sola aplicación GUI. Organizas los requests relacionados en Colecciones, almacenas variables específicas por entorno para que el mismo request funcione en dev, staging y production sin editar URLs a mano, y escribes assertions en JavaScript que validan status codes, bodies y headers automáticamente tras cada llamada. Cuando necesitas ejecución headless en un pipeline, Newman — el compañero CLI de Postman — ejecuta cualquier colección exportada directamente desde la terminal. La documentación oficial en learning.postman.com/docs cubre la API completa en profundidad. Este tutorial recorre todas las capas: desde tu primer request GET hasta el testing data-driven y la integración con CI/CD usando reportes de Newman.
Primeros Pasos
Instalación
Descarga desde postman.com/downloads. Disponible para Windows, macOS, Linux y como app web. Los requisitos del sistema y la configuración de proxy están documentados en la documentación oficial de instalación de Postman.
Tu Primer Request
- Click en New → HTTP Request
- Ingresa URL:
https://jsonplaceholder.typicode.com/posts/1 - Click en Send
- Ve el response con status, tiempo y body
{
"userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et suscipit..."
}
Métodos HTTP
| Método | Caso de Uso | Ejemplo |
|---|---|---|
| GET | Obtener datos | Obtener perfil de usuario |
| POST | Crear recurso | Crear nuevo usuario |
| PUT | Reemplazar recurso | Actualizar usuario completo |
| PATCH | Actualización parcial | Actualizar solo email |
| DELETE | Eliminar recurso | Eliminar usuario |
“El error más común que veo en los equipos con Postman es tratarlo como herramienta de testing manual de uso único. Una vez que te comprometes a estructurar bien tus Colecciones y conectarlas a Newman para CI/CD, tu suite de tests de API se convierte en un miembro de primera clase del pipeline — atrapando regresiones antes de que lleguen a staging.” — Yuri Kan, Senior QA Lead
Colecciones: Organizando Requests
Las colecciones agrupan requests relacionados. Piensa en ellas como carpetas para tus tests de API.
Creando una Colección
- Click en Collections en sidebar
- Click en + para crear nueva colección
- Nómbrala “User API Tests”
- Click derecho → Add Request
Estructura de Colección
User API Tests/
├── Authentication/
│ ├── Login
│ ├── Refresh Token
│ └── Logout
├── Users/
│ ├── Get All Users
│ ├── Get User by ID
│ ├── Create User
│ ├── Update User
│ └── Delete User
└── Posts/
├── Get User Posts
└── Create Post
Entornos: Gestionando Variables
Los entornos almacenan variables que cambian entre contextos (dev, staging, production).
Creando Entorno
- Click en Environments en sidebar
- Click en + para crear nuevo
- Nómbralo “Development”
- Agrega variables:
| Variable | Initial Value | Current Value |
|---|---|---|
| base_url | https://api.dev.example.com | https://api.dev.example.com |
| api_key | dev_key_123 | dev_key_123 |
Usando Variables
Referencia variables con dobles llaves:
GET {{base_url}}/users
Authorization: Bearer {{access_token}}
Ámbitos de Variables
| Ámbito | Visibilidad | Caso de Uso |
|---|---|---|
| Global | Todas las colecciones | Compartido en todo |
| Environment | Entorno activo | URL, credentials por env |
| Collection | Una colección | Datos específicos de colección |
| Local | Un request | Valores temporales |
Estableciendo Variables en Scripts
// Pre-request Script (se ejecuta antes del request)
pm.environment.set("timestamp", Date.now());
pm.environment.set("random_email", `user_${Date.now()}@test.com`);
// Tests tab (se ejecuta después del response)
const response = pm.response.json();
pm.environment.set("user_id", response.id);
pm.collectionVariables.set("last_created_user", response.id);
Escribiendo Tests
Los tests se ejecutan después de cada request. Usa JavaScript con la API pm de Postman. La referencia completa del objeto pm está documentada en la documentación oficial de scripting de Postman.
Assertions Básicos
// Status code
pm.test("Status code is 200", function() {
pm.response.to.have.status(200);
});
// Tiempo de response
pm.test("Response time is less than 500ms", function() {
pm.expect(pm.response.responseTime).to.be.below(500);
});
// JSON body
pm.test("Response has correct user ID", function() {
const response = pm.response.json();
pm.expect(response.id).to.eql(1);
pm.expect(response.name).to.be.a('string');
});
// Headers
pm.test("Content-Type is JSON", function() {
pm.response.to.have.header("Content-Type", "application/json; charset=utf-8");
});
Patrones Comunes de Tests
// Verificar longitud de array
pm.test("Returns 10 users", function() {
const users = pm.response.json();
pm.expect(users).to.be.an('array');
pm.expect(users.length).to.eql(10);
});
// Verificar estructura de objeto
pm.test("User has required fields", function() {
const user = pm.response.json();
pm.expect(user).to.have.property('id');
pm.expect(user).to.have.property('email');
pm.expect(user).to.have.property('name');
});
// Verificar propiedades anidadas
pm.test("Address has city", function() {
const user = pm.response.json();
pm.expect(user.address.city).to.be.a('string');
});
// Validación de response de error
pm.test("Error response has message", function() {
if (pm.response.code === 400) {
const error = pm.response.json();
pm.expect(error).to.have.property('message');
}
});
Validación de JSON Schema
const schema = {
"type": "object",
"required": ["id", "email", "name"],
"properties": {
"id": { "type": "integer" },
"email": { "type": "string", "format": "email" },
"name": { "type": "string", "minLength": 1 }
}
};
pm.test("Response matches schema", function() {
pm.response.to.have.jsonSchema(schema);
});
Autenticación
Bearer Token
Authorization: Bearer {{access_token}}
O en pestaña Authorization:
- Selecciona Bearer Token
- Ingresa
{{access_token}}
Refresh Automático de Token
// En pestaña Tests del request Login
pm.test("Login successful", function() {
pm.response.to.have.status(200);
const response = pm.response.json();
pm.environment.set("access_token", response.access_token);
pm.environment.set("refresh_token", response.refresh_token);
// Establecer tiempo de expiración
const expiresIn = response.expires_in * 1000;
pm.environment.set("token_expiry", Date.now() + expiresIn);
});
Testing Data-Driven
Ejecuta el mismo request con diferentes datos usando archivos CSV o JSON.
Archivo CSV (users.csv)
email,name,age
john@test.com,John Doe,30
jane@test.com,Jane Smith,25
bob@test.com,Bob Wilson,35
Usando Datos en Request
// Body del request
{
"email": "{{email}}",
"name": "{{name}}",
"age": {{age}}
}
Ejecutando con Datos
- Click en Run en la colección
- Selecciona Data → Elige archivo CSV
- Establece iteraciones
- Click en Run
Newman: CLI Runner
Newman ejecuta colecciones Postman desde línea de comandos — esencial para CI/CD. La documentación completa del CLI de Newman con todas las opciones de reportes está disponible en npmjs.com/package/newman.
Instalación
npm install -g newman
Uso Básico
# Ejecutar colección
newman run collection.json
# Con entorno
newman run collection.json -e environment.json
# Con iteraciones
newman run collection.json -n 5
# Con archivo de datos
newman run collection.json -d users.csv
Integración CI/CD
# .github/workflows/api-tests.yml
name: API Tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install Newman
run: npm install -g newman newman-reporter-htmlextra
- name: Run API Tests
run: |
newman run postman/collection.json \
-e postman/staging.json \
-r cli,htmlextra \
--reporter-htmlextra-export reports/api-report.html
- name: Upload Report
if: always()
uses: actions/upload-artifact@v4
with:
name: api-test-report
path: reports/
IA en Postman Testing
Las herramientas de IA pueden acelerar tu workflow en Postman.
Lo que la IA hace bien:
- Generar scripts de prueba desde documentación de API
- Crear JSON schemas desde ejemplos de responses
- Escribir scripts de transformación de datos
- Explicar errores de API
- Convertir comandos cURL a requests Postman
Lo que aún necesita humanos:
- Diseñar estrategia y cobertura de tests
- Decidir qué edge cases testear
- Entender validación de lógica de negocio
- Depurar fallos intermitentes
Prompt útil:
Tengo este response de API:
{
"user": {
"id": 123,
"email": "test@example.com",
"profile": {
"name": "John",
"age": 30
}
},
"token": "eyJ..."
}
Escribe tests de Postman que:
1. Validen status 200
2. Verifiquen que user tiene id, email y profile
3. Verifiquen que profile tiene name y age
4. Guarden token en variable de entorno
5. Validen tiempo de response menor a 500ms
FAQ
¿Es Postman gratis para testing de APIs?
Sí. El plan gratuito de Postman incluye requests ilimitados, colecciones, entornos y scripts de prueba. Puedes ejecutar colecciones manualmente y usar Newman para CI/CD. Los planes pagos agregan workspaces de equipo, monitoreo, mock servers y funciones avanzadas.
¿Cómo escribo tests en Postman?
Usa la pestaña Tests en cualquier request. Escribe JavaScript usando la API pm de Postman:
pm.test("Status is 200", function() {
pm.response.to.have.status(200);
});
pm.test("Has user ID", function() {
const data = pm.response.json();
pm.expect(data.id).to.exist;
});
Los tests se ejecutan automáticamente después de cada request y muestran pass/fail en resultados.
¿Qué es Newman en Postman?
Newman es el runner de colecciones por línea de comandos de Postman. Instala con npm install -g newman, luego ejecuta newman run collection.json. Esencial para integración CI/CD — funciona en entornos headless, genera reportes y retorna exit codes para status del pipeline.
¿Puede Postman testear APIs GraphQL?
Sí. Postman tiene soporte dedicado para GraphQL:
- Editor de queries con syntax highlighting
- Introspección de schema para autocomplete
- Soporte de variables para queries dinámicos
- Mismas capacidades de scripting que REST
Selecciona GraphQL como tipo de body y escribe tu query.
¿Cómo ejecutar tests de Postman en CI/CD?
Usa Newman, el runner CLI de Postman. Instala con npm install -g newman, luego ejecuta newman run collection.json -e environment.json. Agrega Newman como step en GitHub Actions, Jenkins o cualquier herramienta CI. Newman retorna exit codes no-zero en fallos de tests, así que tu pipeline falla automáticamente cuando los tests de API fallan.
¿Cuál es la diferencia entre Postman y Newman?
Postman es la aplicación GUI de escritorio para diseñar requests, escribir tests y explorar APIs interactivamente. Newman es el compañero de línea de comandos que ejecuta esas mismas colecciones sin GUI. Diseñas tests en Postman, exportas la colección como JSON y la ejecutas con Newman en pipelines CI/CD, contenedores Docker o jobs programados.
Ver También
- API Testing Mastery - Guía completa de estrategias de testing de APIs
- Postman Automation Guide - Automatización avanzada con Newman y CI/CD
- REST Assured Tutorial - Testing de APIs code-first con Java
- Postman Alternatives - Bruno, Insomnia y otras opciones
- Tutorial de API Testing - Guía completa de testing de API
- API Testing Arquitectura - Testing de API en microservicios
- Tutorial de Automatización de Tests - Fundamentos de automatización
- Cypress Tutorial - E2E testing para aplicaciones web
- k6 Load Testing - Load testing basado en JavaScript
- JMeter Tutorial - Load testing tradicional
