academia/docs/DEFECTOS_QA.md

6.1 KiB

Reporte de Pruebas Manuales QA

Fecha: 2026-01-08 Tester: Claude Code Ambiente: Desarrollo Local (localhost:4200 / localhost:5000)


Resumen Ejecutivo

Categoría Total Pasaron Fallaron Corregidos
CRUD Estudiantes 4 4 0 1
Inscripciones 5 5 0 0
Compañeros 2 2 0 0
Total 11 11 0 1

Capturas de Pantalla

# Archivo Descripción
01 01-inicio-cargando.png Página inicial cargando
02 02-formulario-nuevo-estudiante.png Formulario de nuevo estudiante
03 03-formulario-lleno.png Formulario con datos
04 04-estudiante-creado.png Estudiante creado exitosamente
05 05-DEFECTO-editar-estudiante-no-encontrado.png DEFECTO: Error al editar
06 06-pagina-inscripcion.png Página de inscripción
07 07-inscripcion-exitosa-regla-profesor.png Regla de profesor funcionando
08 08-maximo-3-materias.png Límite de materias visible
09 09-creditos-maximos-9-9.png 9/9 créditos alcanzados
10 10-dos-estudiantes.png Lista con dos estudiantes
11 11-companeros-de-clase.png Vista de compañeros
12 12-confirmar-eliminacion.png Diálogo de confirmación
13 13-estudiante-eliminado.png Estudiante eliminado
14 14-CORREGIDO-editar-estudiante-funciona.png CORREGIDO: Editar funciona

Defectos Encontrados

DEFECTO #1: Error "Estudiante no encontrado" al editar

ID: DEF-001 Severidad: Alta Prioridad: P1 Estado: RESUELTO

Descripcion

Al hacer clic en el boton de editar (icono de lapiz) en la lista de estudiantes, aparece un snackbar con el mensaje "Estudiante no encontrado" en lugar de abrir el formulario de edicion.

Pasos para Reproducir

  1. Ir a http://localhost:4200/students
  2. Crear un nuevo estudiante
  3. En la tabla, hacer clic en el boton de editar (icono de lapiz)
  4. Resultado (antes): Aparecia mensaje "Estudiante no encontrado"
  5. Resultado (despues del fix): El formulario de edicion abre correctamente

Capturas de Pantalla

Estado Captura
Antes Defecto
Despues Corregido

Causa Raiz Identificada

Se encontraron DOS problemas combinados:

  1. Problema de navegacion: El boton de editar usaba <button [routerLink]> pero en Angular el routerLink funciona mejor con elementos <a>.

  2. Problema de timing con signals: El componente StudentFormComponent usaba ngOnInit para leer el parametro de ruta id via input() signal, pero el valor no estaba disponible en ese momento del ciclo de vida.

Archivos Modificados

  • student-list.component.ts: Cambio <button> por <a> para el boton de editar
  • student-form.component.ts: Cambio ngOnInit por effect() para reaccionar cuando el input signal este disponible

Analisis de Soluciones - DEFECTO #1

Soluciones Propuestas

Solucion Descripcion Ventajas Desventajas
A Verificar navegacion y parametros de ruta Simple si el problema es routing No resuelve si es backend
B Revisar servicio de estudiantes Identifica problemas en servicios Requiere debugging profundo
C Agregar logs de diagnostico Ayuda a identificar donde falla Es temporal
D Usar modal en lugar de navegacion Evita problemas de nav, mejor UX Cambio arquitectonico grande

SOLUCION IMPLEMENTADA

Se implemento una combinacion de A + investigacion profunda que revelo dos problemas:

Fix 1: Cambiar <button> por <a> en student-list.component.ts

// ANTES (no funcionaba)
<button [routerLink]="['/students', student.id, 'edit']">
  <mat-icon>edit</mat-icon>
</button>

// DESPUES (funciona)
<a [routerLink]="['/students', student.id, 'edit']">
  <mat-icon>edit</mat-icon>
</a>

Fix 2: Usar effect() en lugar de ngOnInit en student-form.component.ts

// ANTES (no funcionaba - el input signal no estaba listo en ngOnInit)
ngOnInit(): void {
  const studentId = this.id();
  if (studentId) {
    this.loadStudent(parseInt(studentId, 10));
  }
}

// DESPUES (funciona - effect reacciona cuando el signal tiene valor)
constructor() {
  effect(() => {
    const studentId = this.id();
    if (studentId && !this.isEditing()) {
      this.isEditing.set(true);
      this.loadStudent(parseInt(studentId, 10));
    }
  });
}

Validacion del Fix

  • El formulario de edicion carga correctamente con los datos del estudiante
  • La actualizacion de datos funciona sin errores
  • No aparece mas el snackbar "Estudiante no encontrado"

Funcionalidades Verificadas (OK)

Crear Estudiante

  • Formulario con validación de campos requeridos
  • Botón deshabilitado hasta completar campos
  • Mensaje de éxito al crear
  • Redirección a lista de estudiantes

Inscripción en Materias

  • Lista de 10 materias con 5 profesores
  • Regla de negocio: No repetir profesor (FUNCIONA)
  • Regla de negocio: Máximo 3 materias (FUNCIONA)
  • Indicadores visuales de disponibilidad
  • Mensajes claros de restricciones

Ver Compañeros

  • Lista de materias inscritas
  • Nombres de compañeros visibles
  • Mensaje cuando no hay compañeros

Eliminar Estudiante

  • Diálogo de confirmación
  • Mensaje de éxito al eliminar
  • Actualización de lista

Recomendaciones

Mejoras de UX

  1. Agregar tooltips a los botones de acción
  2. Mostrar spinner durante operaciones async
  3. Agregar confirmación antes de cancelar inscripción

Mejoras Técnicas

  1. Implementar caché de estudiantes para evitar consultas repetidas
  2. Agregar paginación a la lista de estudiantes
  3. Implementar búsqueda/filtro de estudiantes

Mejoras de Calidad

  1. Agregar tests E2E con Playwright
  2. Implementar monitoreo de errores (Sentry)
  3. Agregar métricas de rendimiento

Reporte generado automáticamente durante pruebas manuales con Playwright MCP