lunes, 26 de mayo de 2025

La validación de requisitos en el desarrollo de SW

La validación de requerimientos en el desarrollo de software es responsabilidad principal del analista de requerimientos o analista de sistemas, aunque también participan otros actores clave como:

  • Clientes o usuarios finales: Aseguran que los requerimientos reflejen sus necesidades reales.

  • Desarrolladores: Validan la viabilidad técnica de los requerimientos.

  • Gerentes de proyecto: Aseguran que los requerimientos estén alineados con los objetivos del proyecto.

  • Testers o QA (Aseguramiento de Calidad): Verifican que los requerimientos sean testables y verificables.

Técnicas de Validación de Requerimientos

Estas técnicas se utilizan para garantizar que los requerimientos sean correctos, completos, consistentes y verificables:

  1. 1. Revisiones o Inspecciones

    Qué es:
    Es un proceso formal en el que se revisan los documentos de requerimientos con la participación de un equipo multidisciplinario (clientes, analistas, desarrolladores, testers, etc.).

    Objetivo:
    Detectar errores, ambigüedades, omisiones, redundancias o contradicciones.

    Cómo se realiza:

    • Se distribuyen los documentos antes de la reunión.

    • Todos los participantes revisan el contenido.

    • Durante la sesión, se discuten cada requerimiento y se documentan los hallazgos.

    • Se genera un informe con observaciones y correcciones a aplicar.

    Ventajas:

    • Mejora la calidad de los requerimientos antes de pasar a la fase de diseño.

    • Involucra a todas las partes interesadas.


    2. Prototipos

    Qué es:
    Son representaciones visuales o funcionales del sistema (mockups, wireframes o prototipos navegables).

    Objetivo:
    Permitir al usuario visualizar cómo funcionará el sistema antes de implementarlo.

    Cómo se realiza:

    • Se crean maquetas en herramientas como Figma, Balsamiq, Adobe XD, etc.

    • Se presentan al cliente para verificar si cumplen con sus expectativas.

    • Se ajustan los requerimientos en base a los comentarios.

    Ventajas:

    • Reduce malentendidos.

    • Aumenta la retroalimentación temprana del cliente.


    3. Casos de Uso / Escenarios

    Qué es:
    Son descripciones detalladas de cómo los usuarios interactúan con el sistema en situaciones específicas.

    Objetivo:
    Asegurar que los requerimientos cubran correctamente las necesidades funcionales desde la perspectiva del usuario.

    Cómo se realiza:

    • Se define un actor (usuario o sistema externo).

    • Se describe una secuencia de pasos para lograr un objetivo (ej: registrar un alumno).

    • Se revisa con el usuario para validar el flujo.

    Ventajas:

    • Facilita la comprensión del sistema por parte del cliente.

    • Ayuda a identificar requerimientos faltantes o mal planteados.


    4. Pruebas de Validación (Validación por prueba)

    Qué es:
    Crear casos de prueba basados en los requerimientos para validar que sean claros, completos y verificables.

    Objetivo:
    Asegurar que cada requerimiento pueda probarse en el sistema real.

    Cómo se realiza:

    • Se redactan casos de prueba para cada requerimiento.

    • Se identifican criterios de aceptación.

    • Se ejecutan las pruebas y se comparan los resultados con lo esperado.

    Ventajas:

    • Confirma que los requerimientos se pueden implementar y verificar técnicamente.

    • Detecta requerimientos vagos o ambiguos.


    5. Entrevistas y Encuestas

    Qué es:
    Consiste en preguntar directamente a los interesados (clientes, usuarios, expertos) para validar los requerimientos.

    Objetivo:
    Obtener retroalimentación directa sobre si los requerimientos satisfacen las necesidades del negocio.

    Cómo se realiza:

    • Se preparan preguntas abiertas o cerradas.

    • Se realizan entrevistas individuales o en grupo.

    • También se pueden aplicar encuestas por formulario.

    Ventajas:

    • Aporta perspectiva real del negocio.

    • Permite detectar requerimientos que no se han documentado.


    6. Walkthroughs (Recorridos)

    Qué es:
    Es una revisión informal donde el autor del documento guía a los participantes a través de los requerimientos, paso a paso.

    Objetivo:
    Detectar posibles errores o dudas mientras se repasan los requerimientos en conjunto.

    Cómo se realiza:

    • El autor presenta el documento y explica el contenido.

    • Los participantes hacen preguntas o comentarios durante el recorrido.

    • Se registran observaciones.

    Ventajas:

    • Buena técnica para equipos pequeños o con recursos limitados.

    • Fomenta la colaboración entre analistas y usuarios.


    7. Técnicas de Modelado

    Qué es:
    Consiste en representar los requerimientos mediante diagramas (como UML, BPMN, ERD, etc.).

    Objetivo:
    Visualizar procesos, entidades y relaciones para facilitar la validación.

    Cómo se realiza:

    • Se crean diagramas como:

      • Diagramas de casos de uso

      • Diagramas de clases

      • Diagramas de flujo

      • Diagramas de actividades o BPMN

    • Se presentan a los interesados para validación visual.

    Ventajas:

    • Clarifica estructuras y procesos complejos.

    • Facilita la identificación de errores lógicos.


    8. Matrices de Trazabilidad

    Qué es:
    Es una tabla que relaciona los requerimientos con otros artefactos del proyecto (objetivos del negocio, casos de uso, pruebas, módulos de código).

    Objetivo:
    Asegurar que cada requerimiento esté cubierto en el diseño, desarrollo y pruebas.

    Cómo se realiza:

    • Se listan todos los requerimientos.

    • Se vinculan con sus correspondientes casos de uso, módulos de sistema y pruebas.

    • Se mantiene actualizada durante todo el proyecto.

    Ventajas:

    • Ayuda a controlar el alcance.

    • Permite verificar que no se omita ningún requerimiento en el desarrollo o pruebas.

