Comenzando con Postman

Postman es la herramienta mas popular para testing de API, utilizada por mas de 30 millones de desarrolladores y testers en todo el mundo. Proporciona una interfaz visual para enviar requests HTTP, inspeccionar responses y escribir aserciones de test automatizadas — todo sin escribir codigo.

Instalacion

Descarga Postman desde postman.com/downloads. Esta disponible para Windows, macOS y Linux. Aunque existe una version web, la app de escritorio ofrece mejor rendimiento y funcionalidades adicionales como proxies locales y gestion de certificados.

Despues de la instalacion, crea una cuenta gratuita. Aunque Postman puede usarse sin cuenta, iniciar sesion habilita la sincronizacion en la nube de tus colecciones entre dispositivos.

La Interfaz de Postman

El workspace principal consiste en:

  • Barra lateral — colecciones, environments, historial
  • Constructor de requests — barra de URL, selector de metodo, tabs para params/headers/body/tests
  • Visor de response — body, headers, status code, tiempo de respuesta, tamano
  • Consola — logs de scripts y detalles de requests (View > Show Postman Console)

Tu Primer Request

Enviemos un simple GET request:

  1. Haz clic en + para abrir un nuevo tab de request
  2. Selecciona GET del dropdown de metodo
  3. Ingresa https://jsonplaceholder.typicode.com/posts/1
  4. Haz clic en Send

Deberias ver una respuesta JSON con status 200 OK, conteniendo campos userId, id, title y body.

Ahora prueba un POST request:

  1. Cambia el metodo a POST
  2. URL: https://jsonplaceholder.typicode.com/posts
  3. Ve al tab Body > selecciona raw > elige JSON
  4. Ingresa:
{
  "title": "Mi Primer Post",
  "body": "Testeando con Postman",
  "userId": 1
}
  1. Haz clic en Send — deberias obtener 201 Created

Colecciones: Organizando Tus Tests

Las colecciones son carpetas que agrupan requests de API relacionados. Piensa en ellas como suites de tests.

Creando una Coleccion

  1. Haz clic en Collections en la barra lateral
  2. Haz clic en + para crear una nueva coleccion
  3. Nombrala “JSONPlaceholder API Tests”
  4. Agrega carpetas para diferentes tipos de recursos: Posts, Users, Comments

Agregando Requests a Colecciones

Clic derecho en tu coleccion > Add Request. Nombra cada request de forma descriptiva:

  • GET All Posts
  • GET Single Post
  • POST Create Post
  • PUT Update Post
  • DELETE Remove Post

Mejores Practicas de Estructura de Colecciones

📁 Project API Tests
├── 📁 Authentication
│   ├── POST Login
│   ├── POST Register
│   └── POST Refresh Token
├── 📁 Users
│   ├── GET List Users
│   ├── GET Get User by ID
│   ├── POST Create User
│   ├── PUT Update User
│   └── DELETE Remove User
├── 📁 Orders
│   ├── GET List Orders
│   ├── POST Create Order
│   └── PATCH Update Order Status
└── 📁 Negative Tests
    ├── GET Non-existent Resource
    ├── POST Invalid Payload
    └── DELETE Unauthorized

Variables y Environments

Las variables eliminan valores hardcodeados y hacen tus colecciones reutilizables entre diferentes ambientes (dev, staging, produccion).

Variables de Environment

Crea environments para cada servidor:

Development:

base_url: http://localhost:3000/api
auth_token: dev-token-123
admin_email: admin@dev.example.com

Staging:

base_url: https://staging-api.example.com
auth_token: staging-token-456
admin_email: admin@staging.example.com

Usa variables en requests con dobles llaves:

GET {{base_url}}/users/{{user_id}}
Authorization: Bearer {{auth_token}}

Scopes de Variables

Postman tiene cuatro scopes de variables (mayor a menor prioridad):

  1. Local — establecidas en scripts, existen solo durante la ejecucion
  2. Environment — vinculadas al environment seleccionado
  3. Collection — compartidas entre todos los requests de una coleccion
  4. Global — disponibles en todas las colecciones

Escribiendo Tests en Postman

El tab Tests permite escribir aserciones en JavaScript que se ejecutan despues de recibir una respuesta.

Aserciones Basicas

// Verificar status code
pm.test("Status code es 200", function () {
    pm.response.to.have.status(200);
});

