2. Por qué probamos software: calidad, riesgo y confianza

2.1 Introducción

Probamos software porque las aplicaciones forman parte de actividades reales: comprar, vender, estudiar, comunicarse, administrar datos, reservar turnos, pagar servicios, controlar procesos o tomar decisiones. Cuando un sistema falla, el problema no queda limitado al código; puede afectar a personas, dinero, tiempo, reputación y confianza.

El testing ayuda a descubrir defectos antes de que generen consecuencias importantes. También aporta información para decidir si una versión está lista, si necesita más correcciones o si conviene asumir ciertos riesgos de manera consciente.

En este tema veremos tres ideas centrales: calidad, riesgo y confianza. Estas ideas explican por qué el testing es una actividad necesaria en proyectos pequeños, medianos y grandes.

2.2 Probar para mejorar la calidad

La calidad de software no significa solamente que un programa "funcione". Un sistema puede ejecutar una operación y, aun así, tener problemas de calidad: puede ser lento, confuso, inseguro, difícil de mantener o fallar con datos no previstos.

Cuando probamos, observamos distintos aspectos del producto:

  • Corrección: si el sistema hace lo que debe hacer.
  • Confiabilidad: si se comporta de forma estable en distintas situaciones.
  • Usabilidad: si una persona puede utilizarlo sin confusión innecesaria.
  • Rendimiento: si responde en tiempos aceptables.
  • Seguridad: si protege datos y operaciones sensibles.
  • Compatibilidad: si funciona en los ambientes esperados.
  • Mantenibilidad: si puede modificarse sin romper fácilmente otras partes.

El testing no crea calidad por sí solo, pero ayuda a revelar problemas que impiden alcanzarla. Cuando esos problemas se corrigen, el producto mejora.

2.3 Probar para reducir riesgos

Un riesgo es la posibilidad de que ocurra un problema y genere un impacto negativo. En software, el riesgo aparece cuando una falla puede producir consecuencias importantes.

Por ejemplo, no tiene el mismo impacto un error de color en un botón que un error en el cálculo del total de una factura. Ambos pueden ser defectos, pero el riesgo asociado es diferente.

Riesgo = probabilidad de que ocurra un problema + impacto que tendría si ocurre.

El testing ayuda a reducir riesgos porque permite encontrar problemas antes de publicar el sistema. También ayuda a identificar qué partes deben probarse con mayor profundidad.

2.4 Ejemplos de riesgos en software

Los riesgos dependen del tipo de aplicación. Algunos ejemplos comunes son:

  • Riesgo económico: un sistema cobra de menos, cobra de más o calcula mal impuestos.
  • Riesgo operativo: una empresa no puede registrar ventas, entregar pedidos o consultar información crítica.
  • Riesgo de seguridad: usuarios no autorizados acceden a datos privados.
  • Riesgo legal: el sistema incumple una norma, contrato o política de protección de datos.
  • Riesgo de reputación: los usuarios pierden confianza por fallas visibles o frecuentes.
  • Riesgo de experiencia de usuario: una pantalla confusa impide completar una tarea simple.
  • Riesgo técnico: una modificación rompe funcionalidades que ya estaban en producción.

Un buen proceso de testing no trata todos los riesgos como iguales. Prioriza lo más importante, lo más usado, lo más reciente y lo que tendría mayor impacto si falla.

2.5 Probar para generar confianza

Antes de entregar una versión, el equipo necesita confianza. No una confianza basada en suposiciones, sino en evidencia. El testing aporta esa evidencia mediante casos ejecutados, defectos encontrados, resultados registrados y riesgos conocidos.

La confianza no significa certeza absoluta. Significa que, con la información disponible, el equipo puede tomar una decisión razonable. Por ejemplo:

  • Publicar la versión porque los flujos críticos pasaron correctamente.
  • Postergar la entrega porque existe un defecto grave.
  • Publicar con una limitación conocida porque el riesgo es bajo y está documentado.
  • Hacer más pruebas en una zona del sistema que cambió mucho.

En este sentido, el testing no solo encuentra errores: ayuda a decidir.

2.6 Costo de encontrar defectos tarde

Un defecto encontrado temprano suele ser más barato de corregir que un defecto encontrado tarde. Si un requisito está mal entendido y se detecta antes de programar, puede corregirse con una conversación. Si se detecta luego de construir muchas pantallas, servicios y pruebas, el costo aumenta.

Cuando un defecto llega a producción, el costo puede ser aún mayor:

  • Hay que investigar el problema con usuarios afectados.
  • Puede ser necesario corregir datos ya guardados.
  • Se debe preparar una nueva versión con urgencia.
  • El equipo puede interrumpir otras tareas planificadas.
  • La organización puede perder ventas, tiempo o reputación.

Por eso una de las metas del testing es detectar problemas lo antes posible, especialmente los que tienen mayor impacto.

2.7 El testing como prevención

A veces se piensa que el testing solo sirve después de programar. Sin embargo, también puede prevenir defectos antes de que existan en el código.

Por ejemplo, cuando una persona con mirada de testing revisa un requisito, puede detectar preguntas importantes:

  • ¿Qué debe ocurrir si el usuario ingresa un dato vacío?
  • ¿Cuál es el valor mínimo y máximo permitido?
  • ¿Qué mensaje debe mostrarse si una operación falla?
  • ¿Qué permisos necesita cada tipo de usuario?
  • ¿Qué pasa si el servicio externo no responde?
  • ¿Cómo se debe comportar el sistema con datos duplicados?

