3. Diferencia entre error, defecto, falla e incidencia

3.1 Introducción

En Testing de Software es muy común escuchar palabras como error, defecto, falla, bug e incidencia. En conversaciones informales muchas veces se usan como si significaran lo mismo, pero en un contexto profesional conviene distinguirlas.

Usar los términos correctos ayuda a comunicar mejor qué ocurrió, dónde está el problema y qué información necesita el equipo para resolverlo. Un tester que describe bien una situación facilita el análisis, evita confusiones y mejora la velocidad de corrección.

En este tema estudiaremos cada concepto con ejemplos simples y luego veremos cómo se relacionan entre sí.

3.2 La cadena básica del problema

Una forma sencilla de entender la relación entre estos conceptos es pensar en una cadena:

Error humano -> defecto en el producto -> falla durante la ejecución -> incidencia registrada para analizarla.

No siempre se ve la cadena completa con tanta claridad, pero este esquema sirve para comenzar. Una persona puede cometer una equivocación al entender un requisito o al escribir código. Esa equivocación puede quedar incorporada como un defecto. Luego, cuando el sistema se usa bajo ciertas condiciones, ese defecto puede producir una falla visible. Finalmente, alguien puede registrar una incidencia para que el equipo investigue el problema.

3.3 ¿Qué es un error?

Un error es una equivocación humana. Puede ocurrir al analizar un requisito, diseñar una solución, programar, configurar un ambiente, escribir documentación o ejecutar una prueba.

Por ejemplo, si una regla de negocio dice que un cliente premium tiene 15% de descuento y una persona entiende que el descuento es de 10%, esa equivocación es un error. Todavía no estamos hablando del comportamiento del sistema, sino de una interpretación incorrecta realizada por una persona.

Los errores pueden aparecer por muchos motivos:

  • Requisitos ambiguos o incompletos.
  • Falta de comunicación entre áreas.
  • Suposiciones no verificadas.
  • Desconocimiento de una regla de negocio.
  • Prisa por entregar una funcionalidad.
  • Complejidad técnica o lógica difícil de entender.

El testing ayuda a detectar consecuencias de esos errores, pero también puede prevenirlos si participa temprano en la revisión de requisitos y criterios de aceptación.

3.4 ¿Qué es un defecto?

Un defecto es un problema presente en algún artefacto del producto o del proyecto. Puede estar en el código, en una configuración, en una base de datos, en un documento, en un diseño de pantalla o en una especificación.

Si el desarrollador implementa el descuento premium como 10% en lugar de 15%, el código contiene un defecto. Ese defecto puede permanecer oculto hasta que alguien pruebe o use exactamente esa situación.

Algunos ejemplos de defectos son:

  • Una condición mal programada.
  • Un cálculo incorrecto.
  • Un campo obligatorio que no se valida.
  • Una pantalla que muestra un dato equivocado.
  • Una consulta a la base de datos que devuelve registros de más.
  • Una configuración incorrecta de permisos.
  • Un mensaje de error con instrucciones confusas.

El defecto es la causa potencial de un comportamiento incorrecto. Puede existir aunque todavía nadie lo haya observado.

3.5 ¿Qué es una falla?

Una falla es el comportamiento incorrecto que se observa cuando el sistema se ejecuta. Es decir, es la manifestación visible de un defecto.

Siguiendo el ejemplo anterior, si un cliente premium realiza una compra de $1000 y el sistema descuenta $100 en lugar de $150, se observa una falla. El resultado mostrado no coincide con el resultado esperado.

Una falla puede presentarse de muchas maneras:

  • Un resultado numérico incorrecto.
  • Una pantalla que no carga.
  • Una operación que queda bloqueada.
  • Un mensaje de error inesperado.
  • Datos que se guardan de forma incompleta.
  • Una funcionalidad disponible para un usuario sin permiso.
  • Una respuesta demasiado lenta para una operación crítica.

En testing normalmente observamos fallas. A partir de ellas, el equipo investiga cuál es el defecto que las causa.

3.6 ¿Qué es una incidencia?

Una incidencia es un registro formal de una situación que debe ser analizada. Puede corresponder a una falla, a una duda, a una mejora, a un comportamiento inesperado o a una diferencia entre lo observado y lo esperado.

No toda incidencia termina siendo un defecto. A veces el sistema se comporta correctamente, pero la especificación no estaba clara para quien probó. Otras veces se registra una incidencia porque falta información para decidir si el comportamiento es correcto.

Una incidencia bien registrada suele incluir:

  • Título claro y resumido.
  • Ambiente donde ocurrió.
  • Datos usados durante la prueba.
  • Pasos para reproducir el problema.
  • Resultado obtenido.
  • Resultado esperado.
  • Evidencia, como capturas de pantalla, videos o logs.
  • Severidad o impacto estimado.

El objetivo de una incidencia no es culpar a alguien, sino aportar información suficiente para que el equipo pueda analizar y resolver la situación.

3.7 ¿Y qué significa bug?

La palabra bug se usa habitualmente como sinónimo informal de defecto o falla. En muchos equipos se dice "hay un bug" para referirse a cualquier comportamiento incorrecto.

En la práctica diaria no siempre es grave usar la palabra bug, siempre que el equipo se entienda. Sin embargo, para aprender testing conviene conocer los términos más precisos:

  • Si hablamos de una equivocación humana, usamos error.
  • Si hablamos del problema dentro del producto, usamos defecto.
  • Si hablamos del comportamiento incorrecto observado, usamos falla.
  • Si hablamos del registro que se crea para analizarlo, usamos incidencia.

La precisión en el lenguaje mejora la calidad de los reportes y de las conversaciones técnicas.

3.8 Comparación de conceptos