// Verificar tiempo de respuesta
pm.test("Tiempo de respuesta menor a 500ms", function () {
    pm.expect(pm.response.responseTime).to.be.below(500);
});

// Verificar que el body contiene datos esperados
pm.test("Respuesta tiene nombre de usuario correcto", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.name).to.eql("Alice Johnson");
});

// Verificar campos requeridos
pm.test("Respuesta tiene todos los campos requeridos", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData).to.have.property("id");
    pm.expect(jsonData).to.have.property("name");
    pm.expect(jsonData).to.have.property("email");
});

// Verificar longitud de array
pm.test("Retorna al menos 10 posts", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.length).to.be.at.least(10);
});

Encadenando Requests con Variables

Extrae valores de responses y usalos en requests subsecuentes:

// En POST Create User (tab Tests):
pm.test("Guardar ID de usuario creado", function () {
    var jsonData = pm.response.json();
    pm.environment.set("created_user_id", jsonData.id);
});

// En GET Get User (URL):
// {{base_url}}/users/{{created_user_id}}

Pre-Request Scripts

Ejecuta JavaScript antes de enviar un request:

// Generar email unico para cada ejecucion
var timestamp = Date.now();
pm.environment.set("test_email", "user" + timestamp + "@test.com");

// Generar numero aleatorio
pm.environment.set("random_id", Math.floor(Math.random() * 1000));

Ejecutando Colecciones

Collection Runner

Haz clic en Run en una coleccion para ejecutar todos los requests en secuencia:

  1. Selecciona el environment
  2. Establece el conteo de iteraciones (ejecutar la suite multiples veces)
  3. Agrega archivo de datos (CSV/JSON) para testing basado en datos
  4. Establece delay entre requests
  5. Haz clic en Run

El runner muestra pass/fail para cada asercion de test y proporciona un resumen.

Newman: Ejecutor por Linea de Comandos

Newman ejecuta colecciones de Postman desde la terminal, haciendolo perfecto para CI/CD.

Instalar Newman:

npm install -g newman

Ejecutar una coleccion:

# Exportar coleccion de Postman como JSON
newman run my-collection.json -e staging-environment.json

# Con reporte HTML
newman run my-collection.json -e staging.json -r htmlextra

# Establecer numero de iteraciones
newman run my-collection.json --iteration-count 5

Ejemplo de Integracion CI/CD (GitHub Actions)

- name: Run API Tests
  run: |
    npm install -g newman newman-reporter-htmlextra
    newman run tests/api-collection.json \
      -e tests/staging-env.json \
      -r cli,htmlextra \
      --reporter-htmlextra-export reports/api-report.html

Funcionalidades Avanzadas

Testing Basado en Datos

Crea un archivo CSV o JSON con datos de prueba:

email,name,expected_status
valid@test.com,Alice,201
invalid-email,Bob,400
,Charlie,400
a@b.c,Dave,201

Referencia variables de datos: {{email}}, {{name}}, {{expected_status}}

Mock Servers

Crea APIs mock para desarrollo frontend o testing cuando la API real no esta disponible. Postman genera una URL de mock server basada en las respuestas guardadas de tu coleccion.

Documentacion de API

Postman auto-genera documentacion de tus colecciones, incluyendo ejemplos de request, muestras de response y descripciones. Publicala como URL publica o privada.

Ejercicio Practico

  1. Crea una coleccion para JSONPlaceholder con requests para operaciones CRUD de Posts
  2. Configura dos environments (puedes usar la misma URL con diferentes variables para simular)
  3. Escribe tests para cada request verificando status codes y estructura de response
  4. Encadena requests: Crea un post, extrae su ID, buscalo por ID, actualizalo y luego eliminalo
  5. Ejecuta la coleccion usando el Collection Runner y verifica que todos los tests pasen

Puntos Clave

  • Postman proporciona una interfaz visual para construir, organizar y ejecutar tests de API sin codigo
  • Las colecciones organizan requests en grupos logicos; los environments gestionan variables por servidor
  • Las variables (local, environment, collection, global) eliminan valores hardcodeados y permiten reutilizacion
  • Los scripts de test usan aserciones JavaScript para validar status codes, response bodies y headers
  • Newman lleva las colecciones de Postman a pipelines de CI/CD para testing de regresion automatizado