Ejemplo práctico: 

Casos de Uso

Proyecto de ejemplo: Sistema de gestión escolar.
Función a validar: Registro de calificaciones por parte del maestro.


Caso de Uso: Registrar Calificaciones

Nombre del caso de uso:

Registrar calificaciones de los alumnos

Actor principal:

Maestro

Actores secundarios:

Sistema (valida datos y guarda en base de datos)

Precondiciones:

  • El maestro debe estar autenticado en el sistema.

  • El alumno ya debe estar inscrito en el curso.

Flujo principal (escenario básico):

  1. El maestro accede a la opción "Registrar Calificaciones".

  2. El sistema muestra una lista de sus grupos y asignaturas.

  3. El maestro selecciona un grupo y una materia.

  4. El sistema muestra la lista de alumnos.

  5. El maestro ingresa la calificación para cada alumno.

  6. El maestro confirma el registro.

  7. El sistema valida que los valores estén en el rango permitido (por ejemplo, 0-10).

  8. El sistema guarda las calificaciones.

  9. El sistema confirma al maestro que los datos fueron guardados correctamente.

Flujos alternativos:

  • Paso 7A: Si una calificación no es válida, el sistema muestra un mensaje de error y no permite guardar hasta que se corrija.

  • Paso 1A: Si el maestro no está autenticado, el sistema lo redirige a la pantalla de inicio de sesión.

Postcondiciones:

  • Las calificaciones quedan registradas en la base de datos del sistema.

  • El sistema está listo para mostrar estas calificaciones a alumnos y padres según permisos.


 ¿Cómo se usa este caso de uso para validar requerimientos?

  • Con el usuario (maestro): Se revisa el caso de uso en una reunión. Se le pregunta:
    "¿Este flujo cubre lo que tú haces en la vida real al calificar alumnos?"
    Si el maestro dice que necesita subir archivos Excel, o que califica por parcial y no final, eso indicaría que faltan requerimientos.

  • Con el desarrollador: El caso de uso permite verificar si el proceso es implementable con la tecnología disponible.

  • Con QA (pruebas): Se pueden generar casos de prueba desde este caso de uso, por ejemplo:

    • ¿Qué pasa si se ingresa un número fuera del rango?

    • ¿Qué pasa si se omite una calificación?


