25. Pruebas de regresión, humo y sanidad

25.1 Introducción

Cuando un sistema cambia, no solo debemos probar lo nuevo. También debemos comprobar que lo que antes funcionaba siga funcionando. Para eso existen prácticas como las pruebas de regresión, las pruebas de humo y las pruebas de sanidad.

Estos nombres suelen confundirse, pero tienen objetivos diferentes. Las pruebas de humo revisan rápidamente si una versión es mínimamente testeable. Las pruebas de sanidad validan de forma acotada que un cambio específico tenga sentido. Las pruebas de regresión comprueban que cambios nuevos no hayan roto funcionalidades existentes.

En este tema veremos cuándo usar cada una, con ejemplos prácticos.

25.2 ¿Qué es una regresión?

Una regresión ocurre cuando una funcionalidad que antes funcionaba deja de funcionar después de un cambio.

Ejemplos:

  • Se modifica el login y deja de funcionar recuperación de contraseña.
  • Se agrega una promoción y se rompe el cálculo de descuentos anteriores.
  • Se actualiza una biblioteca y una pantalla deja de cargar.
  • Se corrige un defecto de stock y se rompe la confirmación de compra.
  • Se cambia una API y una aplicación cliente deja de consumirla correctamente.

Las regresiones son comunes porque los sistemas tienen dependencias. Un cambio en una parte puede afectar otra zona aparentemente no relacionada.

25.3 ¿Qué son las pruebas de regresión?

Las pruebas de regresión son pruebas que se ejecutan para confirmar que funcionalidades existentes siguen funcionando después de cambios.

Se ejecutan después de:

  • Agregar una nueva funcionalidad.
  • Corregir un defecto.
  • Refactorizar código.
  • Actualizar dependencias.
  • Cambiar configuraciones.
  • Integrar módulos.
  • Preparar una nueva versión.

Su objetivo no es probar todo desde cero, sino verificar que lo importante no se rompió.

25.4 Ejemplo de regresión

Supongamos que se corrige un defecto en el cálculo de descuentos para clientes premium. Luego de la corrección, conviene ejecutar pruebas de regresión relacionadas:

  • Compra sin descuento.
  • Compra con descuento premium.
  • Compra con promoción general.
  • Compra con cupón.
  • Cálculo de impuestos.
  • Total final mostrado al usuario.
  • Total enviado al módulo de pagos.

No basta con verificar que el defecto original fue corregido. También debemos revisar que no se rompieron reglas cercanas.

25.5 Alcance de una regresión

La regresión puede tener distinto alcance:

Tipo de regresión Alcance Ejemplo
Regresión puntual Casos directamente relacionados con un cambio. Revisar reglas de descuento luego de modificar descuentos.
Regresión por módulo Casos de un área completa del sistema. Probar todo el módulo de compras.
Regresión crítica Flujos principales del producto. Login, búsqueda, compra y pago.
Regresión completa Gran parte o toda la suite de pruebas existente. Validación amplia antes de una versión mayor.

El alcance se define según riesgo, tiempo disponible e impacto del cambio.

25.6 ¿Qué son las pruebas de humo?

Las pruebas de humo, también llamadas smoke testing, son un conjunto breve de pruebas básicas que se ejecutan para comprobar si una versión es suficientemente estable para continuar probando.

Responden una pregunta simple:

¿La versión está lo bastante estable como para invertir tiempo en pruebas más profundas?

Si una prueba de humo falla en una funcionalidad básica, quizá no tenga sentido ejecutar una suite larga. Primero debe corregirse el bloqueo principal.

25.7 Ejemplos de pruebas de humo

En una aplicación web, una suite de humo podría incluir:

  • La aplicación carga correctamente.
  • El usuario puede iniciar sesión.
  • La pantalla principal se muestra.
  • Se puede acceder al menú principal.
  • Una búsqueda básica funciona.
  • Se puede crear un registro simple.
  • Se puede cerrar sesión.

No se busca cubrir todos los detalles. Se busca confirmar que las funciones mínimas están disponibles.

25.8 Cuándo ejecutar pruebas de humo

Las pruebas de humo suelen ejecutarse:

  • Después de desplegar una nueva versión en QA.
  • Antes de iniciar una ronda completa de pruebas.
  • Después de un despliegue en preproducción.
  • Después de un despliegue en producción, con cuidado y alcance controlado.
  • Después de cambios grandes de configuración o infraestructura.

Funcionan como una verificación rápida de salud básica del sistema.

25.9 ¿Qué son las pruebas de sanidad?

Las pruebas de sanidad, también llamadas sanity testing, son pruebas acotadas que verifican si un cambio específico parece funcionar correctamente antes de avanzar con pruebas más amplias.

Responden una pregunta como:

¿La corrección o cambio específico tiene sentido y funciona de manera básica?

Son más enfocadas que las pruebas de humo. Mientras humo revisa estabilidad general, sanidad revisa un cambio concreto.

25.10 Ejemplo de pruebas de sanidad

Supongamos que se corrigió un defecto donde el sistema permitía reutilizar un enlace de recuperación de contraseña.

Una prueba de sanidad podría verificar:

  • Solicitar recuperación de contraseña.
  • Usar el enlace una vez para cambiar la contraseña.
  • Intentar usar el mismo enlace nuevamente.
  • Confirmar que el sistema rechaza el segundo uso.

Si esta validación básica falla, no tiene sentido ejecutar una regresión amplia de recuperación de contraseña hasta corregir el problema.

25.11 Comparación entre humo, sanidad y regresión