Concepto Qué representa Dónde aparece Ejemplo
Error Equivocación humana. En el análisis, diseño, programación, configuración o prueba. Una persona interpreta mal una regla de descuento.
Defecto Problema incorporado al producto o a un artefacto. En código, documentación, diseño, datos o configuración. El código calcula 10% en lugar de 15%.
Falla Comportamiento incorrecto observable. Durante la ejecución del sistema. El total de la compra se muestra mal.
Incidencia Registro formal de una situación a revisar. En una herramienta de seguimiento o documentación del equipo. Se crea un ticket con pasos, resultado obtenido y resultado esperado.

3.9 Ejemplo completo paso a paso

Veamos un ejemplo en una tienda en línea:

  1. El requisito indica: "Los clientes premium reciben 15% de descuento en productos seleccionados".
  2. Un desarrollador entiende por error que el descuento es de 10%.
  3. El código se implementa con 10% de descuento.
  4. Una tester realiza una compra con un cliente premium y un producto seleccionado.
  5. El sistema muestra $900 como total para una compra de $1000.
  6. El resultado esperado era $850.
  7. La tester registra una incidencia con los pasos y la evidencia.

En este ejemplo:

  • El error fue interpretar mal el porcentaje.
  • El defecto fue dejar el porcentaje incorrecto en el código.
  • La falla fue observar un total de compra incorrecto.
  • La incidencia fue el ticket registrado para que el equipo lo revise.

3.10 Un defecto puede no producir una falla siempre

Un defecto puede existir en el sistema y no manifestarse en todas las ejecuciones. Para que aparezca una falla, deben darse ciertas condiciones.

Por ejemplo, si el defecto está en el cálculo de descuentos para clientes premium, un usuario común podría comprar sin problemas. La falla solo aparecerá cuando se pruebe o use una combinación específica: cliente premium, producto seleccionado y descuento aplicable.

Esto explica por qué algunos defectos permanecen ocultos durante mucho tiempo. No basta con ejecutar una funcionalidad de manera superficial; es necesario pensar en datos, condiciones y variantes relevantes.

3.11 Una falla puede tener distintas causas

No siempre una falla tiene una causa evidente. Un botón que no funciona podría deberse a muchas razones:

  • Un error en el código del frontend.
  • Una validación incorrecta.
  • Un servicio del backend que no responde.
  • Un permiso mal configurado.
  • Un problema de red.
  • Datos inconsistentes en la base de datos.

Por eso, cuando registramos una incidencia, debemos describir lo observado sin inventar la causa si no la conocemos. Es mejor decir "el botón Guardar no responde al presionarlo" que afirmar sin evidencia "hay un error en la base de datos".

3.12 Resultado esperado y resultado obtenido

Una de las habilidades más importantes al reportar problemas es distinguir entre resultado esperado y resultado obtenido.

  • Resultado esperado: lo que el sistema debería hacer según requisitos, reglas de negocio o comportamiento acordado.
  • Resultado obtenido: lo que el sistema hizo realmente durante la prueba.

Ejemplo:

Resultado esperado: para una compra de $1000 con 15% de descuento, el total debe ser $850.
Resultado obtenido: el sistema muestra $900.

Esta comparación permite identificar claramente la diferencia entre lo correcto y lo observado. Sin resultado esperado, una incidencia puede quedar incompleta o ser difícil de analizar.

3.13 No todos los problemas son defectos

Durante una prueba podemos encontrar situaciones que parecen errores, pero luego se descubre que no lo son. Algunos ejemplos:

  • El comportamiento está definido así por una regla de negocio que el tester no conocía.
  • El ambiente de prueba está mal configurado.
  • Los datos usados no son válidos.
  • La documentación está incompleta, pero el sistema funciona según lo acordado.
  • La situación corresponde a una mejora, no a un defecto.

Por eso es correcto registrar una incidencia cuando hay una diferencia o duda relevante. Luego, el equipo la analizará y decidirá si corresponde corregir, aclarar, cerrar o transformar en una mejora.

3.14 Importancia de usar lenguaje preciso

El lenguaje preciso evita discusiones innecesarias. En lugar de decir "todo está mal", conviene describir con claridad:

  • Qué se estaba probando.
  • Qué datos se usaron.
  • Qué pasos se ejecutaron.
  • Qué resultado se esperaba.
  • Qué resultado se obtuvo.
  • En qué ambiente ocurrió.
  • Qué evidencia se adjunta.

Un reporte objetivo mejora la colaboración. El propósito del testing no es señalar culpables, sino ayudar a encontrar y resolver problemas que afectan la calidad del producto.

3.15 Qué debes recordar de este tema

  • Un error es una equivocación humana.
  • Un defecto es un problema incorporado en el producto o en algún artefacto del proyecto.
  • Una falla es el comportamiento incorrecto observado al ejecutar el sistema.
  • Una incidencia es el registro formal de una situación que debe analizarse.
  • La palabra bug se usa mucho, pero puede ser menos precisa.
  • No todo defecto se manifiesta siempre como falla.
  • No toda incidencia termina siendo un defecto.
  • Un buen reporte distingue resultado esperado y resultado obtenido.

3.16 Conclusión

Distinguir entre error, defecto, falla e incidencia permite pensar y comunicar mejor dentro de un proyecto de software. Estos conceptos ayudan a ordenar el análisis: una persona puede cometer un error, ese error puede generar un defecto, el defecto puede provocar una falla y la situación puede registrarse como una incidencia.

Para un estudiante que comienza en testing, lo más importante es aprender a observar con precisión. No basta con decir que algo "no funciona"; debemos explicar qué se esperaba, qué ocurrió, bajo qué condiciones y con qué evidencia.

En el próximo tema estudiaremos el rol del tester, del desarrollador y del equipo de calidad, para comprender cómo colaboran las distintas personas en la construcción de software confiable.