API de Homebanking - Estrategia Integral de Testing
Validar la funcionalidad, seguridad, rendimiento y confiabilidad de la API REST de Homebanking, asegurando que todos los endpoints cumplan con las especificaciones funcionales, manejen correctamente casos de éxito y error, y proporcionen respuestas consistentes bajo diferentes condiciones de carga.
| Módulo | Endpoints | Casos de Prueba | Prioridad |
|---|---|---|---|
| Cliente | 2 | 8 | ALTA |
| Cuentas | 1 | 5 | ALTA |
| Transferencias | 3 | 18 | CRÍTICA |
| Pagos | 2 | 12 | ALTA |
| Plazos Fijos | 3 | 15 | MEDIA |
| Préstamos | 2 | 14 | MEDIA |
| Tarjetas Virtuales | 3 | 10 | MEDIA |
| Transacciones | 1 | 6 | ALTA |
| Sistema | 1 | 3 | BAJA |
| TOTAL | 91 casos | - | |
| Tipo | Herramienta | Uso |
|---|---|---|
| Automatización | Playwright | Suite principal de pruebas automatizadas |
| Manual | Swagger UI | Pruebas exploratorias y validación manual |
| Performance | Locust / K6 | Pruebas de carga y stress |
| Reportes | Playwright HTML Reporter | Generación de reportes visuales |
| Componente | Detalle |
|---|---|
| Base URL | https://homebanking-demo.onrender.com |
| Documentación | /docs (Swagger UI) |
| Usuario de Prueba | demo |
| Token Mock | mock-token-demo |
| Cuentas Disponibles | ACC001, ACC002, ACC003 |
// Saldos Iniciales
ACC001 (Cuenta Corriente): $125,450.75
ACC002 (Caja de Ahorro): $89,320.50
ACC003 (Tarjeta Crédito): $45,000.00 (Límite: $150,000)
// Límites Operacionales
Transferencia Individual: $50,000.00
Transferencia Diaria: $100,000.00
Plazo Fijo Mínimo: $1,000.00
Préstamo Mínimo: $10,000.00
Préstamo Máximo: $500,000.00
Título: Transferencia exitosa entre cuentas propias
Precondiciones: Usuario autenticado, saldo suficiente en ACC001
Datos de Entrada:
{
"cuenta_origen": "ACC001",
"cuenta_destino": "ACC002",
"monto": 5000.00,
"motivo": "Transferencia de prueba",
"tipo": "propia"
}
Resultado Esperado:
exito: trueTítulo: Rechazo por monto menor al mínimo
Datos de Entrada: monto: 0.50
Resultado Esperado:
exito: falseMONTO_INVALIDOTítulo: Rechazo por exceder límite por transferencia
Datos de Entrada: monto: 55000.00
Resultado Esperado:
LIMITE_EXCEDIDOTítulo: Rechazo por límite diario excedido
Precondiciones: Ya se transfirieron $60,000 en el día
Datos de Entrada: monto: 45000.00
Resultado Esperado:
LIMITE_DIARIO_EXCEDIDOTítulo: Rechazo por saldo insuficiente
Datos de Entrada: monto: 200000.00 (mayor al saldo)
Resultado Esperado:
FONDOS_INSUFICIENTESTítulo: Transferencia a terceros con CBU válido
Datos de Entrada:
{
"cuenta_destino": "0170009876543210987654",
"tipo": "terceros",
"monto": 3000.00
}
Resultado Esperado: Transferencia exitosa
Título: Rechazo por CBU inválido (menos de 10 caracteres)
Datos de Entrada: cuenta_destino: "123456"
Resultado Esperado: Error DESTINO_INVALIDO
Título: Creación exitosa de plazo fijo a 90 días
Datos de Entrada:
{
"cuenta_origen": "ACC001",
"monto": 50000.00,
"plazo_dias": 90
}
Resultado Esperado:
(50000 × 42 × 90) / (365 × 100) = $5,178.08Título: Rechazo por monto menor al mínimo
Datos de Entrada: monto: 500.00
Resultado Esperado: Error MONTO_MINIMO
Título: Rechazo por exceder máximo de plazos fijos activos
Precondiciones: Usuario ya tiene 5 plazos fijos activos
Resultado Esperado: Error MAXIMO_ALCANZADO
Título: Cancelación de plazo fijo antes de vencimiento
Precondiciones: Existe plazo fijo activo con ID conocido
Resultado Esperado:
Título: Solicitud exitosa de préstamo a 12 cuotas
Datos de Entrada:
{
"monto": 200000.00,
"cuotas": 12,
"cuenta_destino": "ACC001"
}
Resultado Esperado:
(200000 × (1 + 0.65 × 1)) / 12 = $27,500Título: Rechazo por monto menor al mínimo
Datos de Entrada: monto: 5000.00
Resultado Esperado: Error MONTO_MINIMO
Título: Rechazo por cuotas no permitidas
Datos de Entrada: cuotas: 10 (no está en lista permitida)
Resultado Esperado: Error de validación
Título: Generación exitosa de tarjeta virtual
Datos de Entrada: id_cuenta_asociada: "ACC001"
Resultado Esperado:
Título: Rechazo por cuenta ya con tarjeta virtual
Precondiciones: ACC001 ya tiene tarjeta virtual activa
Resultado Esperado: Error YA_TIENE_TARJETA
Título: Eliminación exitosa de tarjeta virtual
Precondiciones: Existe tarjeta con ID conocido
Resultado Esperado: Tarjeta eliminada, no aparece en listado
Título: Pago exitoso de servicio de electricidad
Datos de Entrada:
{
"id_servicio": "SRV001",
"monto": 8500.00,
"id_cuenta": "ACC001"
}
Resultado Esperado:
| Criterio | Meta | Medición |
|---|---|---|
| Tasa de Aprobación | ≥ 95% | Casos pasados / Total casos |
| Casos Críticos | 100% | Todos los casos críticos deben pasar |
| Response Time | < 2s (p95) | 95% de requests bajo 2 segundos |
| Cobertura de Código | ≥ 80% | Líneas ejecutadas / Total líneas |
| Defectos Bloqueantes | 0 | Sin bugs críticos sin resolver |
| Fase | Duración | Actividades | Responsable |
|---|---|---|---|
| Fase 1: Preparación | 2 días | Setup ambiente, diseño casos, preparación datos | QA Lead |
| Fase 2: Smoke Testing | 1 día | Validación básica de endpoints críticos | QA Automation |
| Fase 3: Funcional | 3 días | Ejecución de suite completa automatizada | QA Automation |
| Fase 4: Exploratoria | 2 días | Pruebas manuales, edge cases | QA Manual |
| Fase 5: Performance | 1 día | Carga, stress, response time | QA Performance |
| Fase 6: Regresión | 1 día | Re-ejecución de suite completa | QA Automation |
| Fase 7: Reporte | 1 día | Consolidación de resultados, métricas | QA Lead |
# Ejecutar suite completa
npx playwright test
# Ejecutar solo casos críticos
npx playwright test --grep @critical
# Ejecutar módulo específico
npx playwright test tests/transferencias.spec.js
# Modo debug
npx playwright test --debug
# Generar reporte HTML
npx playwright test --reporter=html
# Ejecutar con headed browser (ver ejecución)
npx playwright test --headed
| Riesgo | Probabilidad | Impacto | Mitigación |
|---|---|---|---|
| API en Render se duerme (free tier) | Alta | Medio | Implementar warm-up request antes de suite |
| Datos en memoria se pierden | Media | Alto | Usar endpoint /sistema/reset antes de cada suite |
| Timeouts por delays simulados | Baja | Bajo | Configurar timeouts apropiados (5s) |
| Cambios en especificación | Media | Alto | Mantener casos sincronizados con spec funcional |