29. Riesgos comunes al probar software

29.1 Introducción

El testing busca reducir riesgos, pero el propio proceso de pruebas también tiene riesgos. Podemos probar con requisitos incompletos, datos incorrectos, ambientes inestables, poco tiempo o una estrategia mal enfocada.

Conocer estos riesgos ayuda a prevenirlos o, al menos, a comunicarlos claramente. Un tester no solo ejecuta pruebas; también debe identificar qué podría afectar la confiabilidad de los resultados.

En este tema estudiaremos riesgos comunes al probar software y buenas prácticas para manejarlos.

29.2 Riesgo de requisitos ambiguos

Si los requisitos no son claros, las pruebas pueden basarse en interpretaciones incorrectas. Esto genera discusiones, defectos dudosos y retrabajo.

Ejemplos de ambigüedad:

  • "El sistema debe cargar rápido".
  • "El mensaje debe ser adecuado".
  • "El usuario puede editar datos importantes".
  • "Se debe aplicar descuento según corresponda".

Para reducir este riesgo conviene pedir criterios de aceptación, ejemplos concretos, reglas de negocio claras y resultados esperados verificables.

29.3 Riesgo de probar tarde

Cuando el testing comienza al final, los defectos se descubren tarde. En ese momento corregir puede ser más costoso, y el equipo tiene menos margen para ajustar diseño, requisitos o arquitectura.

Consecuencias posibles:

  • Correcciones urgentes.
  • Menos tiempo para regresión.
  • Defectos aceptados por falta de tiempo.
  • Mayor presión sobre testers y desarrolladores.
  • Publicaciones con riesgos no evaluados.

La prevención consiste en involucrar testing desde requisitos, diseño y desarrollo, no solo al final.

29.4 Riesgo de ambiente inestable

Un ambiente inestable puede hacer que las pruebas fallen por razones externas al producto que se quiere evaluar.

Ejemplos:

  • El ambiente se cae durante la ejecución.
  • La versión desplegada no es la esperada.
  • Los servicios externos no responden.
  • La base de datos se reinicia sin aviso.
  • Las configuraciones cambian durante las pruebas.
  • El ambiente tiene datos mezclados o inconsistentes.

Para reducir este riesgo conviene controlar versiones, coordinar despliegues, documentar configuraciones y comunicar ventanas de mantenimiento.

29.5 Riesgo de datos de prueba incorrectos

Los datos incorrectos pueden bloquear pruebas o generar resultados engañosos.

Ejemplos:

  • Usuario de prueba bloqueado cuando debería estar activo.
  • Producto sin stock para una prueba de compra exitosa.
  • Promoción vencida cuando debería estar activa.
  • Orden en estado incorrecto.
  • Archivo de prueba con formato distinto al esperado.

La preparación y limpieza de datos son parte esencial del testing. Sin datos confiables, los resultados pierden valor.

29.6 Riesgo de cobertura insuficiente

La cobertura insuficiente ocurre cuando quedan funcionalidades, requisitos, riesgos o combinaciones importantes sin probar.

Puede ocurrir por:

  • Falta de tiempo.
  • Plan de pruebas incompleto.
  • Requisitos sin trazabilidad.
  • No considerar casos negativos o borde.
  • Probar solo flujos felices.
  • No ejecutar regresión suficiente.

Para reducirlo, conviene priorizar por riesgo, usar técnicas de diseño de pruebas y mantener trazabilidad entre requisitos, pruebas y defectos.

29.7 Riesgo de falsa confianza

La falsa confianza aparece cuando el equipo cree que el producto está más probado o más estable de lo que realmente está.

Ejemplos:

  • Muchos casos aprobados, pero ninguno cubre pagos.
  • Alta cobertura de código, pero pocas verificaciones reales de resultados.
  • Suite automatizada que pasa, pero está desactualizada.
  • Pruebas ejecutadas en un ambiente muy diferente a producción.
  • Defectos críticos no detectados porque se probaron solo casos positivos.

