academia/docs/qa-testing/DEFECTOS-QA.md

8.2 KiB

Reporte de Defectos - Pruebas Manuales QA

Fecha: 2026-01-07 Tester: QA Automation con Playwright Ambiente: k3s (academia.ingeniumcodex.com) Estado: Completado


Resumen Ejecutivo

Severidad Cantidad Corregidos
Critica 1 1
Alta 1 1
Media 1 1
Baja 1 1

Todos los defectos han sido corregidos y validados.


DEF-001: SQL Server OOMKilled - Memoria Insuficiente

Clasificacion

  • ID: DEF-001
  • Severidad: CRITICA
  • Componente: Infraestructura / SQL Server
  • Estado: CORREGIDO

Descripcion

SQL Server se reinicia continuamente debido a falta de memoria (OOMKilled). El pod entra en CrashLoopBackOff impidiendo el funcionamiento de la aplicacion.

Pasos para Reproducir

  1. Desplegar la aplicacion en k3s con los manifiestos originales
  2. Esperar 2-3 minutos
  3. Observar que SQL Server se reinicia repetidamente

Resultado Esperado

SQL Server debe iniciar y permanecer estable sin reinicios.

Resultado Actual

  • Exit Code: 137 (SIGKILL - OOMKilled)
  • SQL Server se reinicia cada ~2 minutos
  • Errores en logs: 17300, 17312, 28709 (recursos insuficientes)

Evidencia

Error de conexion

Solucion Implementada

Se modifico deploy/k3s/sqlserver.yaml:

  • Aumentar memoria limite a 1.5Gi
  • Aumentar MSSQL_MEMORY_LIMIT_MB a 1024
  • Aumentar initialDelaySeconds del liveness probe a 120
  • Aumentar failureThreshold a 5

Resultado post-correccion: SQL Server estable con 691Mi de RAM y 0 reinicios.


DEF-002: Mensajes de Restriccion en Ingles

Clasificacion

  • ID: DEF-002
  • Severidad: ALTA
  • Componente: Frontend / Localizacion
  • Estado: CORREGIDO

Descripcion

Los mensajes de restriccion en la pagina de inscripcion se muestran en ingles en lugar de espanol, rompiendo la consistencia del idioma de la aplicacion.

Pasos para Reproducir

  1. Navegar a la pagina de inscripcion de un estudiante
  2. Inscribir al estudiante en una materia
  3. Observar los mensajes de restriccion en las otras materias

Resultado Esperado

Los mensajes deben mostrarse en espanol:

  • "Ya inscrito"
  • "Ya tienes una materia con este profesor"
  • "Maximo 3 materias alcanzado"

Resultado Actual

Los mensajes se muestran en ingles:

  • "Already enrolled"
  • "Already have a subject with this professor"
  • "Maximum 3 subjects reached"

Evidencia

Mensajes en ingles Maximo materias

Soluciones Propuestas

Solucion A: Traducir en el frontend (servicio)

  • Descripcion: Crear un diccionario de traducciones en el EnrollmentService
  • Pros: Cambio localizado, rapido de implementar
  • Contras: Duplica logica de traduccion

Solucion B: Traducir en el backend (GraphQL)

  • Descripcion: Retornar mensajes en espanol desde la API
  • Pros: Fuente unica de verdad
  • Contras: Requiere cambios en backend

Solucion C: Usar i18n en Angular

  • Descripcion: Implementar sistema de internacionalizacion completo
  • Pros: Escalable para multiples idiomas
  • Contras: Mayor complejidad, over-engineering para este caso

Solucion Unificada Recomendada

Implementar Solucion A: traducir los mensajes en el frontend ya que la API retorna codigos/mensajes en ingles y el frontend es responsable de la presentacion.

Archivo a modificar: src/frontend/src/app/features/enrollment/pages/enrollment-page/enrollment-page.component.ts

private readonly translations: Record<string, string> = {
  'Already enrolled': 'Ya inscrito',
  'Already have a subject with this professor': 'Ya tienes una materia con este profesor',
  'Maximum 3 subjects reached': 'Maximo 3 materias alcanzado'
};

translateMessage(message: string): string {
  return this.translations[message] || message;
}

DEF-003: Error Gramatical en Pluralizacion

Clasificacion

  • ID: DEF-003
  • Severidad: MEDIA
  • Componente: Frontend / Pagina Companeros
  • Estado: CORREGIDO

