7. Verificación y validación

7.1 Introducción

En Testing de Software se usan dos conceptos muy importantes: verificación y validación. Ambos están relacionados con la calidad, pero no significan lo mismo.

La verificación busca comprobar si el producto fue construido de acuerdo con lo especificado. La validación busca comprobar si el producto realmente satisface la necesidad del usuario o del negocio.

Una frase clásica resume la diferencia:

Verificación: ¿estamos construyendo correctamente el producto?
Validación: ¿estamos construyendo el producto correcto?

Comprender esta diferencia ayuda a evitar un error frecuente: crear un sistema técnicamente correcto, pero poco útil para quien debe usarlo.

7.2 ¿Qué es la verificación?

La verificación consiste en comprobar que un artefacto del proyecto cumple con especificaciones, reglas, estándares o criterios definidos. Puede aplicarse a requisitos, diseños, código, configuraciones, documentación y casos de prueba.

En términos simples, la verificación pregunta si algo fue hecho correctamente según lo acordado.

Ejemplos de verificación:

  • Revisar si un requisito tiene criterios de aceptación claros.
  • Comprobar que una pantalla respeta el diseño aprobado.
  • Revisar código para verificar que cumple estándares del equipo.
  • Ejecutar una prueba para confirmar que el cálculo coincide con la fórmula especificada.
  • Verificar que una API devuelve los campos documentados.
  • Comprobar que un mensaje de error coincide con el texto definido.

La verificación puede realizarse con el sistema ejecutándose o sin ejecutarlo, dependiendo del artefacto que se revise.

7.3 ¿Qué es la validación?

La validación consiste en comprobar que el producto satisface la necesidad real del usuario, del cliente o del negocio. No alcanza con cumplir la especificación si la especificación no resuelve el problema correcto.

La validación pregunta si el producto es adecuado para su propósito.

Ejemplos de validación:

  • Confirmar que un flujo de compra permite al usuario completar una operación sin confusión.
  • Comprobar con usuarios reales si una pantalla les resulta comprensible.
  • Revisar si una funcionalidad resuelve el problema de negocio que motivó su desarrollo.
  • Validar que los reportes generados sirven para tomar decisiones.
  • Confirmar que los mensajes del sistema ayudan al usuario a corregir errores.
  • Verificar con representantes del negocio que las reglas implementadas son útiles en casos reales.

La validación suele requerir una mirada más cercana al usuario, al contexto y al valor esperado del producto.

7.4 Diferencia principal

La diferencia central es el tipo de pregunta que hacemos:

Concepto Pregunta principal Foco Ejemplo
Verificación ¿Cumple con lo especificado? Correctitud respecto de requisitos, diseño o estándares. El descuento calculado es exactamente el 15% indicado en el requisito.
Validación ¿Resuelve la necesidad real? Utilidad, valor y adecuación al usuario o negocio. El descuento permite aplicar correctamente la promoción que el negocio necesita ofrecer.

Un producto puede estar verificado y aun así no estar validado. Es decir, puede cumplir la especificación, pero no resolver el problema correcto.

7.5 Ejemplo simple: formulario de registro

Supongamos que se desarrolla un formulario de registro de usuarios. El requisito dice:

El usuario debe ingresar nombre, correo electrónico y contraseña. La contraseña debe tener al menos 8 caracteres.

Algunas preguntas de verificación serían:

  • ¿El formulario tiene los tres campos requeridos?
  • ¿El correo se valida con un formato correcto?
  • ¿La contraseña rechaza valores de menos de 8 caracteres?
  • ¿El sistema muestra el mensaje definido cuando falta un campo?
  • ¿Los datos se guardan en la estructura acordada?

Algunas preguntas de validación serían:

  • ¿El usuario entiende fácilmente cómo registrarse?
  • ¿La política de contraseña es adecuada para el nivel de seguridad esperado?
  • ¿El mensaje de error ayuda a corregir el problema?
  • ¿El registro pide datos suficientes, pero no excesivos?
  • ¿El flujo completo permite comenzar a usar la aplicación sin pasos innecesarios?