Tipo Objetivo Alcance Momento típico
Humo Confirmar estabilidad básica de una versión. Breve y general. Después de un despliegue.
Sanidad Confirmar que un cambio específico funciona de forma básica. Breve y enfocado. Después de una corrección o cambio puntual.
Regresión Confirmar que lo existente no se rompió. Variable: puntual, módulo, crítica o completa. Después de cambios, correcciones o antes de publicar.

25.12 Orden habitual de ejecución

Un flujo posible después de desplegar una versión en QA sería:

  1. Ejecutar pruebas de humo para confirmar que la versión es testeable.
  2. Ejecutar pruebas de sanidad sobre cambios o correcciones específicas.
  3. Ejecutar pruebas funcionales detalladas sobre lo nuevo.
  4. Ejecutar regresión según impacto y riesgo.
  5. Reprobar defectos corregidos.
  6. Informar resultados y riesgos pendientes.

El orden puede variar, pero la idea es evitar invertir mucho tiempo en pruebas profundas si la versión falla en puntos básicos.

25.13 Selección de casos para regresión

Como no siempre se puede ejecutar toda la suite, conviene seleccionar casos de regresión según:

  • Funcionalidades críticas para el negocio.
  • Áreas modificadas recientemente.
  • Flujos relacionados con el cambio.
  • Historial de defectos.
  • Casos automatizados disponibles.
  • Integraciones sensibles.
  • Permisos, pagos, datos o seguridad.
  • Funcionalidades más usadas por los usuarios.

La regresión debe ser proporcional al riesgo del cambio.

25.14 Regresión manual y automatizada

La regresión puede ejecutarse manualmente o de forma automatizada.

La automatización es muy útil para regresiones repetitivas, estables y críticas. Por ejemplo:

  • Inicio de sesión.
  • APIs principales.
  • Cálculos de negocio.
  • Flujos de compra estables.
  • Pruebas unitarias de reglas importantes.

La regresión manual sigue siendo útil para cambios recientes, usabilidad, exploración, validaciones visuales o funcionalidades que todavía cambian con frecuencia.

25.15 Regresión después de corregir defectos

Cuando se corrige un defecto, se debe ejecutar retest del defecto original. Pero además puede requerirse regresión.

Ejemplo: se corrige un defecto en permisos administrativos. Además de verificar el caso original, conviene probar:

  • Usuario administrador con acceso permitido.
  • Usuario vendedor con acceso rechazado.
  • Usuario cliente con acceso rechazado.
  • Usuario sin sesión.
  • Otras pantallas que usan la misma validación de permisos.

La corrección puede haber modificado lógica compartida, por eso conviene revisar zonas relacionadas.

25.16 Ejemplo completo: nueva versión

Supongamos que se despliega una nueva versión de una tienda en línea con cambios en promociones y correcciones en pagos.

Tipo de prueba Casos posibles
Humo Cargar aplicación, iniciar sesión, buscar producto, acceder al carrito.
Sanidad Verificar que la nueva promoción se aplique en un caso básico y que el pago corregido no falle.
Regresión Probar descuentos anteriores, compra sin promoción, pago aprobado, pago rechazado, stock y confirmación de pedido.

La combinación ayuda a decidir si la versión puede seguir avanzando.

25.17 Errores comunes

Al trabajar con regresión, humo y sanidad, algunos errores frecuentes son:

  • Confundir humo con regresión completa.
  • Usar una suite de humo demasiado grande.
  • Ejecutar regresión amplia sin validar primero que la versión es estable.
  • No hacer regresión después de cambios riesgosos.
  • Probar solo el defecto corregido y no áreas relacionadas.
  • No actualizar la suite de regresión cuando cambia el sistema.
  • Automatizar casos inestables de regresión.
  • No registrar riesgos cuando se reduce el alcance de regresión.

25.18 Buenas prácticas

Para aplicar bien estas pruebas conviene:

  • Mantener una suite de humo breve y crítica.
  • Usar sanidad para validar cambios puntuales antes de profundizar.
  • Definir regresión según impacto del cambio.
  • Automatizar regresiones estables y repetitivas.
  • Actualizar suites cuando aparecen defectos importantes.
  • Incluir casos críticos de negocio en regresión.
  • No depender solo de pruebas manuales para regresiones frecuentes.
  • Documentar qué no se ejecutó y qué riesgo queda pendiente.

25.19 Qué debes recordar de este tema

  • Una regresión ocurre cuando algo que funcionaba deja de funcionar después de un cambio.
  • Las pruebas de regresión verifican que funcionalidades existentes sigan funcionando.
  • Las pruebas de humo confirman que una versión es mínimamente estable para probar.
  • Las pruebas de sanidad validan de forma acotada un cambio o corrección específica.
  • Humo es breve y general; sanidad es breve y enfocada; regresión puede tener distintos alcances.
  • La regresión debe seleccionarse según riesgo, impacto y cambios realizados.
  • La automatización es muy útil para regresión repetitiva y estable.
  • Después de corregir un defecto, puede hacer falta retest y regresión.

25.20 Conclusión

Las pruebas de humo, sanidad y regresión ayudan a controlar el riesgo cuando el software cambia. Humo permite saber si una versión merece pruebas más profundas. Sanidad permite validar rápidamente un cambio puntual. Regresión permite comprobar que lo existente no se rompió.

Usarlas correctamente evita pérdidas de tiempo y mejora la confianza en cada entrega. La clave está en elegir el alcance adecuado según riesgo, impacto y estabilidad del producto.

En el próximo tema estudiaremos pruebas exploratorias y pensamiento crítico, una práctica esencial para descubrir problemas que los casos documentados pueden no cubrir.