Descripcion

En la pagina de companeros de clase, cuando hay exactamente 1 companero, el texto muestra "1 companeros" (plural) en lugar de "1 companero" (singular).

Pasos para Reproducir

  1. Crear dos estudiantes
  2. Inscribir ambos en la misma materia
  3. Ver la pagina de companeros de cualquiera de los dos
  4. Observar el contador junto al nombre de la materia

Resultado Esperado

  • 0 companeros
  • 1 companero (singular)
  • 2 companeros (plural)

Resultado Actual

  • 1 companeros (incorrecto)

Evidencia

Error gramatical

Soluciones Propuestas

Solucion A: Condicional simple en template

{{ count }} {{ count === 1 ? 'companero' : 'companeros' }}

Solucion B: Pipe de pluralizacion

@Pipe({ name: 'pluralize' })
export class PluralizePipe {
  transform(count: number, singular: string, plural: string): string {
    return count === 1 ? singular : plural;
  }
}

Solucion C: Usar Angular i18n con ICU

{count, plural, =1 {companero} other {companeros}}

Solucion Unificada Recomendada

Implementar Solucion A (condicional simple) por ser la mas directa y no requerir cambios estructurales.

Archivo a modificar: src/frontend/src/app/features/classmates/pages/classmates-page/classmates-page.component.html


DEF-004: Favicon No Encontrado (404)

Clasificacion

  • ID: DEF-004
  • Severidad: BAJA
  • Componente: Frontend / Assets
  • Estado: CORREGIDO

Descripcion

El navegador intenta cargar /favicon.ico pero recibe un error 404. Esto genera errores en la consola del navegador.

Pasos para Reproducir

  1. Abrir la aplicacion en el navegador
  2. Abrir las herramientas de desarrollador (F12)
  3. Observar la pestana de red o consola

Resultado Esperado

El favicon debe cargarse correctamente o no debe haber referencia al mismo.

Resultado Actual

Failed to load resource: the server responded with a status of 404 ()
@ https://academia.ingeniumcodex.com/favicon.ico

Evidencia

Error visible en consola del navegador durante las pruebas.

Soluciones Propuestas

Solucion A: Agregar favicon

  • Descripcion: Crear y agregar un favicon.ico al proyecto
  • Pros: Mejora UX, profesionalismo
  • Contras: Requiere crear el asset

Solucion B: Remover referencia

  • Descripcion: Quitar la referencia al favicon en index.html
  • Pros: Elimina el error
  • Contras: Sin icono en pestanas del navegador

Solucion Unificada Recomendada

Implementar Solucion A: crear un favicon simple basado en el logo "S" de la aplicacion.

Archivos a modificar:

  • Crear src/frontend/src/favicon.ico
  • Verificar referencia en src/frontend/src/index.html

Capturas de Pantalla

Archivo Descripcion
01-error-inicial-carga.png Error de conexion al servidor (DEF-001)
02-listado-estudiantes.png Listado de estudiantes funcionando
03-formulario-nuevo-estudiante.png Formulario de creacion
04-validacion-email-invalido.png Validacion de email funcionando
05-estudiante-creado.png Confirmacion de creacion exitosa
06-pagina-inscripcion.png Pagina de inscripcion
07-mensajes-en-ingles-defecto.png Mensajes en ingles (DEF-002)
08-maximo-materias-ingles.png Mensaje maximo materias en ingles
09-error-gramatical-companeros.png Error "1 companeros" (DEF-003)
10-dialogo-confirmacion-eliminar.png Dialogo de confirmacion correcto
11-validacion-mensajes-espanol.png Mensajes traducidos a espanol (DEF-002 VALIDADO)
12-validacion-pluralizacion.png Pluralizacion corregida (DEF-003 VALIDADO)

Historial de Cambios

Fecha Cambio
2026-01-07 Creacion del documento
2026-01-07 DEF-001 identificado y corregido (SQL Server OOM)
2026-01-07 DEF-002, DEF-003, DEF-004 identificados
2026-01-07 Soluciones propuestas para todos los defectos
2026-01-08 DEF-002 corregido (mensajes traducidos a espanol)
2026-01-08 DEF-003 corregido (pluralizacion "companero/companeros")
2026-01-08 DEF-004 corregido (favicon SVG agregado)
2026-01-08 Todas las correcciones validadas con Playwright