Ambos grupos de preguntas son importantes. Verificar sin validar puede producir una funcionalidad correcta en papel, pero poco útil en la práctica.

7.6 Actividades típicas de verificación

La verificación puede incluir actividades estáticas y dinámicas. Las actividades estáticas revisan artefactos sin ejecutar el sistema. Las dinámicas ejecutan software y comparan resultados.

Ejemplos de actividades de verificación:

  • Revisión de requisitos.
  • Revisión de diseño de pantallas.
  • Revisión de arquitectura.
  • Revisión de código.
  • Validación de formato de documentación técnica.
  • Ejecución de pruebas unitarias.
  • Ejecución de pruebas funcionales contra requisitos definidos.
  • Comprobación de estándares de seguridad o accesibilidad.

La verificación ayuda a detectar desviaciones respecto de lo acordado.

7.7 Actividades típicas de validación

La validación se concentra más en confirmar valor y adecuación al uso real. Algunas actividades posibles son:

  • Pruebas de aceptación con usuarios o representantes del negocio.
  • Demostraciones de funcionalidad a quienes pidieron el producto.
  • Pruebas de usabilidad.
  • Revisión de prototipos con usuarios antes de desarrollar.
  • Análisis de flujos reales de trabajo.
  • Validación de reportes con personas que toman decisiones.
  • Pruebas piloto con un grupo reducido de usuarios.
  • Medición de uso real luego de publicar una funcionalidad.

La validación ayuda a responder si el producto sirve para el propósito que motivó su construcción.

7.8 Verificación sin validación

Un error común es construir exactamente lo que se especificó, pero descubrir tarde que lo especificado no era lo que el usuario necesitaba.

Ejemplo: una empresa pide un reporte mensual de ventas en formato PDF. El equipo desarrolla el reporte, calcula bien los totales, respeta el diseño y permite descargarlo. Desde la verificación, todo parece correcto.

Pero luego los usuarios explican que necesitan filtrar por vendedor y exportar a hoja de cálculo para hacer análisis internos. El PDF cumple el requisito escrito, pero no resuelve la necesidad real.

El producto puede estar bien construido según el requisito, pero seguir siendo insuficiente para el usuario.

7.9 Validación sin verificación suficiente

También puede ocurrir lo contrario: una idea parece útil para el usuario, pero la implementación tiene errores. En ese caso, la necesidad puede estar bien identificada, pero el producto no está construido correctamente.

Ejemplo: los usuarios necesitan consultar el historial de pagos. La funcionalidad es valiosa y responde a una necesidad real. Sin embargo, el sistema muestra pagos duplicados o no ordena correctamente las fechas.

La funcionalidad puede estar validada como idea, pero falla en la verificación porque no cumple correctamente las reglas esperadas.

Por eso no conviene elegir entre verificación o validación. Necesitamos ambas.

7.10 Relación con requisitos y criterios de aceptación

Los requisitos y criterios de aceptación son fundamentales para verificar y validar. Un buen criterio de aceptación permite comprobar si una funcionalidad cumple lo acordado.

Ejemplo de criterio de aceptación:

Dado un usuario registrado con correo verificado, cuando ingresa correo y contraseña correctos, entonces el sistema debe iniciar sesión y mostrar la pantalla principal.

Este criterio ayuda a verificar el comportamiento esperado. Pero además debemos validar si ese flujo es suficiente para el usuario real. Tal vez también necesite recordar sesión, recuperar contraseña o iniciar sesión con otro proveedor.

La verificación se apoya en lo definido. La validación cuestiona si lo definido es adecuado.

7.11 Relación con pruebas manuales y automatizadas

Tanto la verificación como la validación pueden incluir pruebas manuales y automatizadas, pero cada enfoque tiene usos distintos.

