Un caso de uso bien escrito no solo sirve para analizar y diseñar. También es una base muy útil para definir casos de prueba. Cada flujo, regla, excepción y resultado esperado puede transformarse en una verificación concreta.
La derivación de pruebas desde casos de uso ayuda a comprobar que el sistema cumple el comportamiento acordado. También permite detectar huecos en la especificación: si no se puede probar un paso o una postcondición, probablemente falta precisión.
En este tema veremos cómo pasar desde una especificación funcional a pruebas claras, trazables y orientadas al usuario.
Un caso de prueba describe una situación que se ejecuta para verificar un comportamiento esperado del sistema. Suele incluir precondiciones, datos de entrada, pasos, resultado esperado y estado final.
Por ejemplo, para el caso de uso Solicitar turno, un caso de prueba puede verificar que un paciente registrado logra reservar un horario disponible y recibe una confirmación.
Los casos de uso describen comportamiento desde la perspectiva del actor. Por eso son una fuente natural para pruebas funcionales y pruebas de aceptación.
Derivar pruebas desde ellos permite:
Un caso de uso puede generar varias pruebas. El flujo principal produce una prueba de camino exitoso. Cada flujo alternativo importante produce una prueba adicional. Cada excepción relevante produce una prueba de error o recuperación. Las reglas de negocio y postcondiciones generan verificaciones específicas.
La primera prueba suele corresponder al flujo principal. Verifica que, bajo condiciones normales, el actor puede lograr el objetivo y el sistema alcanza la postcondición de éxito.
Ejemplo para Solicitar turno:
Cada flujo alternativo relevante debe transformarse en una prueba. Si el caso de uso permite buscar por profesional en lugar de especialidad, esa variante debe verificarse.
Ejemplo:
Las excepciones documentadas deben generar pruebas. Estas pruebas verifican que el sistema responda correctamente ante errores, condiciones no permitidas o fallas externas.
Ejemplo:
Las reglas de negocio deben probarse explícitamente. Si una regla impide una operación, debe existir una prueba que intente violarla y verifique que el sistema la bloquea.
Ejemplo:
Las postcondiciones indican qué debe quedar verdadero al finalizar. Cada postcondición importante debe tener una verificación.
Ejemplos:
Los datos de entrada permiten definir pruebas con valores válidos, inválidos, faltantes y límites.
Ejemplos:
Los mensajes del sistema también deben verificarse cuando son importantes para guiar al usuario o confirmar resultados.
Por ejemplo, ante un horario no disponible, no basta con que el sistema rechace la operación. También debe informar el problema de forma comprensible y ofrecer una acción de recuperación si corresponde.
Algunos requisitos no funcionales relacionados con el caso de uso requieren pruebas específicas. Por ejemplo, rendimiento, seguridad, accesibilidad o auditoría.
Ejemplos:
Una tabla permite conectar partes del caso de uso con pruebas:
| Elemento del caso de uso | Prueba derivada | Resultado esperado |
|---|---|---|
| Flujo principal | Reserva exitosa. | Turno confirmado. |
| Flujo alternativo | Búsqueda por profesional. | Horarios del profesional seleccionado. |
| Excepción | Horario ocupado al confirmar. | Mensaje de conflicto y opción de elegir otro horario. |
| Regla de negocio | Intento de doble reserva. | Reserva rechazada. |
| Postcondición | Verificar disponibilidad posterior. | Horario reservado no aparece disponible. |
Un caso de prueba puede documentarse con estos campos:
Cada prueba importante debería relacionarse con el caso de uso, flujo, regla o requisito que verifica. Esto permite saber qué cobertura existe y qué pruebas deben actualizarse si cambia la especificación.
Por ejemplo, si cambia la regla de cancelación de turnos, se pueden localizar rápidamente las pruebas asociadas.
Un error frecuente es probar solo el flujo principal exitoso. Aunque esa prueba es necesaria, no alcanza. Muchos errores aparecen en alternativas, excepciones, datos inválidos, permisos o fallas de integración.
Un buen conjunto de pruebas cubre el camino normal y también los escenarios que pueden afectar la experiencia, la consistencia o la seguridad.
Al derivar pruebas desde casos de uso, suelen aparecer estos errores:
Antes de cerrar las pruebas derivadas, conviene revisar:
Derivar casos de prueba desde casos de uso permite verificar que el sistema cumple el comportamiento esperado desde la perspectiva del usuario y del negocio.
Una especificación bien escrita facilita construir pruebas claras, completas y trazables. En el próximo tema estudiaremos la revisión, validación y aprobación de casos de uso con usuarios.