Estas preguntas pueden evitar ambigüedades. Cuanto más claro sea el comportamiento esperado, menos espacio habrá para interpretaciones incorrectas.

2.8 Probar desde la perspectiva del usuario

Un sistema puede estar técnicamente bien construido y aun así no resolver correctamente la necesidad del usuario. Por eso el testing también debe mirar el producto desde la experiencia real de uso.

Algunas preguntas útiles son:

  • ¿El usuario entiende qué debe hacer?
  • ¿El sistema muestra mensajes claros?
  • ¿La información importante está visible?
  • ¿El flujo permite completar la tarea sin pasos innecesarios?
  • ¿Los errores ayudan a corregir el problema?
  • ¿La funcionalidad responde a la necesidad original?

Probar desde la perspectiva del usuario no reemplaza las pruebas técnicas, pero agrega una mirada fundamental: comprobar si el software es útil en la práctica.

2.9 Probar cambios y evitar regresiones

Una regresión ocurre cuando algo que antes funcionaba deja de funcionar después de un cambio. Esto puede pasar al corregir un defecto, agregar una funcionalidad, actualizar una biblioteca o modificar una configuración.

Por ejemplo, un equipo cambia la forma de calcular descuentos para una promoción nueva. La promoción funciona, pero se rompe el cálculo de descuentos antiguos. Si no se prueban los casos anteriores, el defecto puede llegar a producción.

Por eso las pruebas no solo se ejecutan sobre funcionalidades nuevas. También se repiten sobre funcionalidades existentes para confirmar que el sistema sigue comportándose correctamente.

2.10 Probar para documentar conocimiento

Los casos de prueba, cuando están bien escritos, funcionan como una forma de documentación. Describen cómo se espera que el sistema se comporte ante distintas condiciones.

Esta documentación ayuda a varias personas:

  • A testers nuevos que necesitan entender el producto.
  • A desarrolladores que quieren conocer reglas de negocio.
  • A analistas que necesitan revisar criterios de aceptación.
  • A responsables del proyecto que quieren conocer el estado de una versión.
  • Al equipo completo cuando se debe repetir una validación importante.

Una prueba clara no solo sirve en el momento de ejecutarla. También conserva conocimiento útil para futuras versiones.

2.11 Consecuencias de no probar adecuadamente

La falta de pruebas puede generar consecuencias visibles y costosas. Algunas de las más comunes son:

  • Defectos frecuentes en producción.
  • Usuarios que pierden confianza en el sistema.
  • Correcciones urgentes y desordenadas.
  • Mayor tiempo dedicado a investigar problemas.
  • Miedo a modificar el código porque no se sabe qué puede romperse.
  • Decisiones tomadas sin información suficiente.
  • Retrabajo por requisitos mal interpretados.

No probar puede parecer más rápido al principio, pero suele aumentar el costo y la incertidumbre a medida que el sistema crece.

2.12 ¿Qué significa probar bien?

Probar bien no significa ejecutar una cantidad enorme de casos sin pensar. Significa elegir pruebas útiles, observar con atención y comunicar los resultados de forma clara.

Una buena actividad de testing tiene varias características:

  • Se basa en requisitos, riesgos y comportamiento esperado.
  • Incluye casos normales, casos alternativos y casos límite.
  • Registra resultados de manera comprensible.
  • Reporta defectos con información suficiente para reproducirlos.
  • Prioriza lo importante cuando el tiempo es limitado.
  • Combina criterio humano con herramientas cuando corresponde.

La calidad del testing depende más del análisis que de la cantidad de pasos ejecutados.

2.13 Calidad, riesgo y confianza en una decisión

Imaginemos que un equipo debe decidir si publica una nueva versión de una tienda en línea. El testing puede aportar información como esta:

Aspecto evaluado Información obtenida Impacto en la decisión
Calidad El registro, la búsqueda de productos y el pago funcionan correctamente. Aumenta la confianza en los flujos principales.
Riesgo Se detectó un error menor en el texto de una pantalla administrativa. Puede publicarse si el equipo acepta ese riesgo.
Confianza Las pruebas críticas fueron ejecutadas y documentadas. La decisión se toma con evidencia, no solo con intuición.

Este ejemplo muestra que el testing no entrega únicamente una respuesta de "sí" o "no". Entrega información para evaluar el estado real del producto.

2.14 Qué debes recordar de este tema

  • Probamos software para mejorar la calidad, reducir riesgos y generar confianza.
  • La calidad incluye corrección, usabilidad, rendimiento, seguridad, estabilidad y otros atributos.
  • Un riesgo combina probabilidad de falla e impacto si esa falla ocurre.
  • No todos los defectos tienen la misma importancia.
  • Detectar defectos temprano suele ser menos costoso que encontrarlos tarde.
  • Las pruebas también ayudan a prevenir errores al aclarar requisitos y comportamientos esperados.
  • El testing aporta evidencia para tomar decisiones sobre una versión.

2.15 Conclusión

Probamos software porque desarrollar aplicaciones implica incertidumbre. Puede haber requisitos ambiguos, errores humanos, combinaciones no previstas, cambios que rompen funcionalidades existentes y riesgos que no siempre son visibles al principio.

El testing reduce esa incertidumbre. No elimina todos los defectos ni garantiza perfección, pero permite conocer mejor el producto, descubrir problemas relevantes y tomar decisiones con más información.

En el próximo tema estudiaremos con mayor precisión la diferencia entre error, defecto, falla e incidencia, términos fundamentales para comunicar problemas de manera profesional.