Pruebas Cruciales: Sanity y Regression Test

  • Autor de la entrada:
  • Categoría de la entrada:ISTQB

El sanity testing y el regression testing son aspectos cruciales en el ciclo de vida del desarrollo de software, y entender sus diferencias y roles es esencial para garantizar la calidad del producto final. El sanity testing, un subconjunto de las pruebas de regresión, se lleva a cabo con el propósito de asegurar que los cambios en el código funcionen correctamente. Este tipo de prueba se considera una parada clave antes de proceder con las pruebas completas de construcción. Su objetivo principal radica en validar la funcionalidad general de la aplicación, sin sumergirse en pruebas detalladas. Por lo general, se ejecuta en compilaciones donde se requiere un despliegue inmediato, especialmente cuando se trata de corregir errores críticos antes de la implementación en producción. En este artículo exploré más a fondo el papel del sanity testing en la validación rápida de cambios, contrastándolo con el regression testing, que se centra en garantizar que las modificaciones no afecten negativamente a las funcionalidades existentes.

Explorando la Importancia del Sanity Testing en el Desarrollo

Sanity Testing y Regression Testing desempeñan un papel esencial en garantizar la calidad del producto final, ese incremento que se entrega/muestra/comparte con el Product Owner y/o Key User’s. Mientras el Smoke Testing verifica la «estabilidad», el Sanity Testing se enfoca en validar la «racionalidad» del sistema. Esta diferenciación es clave tenerla presente ya que resalta la importancia de comprender y aplicar adecuadamente estas prácticas en el ciclo de vida del desarrollo de software.

El Sanity Testing se presenta como un subconjunto de las pruebas de regresión, teniendo como foco asegurar que los cambios de código funcionen correctamente. Este tipo de prueba se convierte en una instancia esencial antes de proceder con las pruebas más extensas (funcionales y no funcionales por ejemplo), pudiendo indicar rápidamente si el desarrollo está lista para avanzar. El Sanity Testing valida la funcionalidad general de la aplicación, centrándose en nuevas funcionalidades y correcciones de errores críticos.

Consideraciones acerca del Sanity Testing

En las primeras etapas del desarrollo, las pruebas de sanidad desempeñan un papel super importante.

A menudo consideradas como un subconjunto ágil de las pruebas de regresión, estas pruebas se llevan a cabo de manera no programada y se centran en funcionalidades específicas a la vez.

En lugar de depender únicamente de herramientas automatizadas, podemos realizar estas pruebas de manera exhaustiva para ofrecer una foto rápida del estado actual del software que estamos desarrollando y que debemos entregar.

Estrategia de las Pruebas de Sanidad

Objetivos Clave del Sanity Testing

  • Validando el Caso de Uso Principal: ¿Funciona correctamente en el caso de uso principal del producto?
  • Chequeando Problemas de Funciones Orientadas al Cliente: ¿Las funciones orientadas al cliente funcionan sin problemas?
  • Chequeando el estado de lo más importante para el Funcionamiento Básico: ¿Funcionan correctamente las funciones más importantes para el funcionamiento básico?
  • Chequeando el comportamiento de Funciones Más Utilizadas: ¿Las funciones más utilizadas por los usuarios se comportan como se espera?
  • Chequeando el cumplimiento de los compromisosen la Versión a entregar: ¿Funcionan según lo previsto las funciones prometidas en la versión específica?
  • Detección de Problemas Críticos: ¿No hay ningún problema crítico que pueda inhabilite la aplicación?

Estos objetivos no sólo ofrecen una visión profunda de la salud del software, sino que también sirven como guía para tomar decisiones informadas en las fases posteriores del desarrollo.

Otros momentos para hacer foco

  • Después de cambios en el código: Detectar posibles problemas después de cambios incrementales, no importa el «tamaño» de los mismos, son cambios al fin.
  • Chequeando Problemas de Funciones Orientadas al Cliente: ¿Las funciones orientadas al cliente funcionan sin problemas?
  • Chequeando el estado de lo más importante para el Funcionamiento Básico: ¿Funcionan correctamente las funciones más importantes para el funcionamiento básico?
  • Chequeando el comportamiento de Funciones Más Utilizadas: ¿Las funciones más utilizadas por los usuarios se comportan como se espera?
  • Chequeando el cumplimiento de los compromisos en la Versión a entregar: ¿Funcionan según lo previsto las funciones prometidas en la versión específica?
  • Detección de Problemas Críticos: ¿No hay ningún problema crítico que pueda inhabilite la aplicación?