La mejor defensa es comunicar no solo qué se probó, sino también qué no se probó y qué riesgos permanecen.

29.8 Riesgo de automatización mal enfocada

Automatizar pruebas puede aportar mucho valor, pero también puede generar problemas si se hace sin estrategia.

Riesgos comunes:

  • Automatizar casos inestables.
  • Automatizar pruebas de bajo valor.
  • No mantener la suite automatizada.
  • Depender solo de pruebas de interfaz lentas y frágiles.
  • No analizar fallas automáticas.
  • Creer que automatizar reemplaza la exploración humana.

La automatización debe enfocarse en pruebas repetibles, estables y relevantes para el riesgo.

29.9 Riesgo de no probar regresión

Cada cambio puede romper algo que antes funcionaba. Si no se ejecuta regresión suficiente, las fallas pueden llegar a producción.

Ejemplos de situaciones riesgosas:

  • Corrección urgente sin pruebas relacionadas.
  • Cambio en lógica compartida.
  • Actualización de dependencia importante.
  • Refactoring sin pruebas automatizadas.
  • Modificación de permisos o seguridad.

La regresión debe planificarse según impacto del cambio, no ejecutarse siempre igual ni omitirse por completo.

29.10 Riesgo de mala comunicación

El testing depende mucho de la comunicación. Un defecto mal reportado, un requisito no aclarado o un riesgo no comunicado pueden afectar todo el proceso.

Problemas frecuentes:

  • Defectos sin pasos para reproducir.
  • Resultados dudosos no consultados.
  • Cambios de alcance no informados.
  • Ambiente actualizado sin avisar.
  • Correcciones entregadas sin explicación.
  • Riesgos pendientes no visibles para quienes deciden.

La comunicación clara reduce retrabajo y mejora decisiones.

29.11 Riesgo de medir mal

Las métricas pueden ayudar, pero también pueden engañar si se usan sin contexto.

Ejemplos:

  • Medir calidad por cantidad de casos ejecutados.
  • Comparar testers por cantidad de defectos encontrados.
  • Asumir que alta cobertura de código garantiza calidad.
  • Ignorar severidad de defectos.
  • No distinguir casos fallidos de bloqueados.

Las métricas deben ayudar a decidir, no reemplazar el análisis profesional.

29.12 Riesgo de no involucrar al negocio

Un sistema puede pasar muchas pruebas técnicas y aun así no resolver la necesidad real. Si negocio o usuarios no participan, puede validarse un producto incorrecto.

Señales de este riesgo:

  • Criterios de aceptación definidos sin usuarios o negocio.
  • Pruebas centradas solo en pantallas, no en procesos reales.
  • Reportes que no sirven para tomar decisiones.
  • Flujos técnicamente correctos pero poco útiles.
  • Reglas de negocio interpretadas por suposición.

La validación con representantes adecuados reduce este riesgo.

29.13 Riesgo de dependencias externas

Muchos sistemas dependen de servicios externos: pagos, correo, autenticación, facturación, mapas, mensajería o APIs de terceros.

Riesgos:

  • El servicio externo no está disponible durante las pruebas.
  • El ambiente sandbox se comporta distinto a producción.
  • Las credenciales vencen o cambian.
  • Hay límites de uso o costos por prueba.
  • No se pueden simular errores importantes.
  • Las respuestas del proveedor cambian sin aviso.

Conviene planificar cómo se probarán escenarios exitosos, fallidos, lentos y no disponibles.

29.14 Riesgo de seguridad no considerado

A veces las pruebas se enfocan solo en funcionalidad visible y olvidan permisos, datos sensibles y accesos indebidos.

Ejemplos:

  • Usuarios sin permiso acceden a funciones administrativas.
  • Datos privados aparecen en respuestas o mensajes de error.
  • Validaciones solo existen en frontend.
  • Sesiones no expiran correctamente.
  • Archivos cargados no se validan adecuadamente.

Aunque la seguridad se profundice en cursos específicos, una introducción al testing debe considerar estos riesgos básicos.

