# Checklist de Testing Profesional — SGETECBA

Fecha base: 30-05-2026

## 1. Precondiciones

- Confirmar rama de trabajo y `git status`
- Confirmar que `backend/.env` no está trackeado
- Confirmar que no hay secretos reales en archivos versionados
- Confirmar que `pytest` corre
- Confirmar que `npm run build` corre
- Confirmar conectividad con la base de datos objetivo

## 2. Smoke técnico

- `GET /health` responde `200`
- login válido responde `200`
- login inválido responde `401`
- rutas sensibles sin token responden `401`
- rutas sensibles con rol incorrecto responden `403`
- frontend compila sin TypeScript errors

## 3. QA funcional backend

- Autenticación JWT
- Expiración de token
- Rechazo de token inválido
- Rechazo de credenciales en texto plano
- Alta de estudiantes
- Edición de estudiantes
- Baja lógica o desactivación
- Listado de matriculaciones
- Alta de matriculación
- Prevención de duplicados en matriculación
- Listado de sesiones
- Alta de sesión
- Importación de Excel válida
- Importación con extensión inválida
- Importación sin permisos
- Importación con archivo demasiado grande

## 4. QA funcional frontend

- Login
- Redirección según rol
- Protección de rutas privadas
- Visualización de dashboard
- Listado de estudiantes
- Listado de matriculaciones
- Importación desde UI
- Mensajes de error `401`
- Mensajes de error `403`
- Mensajes de error `422`
- Mensajes de error `500`
- Confirmación visual de textos con acentos correctos

## 5. QA de seguridad

- Verificar que `JWT_SECRET_KEY` no use placeholder
- Verificar que la app no arranque con secreto vacío o por defecto
- Verificar que `.env` esté ignorado
- Verificar que `.env.example` no tenga credenciales reales
- Verificar que no existan endpoints sensibles públicos
- Verificar que la UI no deje token en claves inconsistentes
- Verificar que el token se envíe por `Authorization: Bearer`
- Verificar que importación requiera rol autorizado
- Verificar que no existan contraseñas en texto plano aceptadas por login

## 6. QA de regresión

- Repetir `pytest`
- Repetir `npm run build`
- Repetir `alembic current`
- Repetir login con usuario administrador
- Repetir acceso denegado con usuario no autorizado
- Repetir flujo de importación con archivo de prueba
- Repetir navegación principal por rol

## 7. Evidencia a guardar

- salida de `git status`
- salida de `pytest`
- salida de `npm run build`
- salida de `alembic current`
- capturas de login, dashboard, pantallas protegidas e importación
- matriz de casos probados con resultado `PASS/FAIL`

## 8. Criterio de aprobación final

El cambio sólo se aprueba como cierre final si:

- backend tests pasan
- frontend build pasa
- no hay secretos versionados
- rutas sensibles no quedan públicas
- QA manual E2E fue ejecutado
- no hay regresiones visibles
- Alembic queda trazable para el siguiente cambio de esquema