Estos objetivos no sólo ofrecen una visión profunda de la salud del software, sino que también sirven como guía para tomar decisiones informadas en las fases posteriores del desarrollo.

Checklist

  • Entender el producto de manera sistemática.
  • Crear un modelo mental para identificar áreas que requieren pruebas.
  • Agrupar usuarios por comportamiento para entender patrones de uso.
  • Alinear la estrategia con el comportamiento del usuario y centrarse en flujos críticos.
  • Reflejar cambios en funciones, correcciones de errores y prioridades.
  • Mantener la eficacia eliminando o actualizando pruebas no críticas.
  • Utilizar listas de comprobación, palabras clave y mapas mentales para una revisión y ejecución eficientes.

Ventajas

  • Evita Problemas Importantes: Garantiza que la nueva funcionalidad no cause problemas críticos.
  • Preparación Rápida para Pruebas Posteriores: Evalúa rápidamente la preparación del software para pruebas más extensas.
  • Ahorro de Tiempo y Recursos: Evita que el software defectuoso progrese, ahorrando tiempo y recursos.

Desafíos

  • No probar a fondo la funcionalidad del software.
  • Pasar por alto problemas menores.
  • Centrarse en la preparación del software para pruebas más exhaustivas en lugar de pruebas exhaustivas de funcionalidad.

Ejemplo 1 - Para pruebas de interfaz de usuario

El objetivo principal es verificar la apariencia y la experiencia de la aplicación. Esto implica:

  • Confirmar que se utiliza el tamaño de fuente, estilo y color según los requisitos establecidos.
  • Revisar la ortografía y corregir posibles errores gramaticales en todo el sitio web.
  • Verificar la alineación adecuada de textos, imágenes, iconos, botones, etc.
  • Asegurarse de que se muestren las migas de pan de manera correcta.
  • Validar la presencia de mega menús, en caso de que apliquen.
  • Identificar y corregir imágenes rotas, así como evaluar la calidad de las imágenes.
  • Confirmar que las imágenes de productos admitan la función de zoom.
  • Verificar la ausencia de marcas de agua en las imágenes.
  • Garantizar que todos los elementos de la web se visualicen correctamente en diversas resoluciones de pantalla, navegadores y plataformas.
  • Confirmar la visibilidad adecuada de las barras de desplazamiento cuando sea necesario.
  • Distinguir claramente los enlaces del texto normal.
  • Asegurarse de que los mensajes de error, advertencia o éxito se presenten de manera correcta y se diferencien por el color.
  • Validar la capacidad del campo de texto para aceptar caracteres según las necesidades específicas.
  • Verificar el correcto funcionamiento de la función de autocompletar en un campo de texto.
  • Identificar los campos de texto obligatorios mediante un signo de asterisco (*).
  • Confirmar el adecuado funcionamiento del elemento de enfoque.
  • Verificar la correcta visualización de la información sobre herramientas.

Es esencial realizar estas verificaciones de manera sistemática para garantizar la calidad y coherencia de la interfaz de usuario.

Ejemplo 2 - Para Pruebas Funcionales

Las pruebas funcionales tienen como objetivo principal verificar que todas las características del software funcionen conforme a los requisitos establecidos. A continuación, se presenta un checklist detallado para realizar pruebas de sanity en este contexto:

  • Verificar que las validaciones de campo se realicen de acuerdo con los requisitos especificados.
  • Confirmar que el formulario se envíe correctamente después de ingresar datos en todos los campos requeridos.
  • Comprobar la descarga de documentos en formatos como PDF, DOC, y XLXS en distintos navegadores y sistemas operativos.
  • Validar que la funcionalidad de búsqueda opere conforme a las expectativas.
  • Verificar la funcionalidad de clasificación, filtrado y paginación de manera adecuada.
  • Confirmar que el producto se añade a la cesta correctamente al hacer clic en «Añadir a la cesta».
  • Comprobar si se pueden añadir varios artículos a la cesta de manera exitosa.
  • Verificar que el precio del producto se muestre correctamente en la cesta.
  • Comprobar la capacidad de borrar o actualizar productos desde PLP, PDP, Mini Cart, y la Cesta de la compra.
  • Validar la funcionalidad de inicio de sesión desde la página correspondiente, el carrito y la página de pago.
  • Comprobar la funcionalidad de crear una cuenta de usuario.
  • Verificar la capacidad del usuario para editar o actualizar la información de la cuenta a través del módulo Mi Cuenta.
  • Confirmar la funcionalidad de recuperar la contraseña mediante la opción «Olvidé mi contraseña».
  • Comprobar la funcionalidad de cerrar sesión de manera efectiva.
  • Verificar que los métodos de pago estén operando correctamente.
  • Confirmar que el cálculo de impuestos se realice adecuadamente.
  • Comprobar la funcionalidad del código de descuento durante el proceso de compra.
  • Confirmar si el pedido se ha realizado correctamente.
  • Verificar la aparición de un mensaje de confirmación después de realizar un pedido.
  • Comprobar la correcta tramitación del pedido hasta su finalización.