29.15 Riesgo de sesgo del tester

Todos podemos caer en sesgos. Un tester puede probar siempre los mismos caminos, confiar demasiado en su experiencia o evitar zonas que conoce menos.

Ejemplos:

  • Probar solo el flujo que ya conoce.
  • Asumir que una funcionalidad simple no fallará.
  • No probar datos raros porque parecen improbables.
  • Confiar en que "esto ya se probó antes".
  • Buscar solo defectos que espera encontrar.

Las técnicas de diseño, revisión entre pares y pruebas exploratorias con misiones ayudan a reducir sesgos.

29.16 Riesgo de documentación desactualizada

Si los casos de prueba, requisitos o matrices de trazabilidad no se actualizan, el equipo puede tomar decisiones basadas en información falsa.

Consecuencias:

  • Ejecutar casos que ya no aplican.
  • Omitir pruebas de reglas nuevas.
  • Reportar defectos sobre comportamientos modificados.
  • Medir cobertura incorrectamente.
  • Perder tiempo con datos o pasos obsoletos.

La documentación debe ser mantenible. Si es demasiado pesada, probablemente se abandone.

29.17 Matriz resumida de riesgos

Riesgo Consecuencia Mitigación
Requisitos ambiguos Pruebas y defectos discutibles. Criterios de aceptación claros.
Ambiente inestable Bloqueos y falsos defectos. Control de versiones, datos y configuración.
Cobertura insuficiente Riesgos críticos sin probar. Priorización por riesgo y trazabilidad.
Falsa confianza Decisiones basadas en señales incompletas. Comunicar qué se probó, qué no y riesgos pendientes.
Automatización mal enfocada Suite frágil y costosa. Automatizar casos estables y valiosos.

29.18 Cómo comunicar riesgos

Comunicar riesgos es parte del trabajo de testing. No basta con decir "faltan pruebas"; hay que explicar impacto.

Ejemplo poco útil:

No se probó todo.

Ejemplo más útil:

No se ejecutaron pruebas de pago rechazado porque el sandbox no estuvo disponible. Riesgo: podrían existir errores en el manejo de pagos fallidos antes de publicar.

Una buena comunicación permite tomar decisiones conscientes.

29.19 Buenas prácticas

Para manejar riesgos al probar conviene:

  • Revisar requisitos antes de diseñar pruebas.
  • Priorizar por impacto y probabilidad.
  • Preparar datos y ambientes con anticipación.
  • Usar técnicas de diseño de pruebas.
  • Ejecutar regresión según impacto de cambios.
  • Combinar pruebas documentadas y exploratorias.
  • Comunicar riesgos pendientes explícitamente.
  • Mantener documentación y trazabilidad actualizadas.
  • Interpretar métricas con contexto.

29.20 Qué debes recordar de este tema

  • El testing reduce riesgos, pero el proceso de pruebas también tiene riesgos.
  • Requisitos ambiguos generan pruebas ambiguas.
  • Ambientes y datos inestables reducen la confianza en los resultados.
  • La cobertura insuficiente puede dejar riesgos críticos sin evaluar.
  • Las métricas pueden engañar si no tienen contexto.
  • La automatización mal enfocada puede consumir mucho mantenimiento.
  • Los riesgos deben comunicarse con impacto y causa.
  • Una buena estrategia de testing identifica, prioriza y mitiga riesgos.

29.21 Conclusión

Probar software no elimina todos los riesgos, pero ayuda a conocerlos y reducirlos. Para que el testing sea útil, también debemos cuidar los riesgos del propio proceso: requisitos confusos, ambientes inestables, datos incorrectos, mala comunicación, cobertura insuficiente y falsa confianza.

Un tester aporta valor cuando no solo ejecuta casos, sino que identifica qué puede afectar la calidad de los resultados y lo comunica de manera clara.

En el próximo tema estudiaremos herramientas habituales en el trabajo de testing, entendiendo para qué sirven y cómo elegirlas según el problema a resolver.