Resultado de aplicar la técnica:

  • Validación funcional realista.

  • Se identifican omisiones o ambigüedades.

  • Se ajustan los requerimientos antes de programar.

  • Se mejora la comunicación entre usuarios y desarrolladores.

lunes, 24 de marzo de 2025

DISEÑO DE CASO DE PRUEBA DE SOFTWARE

El diseño de casos de prueba de software es el proceso de crear una lista estructurada de pasos y condiciones para verificar la funcionalidad, la fiabilidad y la calidad de un sistema de software, identificando escenarios y combinaciones de entradas y salidas que simulen el comportamiento real y detecten defectos. Se basa en la identificación de requisitos y el uso de técnicas como la partición de equivalencia y el análisis de valores límite para maximizar la cobertura y asegurar que el software cumple con las expectativas, lo cual se documenta en una plantilla que incluye pasos, datos de prueba y resultados esperados. Es un plan paso a paso para validar una función específica del sistema.

Un caso de prueba sirve para comprobar:

  • Que el software hace lo que debe hacer.

  • Que responde correctamente a entradas válidas e inválidas.

  • Que los errores o defectos se identifican oportunamente.

Ejemplo práctico de un caso de prueba: Login en una aplicación web.
Caso de Prueba ID: TC-001
Módulo: Autenticación de usuarios
Título: Verificar inicio de sesión con credenciales válidas
Objetivo: Validar que un usuario pueda iniciar sesión correctamente con usuario y contraseña válidos
  • Condiciones Previas:
    • El usuario “admin” está registrado en el sistema.

    • El navegador tiene conexión a internet.

  • Acciones de Prueba:

    1. Abrir la aplicación en el navegador.

    2. Ingresar en el campo "Usuario": admin.

    3. Ingresar en el campo "Contraseña": 12345.

    4. Hacer clic en el botón “Iniciar sesión”.

  • Datos de Prueba:

    • Usuario: admin

    • Contraseña: 12345

  • Resultado Esperado:
    El sistema redirige al usuario al panel principal mostrando el mensaje “Bienvenido, admin”.

Pruebas de Componentes (Unitarias o de Módulo)

Las pruebas de componentes verifican cada parte individual del software (clases, funciones, módulos) de forma aislada, antes de integrarlo con el resto del sistema.

Alcance y Estrategia de Prueba

  • Qué se prueba: funciones individuales, clases, APIs, módulos independientes.

  • Cómo se prueba: con herramientas de prueba unitaria (JUnit, NUnit, PyTest, etc.), validando entradas y salidas esperadas.

Entorno de Prueba

  • Se configura un entorno controlado con librerías y dependencias simuladas (mocks o stubs).

Componentes de Software a Probar

  • Funciones, métodos, algoritmos o clases específicas.

Acciones de Prueba

  • Ejecutar cada función con diferentes entradas (válidas e inválidas).

  • Comprobar salidas correctas, manejo de errores y excepciones.

Condiciones Previas

  • Código compilado sin errores.

  • Dependencias externas simuladas.

Datos de Prueba

  • Entradas simples y controladas (ej: números positivos, negativos, nulos).

Resultados Esperados

  • La función devuelve el valor correcto.

  • Se manejan errores según lo esperado.

Recursos y Cronograma

  • Recurso: desarrollador o tester con conocimiento del código.

  • Cronograma: se ejecutan en paralelo al desarrollo, en cada commit o build (pruebas continuas).

   PRUEBAS DEL SISTEMA


Las pruebas del sistema validan el software completo e integrado, asegurando que todos los módulos trabajan de forma conjunta según los requisitos del cliente.