Para ir cerrando el concepto

Después de implementar modificaciones menores en una compilación de software, los profesionales encargados de las pruebas de software pueden ejecutar pruebas de sanidad para asegurarse de que dichas modificaciones operen correctamente antes de proceder con pruebas de regresión exhaustivas.

Las pruebas de sanidad se llevan a cabo posterior a las pruebas de humo, las cuales determinan la estabilidad de una compilación, pero antes de las pruebas de regresión. Por ejemplo, si las pruebas de humo revelan inestabilidades que requieren correcciones, las pruebas de validación podrían realizarse tras efectuar los ajustes para solucionar estos errores, evaluando así si los cambios funcionan conforme a las expectativas.

Diferencias entre las pruebas de humo y las pruebas de sanidad

Smoke Testing

Sanity Testing

Se realizan en las versiones iniciales
Para probar la estabilidad de una nueva versión
Cubre las funcionalidades básicas de extremo a extremo
Ejecutado por testers y, a veces, también por devs
Forma parte de las pruebas básicas
Se suele realizar cada vez que hay una nueva compilación

Se realizan en las versiones estables
Para probar la estabilidad de nuevas funcionalidades o cambios de código en la versión existente
Cubre determinados módulos en los que se han realizado cambios de código
Ejecutado por testers
Forma parte de las pruebas de regresión
Se planifica cuando no hay tiempo suficiente para realizar pruebas en profundidad

IA generativa y su relación con las pruebas de software

Lo más reciente en pruebas de software lo tenemos con las IA’s generativas. Mediante el uso de LLM, los equipos de testers pueden crear casos de prueba y datos de prueba que ayudan a acelerar el proceso de pruebas. Estos casos de prueba son muy flexibles y editables, lo que ayuda a los desarrolladores a reutilizar las pruebas y aumentar enormemente el alcance de las mismas.


La Inteligencia Artificial Generativa (IA generativa) se refiere a un tipo de inteligencia artificial que tiene la capacidad de crear, producir o generar contenido nuevo de manera autónoma. En lugar de seguir instrucciones específicas, la IA generativa puede aprender patrones a partir de datos y crear algo original por sí misma, como textos, imágenes o incluso código.

En relación con las pruebas de software, la IA generativa está siendo aplicada para mejorar y optimizar el proceso de prueba. Por ejemplo, en la creación de casos de prueba automatizados, la IA generativa puede analizar patrones en el software y generar scripts de prueba automáticamente, ahorrando tiempo y esfuerzo humano.

Además, la IA generativa también se utiliza para simular datos de prueba realistas, lo que permite realizar pruebas exhaustivas en entornos controlados. Esto ayuda a identificar posibles problemas en el software de manera más efectiva, ya que se están utilizando datos generados de manera inteligente.


LLM significa «Lenguaje de Modelado de Largo» (por sus siglas en inglés, «Long Language Model»). Se refiere a modelos de inteligencia artificial, como GPT (Generative Pre-trained Transformer), que son capaces de comprender y generar texto de manera extensa y coherente. Estos modelos son entrenados en grandes cantidades de datos para comprender patrones y contextos lingüísticos.

En relación con las pruebas de software, los LLMs se están utilizando para mejorar la automatización y eficiencia en la creación de casos de prueba. Estos modelos pueden generar descripciones detalladas de escenarios de prueba, identificar posibles problemas y hasta sugerir soluciones. También pueden ser empleados para entender y analizar la documentación relacionada con el software, facilitando así la creación y mantenimiento de casos de prueba.

Fuentes de inspiración

  • https://www.guru99.com/
  • https://www.geeksforgeeks.org/
  • https://medium.com/
  • https://www.qatouch.com/
  • https://www.zaptest.com/
  • https://testsigma.com/
  • https://www.lambdatest.com/

Gus Terrera

Apasionado por el agile testing y la ia.