Actividad Puede automatizarse Comentario
Verificar un cálculo Es ideal para pruebas repetibles con resultado esperado claro.
Verificar que una API devuelva un campo obligatorio Puede ejecutarse en cada cambio del sistema.
Validar si una pantalla es comprensible para usuarios nuevos No completamente Requiere observación, interpretación y feedback humano.
Validar si una funcionalidad resuelve una necesidad de negocio No completamente Requiere participación de negocio o usuarios representativos.

La automatización es muy útil para verificaciones repetibles, pero no reemplaza la validación humana del valor y la utilidad.

7.12 Verificación y validación en distintas etapas

Ambos conceptos pueden aparecer en varias etapas del ciclo de vida:

Etapa Verificación Validación
Requisitos Revisar que sean claros, completos y testeables. Confirmar que describen una necesidad real.
Diseño Comprobar que el diseño respeta reglas y estándares. Revisar si el flujo será útil y comprensible.
Desarrollo Ejecutar pruebas técnicas contra especificaciones. Confirmar con negocio que el comportamiento construido tiene sentido.
Pruebas finales Ejecutar casos funcionales y de regresión. Realizar pruebas de aceptación o validación de usuario.
Producción Monitorear funcionamiento y errores. Medir si la funcionalidad realmente se usa y aporta valor.

7.13 Errores comunes

Algunos errores frecuentes al trabajar con verificación y validación son:

  • Creer que cumplir requisitos siempre garantiza satisfacer al usuario.
  • No involucrar a usuarios o negocio en la validación.
  • Validar una idea general sin verificar detalles importantes.
  • Automatizar pruebas sin confirmar que prueban el comportamiento correcto.
  • Usar requisitos ambiguos como base de verificación.
  • Confundir una demostración visual con una validación completa.
  • Descubrir tarde que el producto correcto era otro.

La solución no es agregar más pruebas sin criterio, sino mejorar la comunicación, aclarar expectativas y combinar ambas miradas.

7.14 Buenas prácticas

Para aplicar bien verificación y validación conviene:

  • Escribir requisitos claros y verificables.
  • Definir criterios de aceptación antes de desarrollar.
  • Revisar requisitos con testers, desarrolladores y negocio.
  • Diseñar pruebas que comparen resultado esperado y obtenido.
  • Validar prototipos o flujos antes de construir todo.
  • Involucrar usuarios representativos cuando sea posible.
  • Automatizar verificaciones repetibles y estables.
  • Revisar si las funcionalidades entregadas realmente aportan valor.

La combinación de buenas especificaciones, pruebas y feedback real reduce la distancia entre lo construido y lo necesario.

7.15 Qué debes recordar de este tema

  • La verificación pregunta si estamos construyendo correctamente el producto.
  • La validación pregunta si estamos construyendo el producto correcto.
  • Verificar es comparar contra requisitos, diseños, estándares o criterios definidos.
  • Validar es comprobar utilidad, valor y adecuación al usuario o negocio.
  • Un producto puede cumplir la especificación y aun así no resolver la necesidad real.
  • Una idea útil puede fallar si está mal implementada.
  • La automatización es muy útil para verificaciones repetibles, pero no reemplaza completamente la validación humana.
  • Necesitamos ambas miradas para construir software de calidad.

7.16 Conclusión

Verificación y validación son dos perspectivas complementarias. La verificación nos ayuda a comprobar si el producto cumple lo definido. La validación nos ayuda a confirmar si lo definido y construido realmente resuelve el problema correcto.

Un equipo que solo verifica puede entregar software correcto según documentos, pero poco útil. Un equipo que solo valida ideas sin verificar detalles puede entregar una solución valiosa, pero defectuosa. La calidad aparece cuando ambas actividades trabajan juntas.

En el próximo tema estudiaremos requisitos, criterios de aceptación y casos de uso, elementos fundamentales para saber qué debe probarse y cómo definir resultados esperados claros.