Alcance y Estrategia de Prueba

  • Qué se prueba: la aplicación en su totalidad (front-end, back-end, base de datos, APIs).

  • Cómo se prueba: con escenarios completos de negocio, pruebas funcionales y no funcionales.

Entorno de Prueba

  • Similar al ambiente de producción (servidores, base de datos, red, dispositivos reales o virtuales).

Componentes de Software a Probar

  • Interacciones entre módulos, integración con la base de datos, interfaz de usuario, seguridad, rendimiento.

Acciones de Prueba

  • Ejecutar flujos completos de usuario (login, transacciones, reportes).

  • Validar que se cumplen los requisitos funcionales y no funcionales.

Condiciones Previas

  • Todos los módulos integrados y estables.

  • Datos de prueba cargados en la base de datos.

Datos de Prueba

  • Casos reales o simulados de negocio (ej: usuarios registrados, transacciones válidas e inválidas).

Resultados Esperados

  • El sistema responde correctamente, sin errores.

  • Cumple los tiempos de respuesta, reglas de negocio y seguridad establecidas.

Recursos y Cronograma

  • Recursos: testers, analistas QA, herramientas de automatización (Selenium, JMeter).

  • Cronograma: al finalizar la integración completa, antes de pruebas de aceptación del usuario.

Importancia del diseño de casos de prueba

  1. Asegura la calidad del software: Permite verificar que cada módulo y el sistema completo cumplen con los requisitos funcionales y no funcionales.
  2. Previene errores en etapas tempranas: Detecta fallos en componentes antes de que se integren, reduciendo costos de corrección.
  3. Estandariza el proceso de prueba: Proporciona un método claro y repetible que facilita la comunicación entre testers, desarrolladores y clientes.
  4. Facilita la trazabilidad: Cada caso de prueba se puede vincular a un requisito, asegurando que todo lo solicitado por el cliente sea probado.
  5. Optimiza el uso de recursos: Al definir datos, condiciones y resultados esperados, se evita la improvisación y se aprovecha mejor el tiempo y el esfuerzo del equipo de pruebas.
  6. Permite reproducir y documentar fallos: Ayuda a registrar errores con evidencias y repetir pruebas para verificar correcciones.

Conclusión

El diseño de casos de prueba es una actividad fundamental dentro del aseguramiento de la calidad del software, ya que garantiza que las funcionalidades se validen de manera sistemática, organizada y medible.

Las pruebas de componentes permiten aislar y validar cada parte del sistema en desarrollo, detectando errores de forma temprana, mientras que las pruebas de sistema aseguran que todos los módulos integrados funcionen correctamente en conjunto, replicando escenarios reales de uso.

En conjunto, ambos enfoques proporcionan una estrategia sólida de pruebas: primero se comprueba la correctitud interna de cada pieza y después la coherencia global del software. De esta manera, se minimizan riesgos, se mejora la confiabilidad del producto y se asegura la satisfacción del usuario final.

Video del diseño de casos de prueba y ejemplos:

Referencias

  • Ammann, P., & Offutt, J. (2016). Introduction to software testing (2nd ed.). Cambridge University Press.
  • Kaner, C., Bach, J., & Pettichord, B. (2002). Lessons learned in software testing: A context-driven approach. Wiley.
  • Myers, G. J., Sandler, C., & Badgett, T. (2011). The art of software testing (3rd ed.). Wiley.
  • Beizer, B. (1995). Software testing techniques (2nd ed.). Dreamtech Press.
  • ISTQB. (2018). Standard glossary of terms used in software testing. International Software Testing Qualifications Board.
  • Jorgensen, P. C. (2013). Software testing: A craftsman’s approach (4th ed.). CRC Press.

La validación de requisitos en el desarrollo de SW

La validación de requerimientos en el desarrollo de software es responsabilidad principal del analista de requerimientos o analista de sis...