📡 Introducción al Testing de APIs
El testing de APIs es fundamental para garantizar que los servicios backend funcionen correctamente. A
diferencia del testing de UI, nos enfocamos en validar la lógica de negocio, datos y comunicación entre
sistemas.
🛠️ Herramientas Recomendadas
- Postman - Cliente visual para pruebas manuales
- Swagger UI - Documentación interactiva (ya disponible en este proyecto)
- Playwright - Automatización de pruebas de API
- cURL - Línea de comandos para requests HTTP
- Thunder Client - Extensión de VS Code
🎯 Tipos de Pruebas
1. Pruebas Funcionales
Verifican que los endpoints respondan correctamente según la especificación:
- Validación de status codes (200, 400, 404, 500)
- Estructura del response (JSON schema)
- Valores de campos específicos
- Manejo de errores
2. Pruebas de Validación de Datos
- Campos obligatorios vs opcionales
- Tipos de datos correctos
- Límites de valores (min/max)
- Formatos (email, fecha, etc.)
3. Pruebas de Seguridad
- Autenticación y autorización
- Validación de tokens
- SQL Injection
- CORS policies
📝 Ejemplo Práctico - Endpoint de Transferencias
Request POST /transferencias/
{
"monto": 5000,
"cuenta_origen": "ACC001",
"cuenta_destino": "ACC002",
"descripcion": "Pago de servicios"
}
Casos de Prueba
- Happy Path: Transferencia exitosa con datos válidos
- Monto Inválido: Monto negativo o cero
- Límite Excedido: Monto mayor al límite diario
- Cuenta Inexistente: Cuenta destino no existe
- Saldo Insuficiente: Balance menor al monto
✅ Checklist de Validación
- ☑️ Status code correcto
- ☑️ Response time aceptable (<2s)
- ☑️ Headers correctos (Content-Type, etc.)
- ☑️ Body structure válida
- ☑️ Mensajes de error descriptivos
- ☑️ Idempotencia (cuando aplique)
🚀 Automatización con Playwright
test('Transferencia exitosa', async ({ request }) => {
const response = await request.post('/transferencias/', {
data: {
monto: 5000,
cuenta_origen: 'ACC001',
cuenta_destino: 'ACC002',
descripcion: 'Test'
}
});
expect(response.status()).toBe(200);
const body = await response.json();
expect(body.exito).toBe(true);
});
💡 Mejores Prácticas
- Usar datos de prueba realistas pero no sensibles
- Probar casos límite (boundary testing)
- Validar tanto el happy path como los errores
- Documentar todos los casos de prueba
- Mantener tests independientes entre sí
- Usar variables de entorno para URLs y credenciales