07/03/2023

Smoke Testing vs. Sanity Testing: diferencias, pros, contras y más

COMPARTIR EN:

  • Linkedin Logo
  • Twitter Logo
  • Facebook Logo
  • Mail Logo

Como responsable de pruebas de software, tal vez hayas escuchado palabras como Smoke Testing contra Sanity Testing. Probablemente pienses, ¿cuál es el problema? ¿por qué debería importar?

Para garantizar un proceso de pruebas eficiente, es esencial entender los tipos de pruebas adecuados a emplear, así como las ventajas que aportan en cuanto al ahorro de tiempo. Este artículo explicará cuál de las pruebas es mejor para cada situación.

¿Cuáles son las diferencias que existen entre Smoke Testing y Sanity Testing?

Para dar una visión general, vamos a echar un vistazo a una guía ilustrada sobre La Singularidad entre Smoke Testing y Sanity Testing, cuándo se deben utilizar, y por qué son importantes los ejemplos de Smoke Testing y Sanity Testing.

¿Qué es Smoke Testing?

qué es smoke testingDefinición de Smoke Testing

Smoke Testing, también conocido como “Pruebas de Comprobación de la Compilación” y “Pruebas de Confianza” son el primer enfoque de pruebas de software que tienen lugar poco después de la distribución o creación de una compilación de software. Su objetivo es probar la estabilidad de la compilación de software implementado, enfocándose en ciertas características del sistema seleccionadas, en lugar de hacerlo en toda la aplicación. 

Smoke Testing es la primera prueba que se realiza en cualquier compilación nueva. Puede realizarla tanto los desarrolladores como los testers y puede ser automatizada o manual. Aun así, Smoke Testing se lleva a cabo, en su mayoría, como pruebas de automatización. 

Propósito e Importancia de Smoke Testing

Smoke Testing se realiza para comprobar si las funciones básicas de una aplicación de software funcionan correctamente.  Ayuda a decidir si el software debería o no pasar por más pruebas. Realizar Smoke Testing acelera el proceso de pruebas en general y ayuda a identificar antes los problemas críticos. 

A continuación se encuentran algunos casos de uso de Smoke Testing.

  • Al distribuir una nueva compilación de software
  • Después de un cambio significativo a la aplicación
  • Después de realizar mejoras en las funciones
  • Al lanzar nuevas funciones 
  • Después de corregir errores
  • Tras el lanzamiento de un nuevo producto en la fase o en entornos de producción

Veamos un ejemplo de uso en el que se realiza Smoke Testing. Pongamos como ejemplo una aplicación en la que tienes que acceder y con la que puedes enviar y recibir mensajes. Una vez que la aplicación ha sido compilada, tenemos que probar si las funciones básicas como acceder, enviar un mensaje y recibir mensajes, están funcionando. Si esas funciones básicas y más importantes de la aplicación no funcionan o el sistema falla incluso antes de llegar a ellas, no tiene sentido tratar de probar las características adicionales de la aplicación, tales como borrar un mensaje, editarlo o comprobar el estado del mismo. 

Proceso de Smoke Testing

El proceso de Smoke Testing puede dividirse en cuatro pasos principales

  • Preparar el Entorno de Pruebas
  • Seleccionar los Casos de Prueba
  • Ejecutar Smoke Testing
  • Analizar los Resultados

Preparar el Entorno de Pruebas

Para comenzar Smoke Testing, primero instalamos las herramientas necesarias, configuramos la compilación de software y el entorno de pruebas. Estas son las tareas preliminares que realizamos antes de probar las funciones críticas del software. El entorno de pruebas debe ser configurado de tal manera que las pruebas sean eficientes, y lo más cercano posible al entorno de producción para garantizar la exactitud del Smoke Testing.

Seleccionar los Casos de Prueba

La siguiente etapa de Smoke Testing es elegir cuáles casos de prueba usar después de que el entorno de pruebas esté listo. Estos casos de prueba se centran en las funciones principales del software y son seleccionados según su importancia y la probabilidad de detectar errores de producto.

Ejecutar Smoke Testing

Smoke Testing debe realizarse en los casos de prueba seleccionados. Ejecutar las pruebas de forma sistemática implica que se debe seguir el mismo orden cada vez, y los resultados de las pruebas deben quedar registrados. Smoke Testing puede ser automática o manual.

Analizar los Resultados

El paso final luego de la ejecución de Smoke Testing es analizar los resultados. Al analizar los resultados de las pruebas, el responsable o el desarrollador identificará si existe algún defecto y determinará si el software es elegible para realizar más pruebas o para su lanzamiento. Si se encuentra algún defecto, se debe corregir y repetir Smoke Testing con las nuevas correcciones hasta que no haya más bloqueadores o errores de nivel crítico.

Características Principales de Smoke Testing

A continuación, se explican las características de Smoke Testing.

Cubre el producto, pero su alcance es limitado – Normalmente examinamos si el programa está operando sin problemas, probamos las funciones básicas y buscamos cualquier defecto o error notable. Dependiendo del software y sus requerimientos, las áreas concretas abordadas en Smoke Testing pueden variar. En general, nos concentramos en probar las funciones y características más significativas de la aplicación.

Selección de casos de prueba basada en prioridades – Los casos de prueba son seleccionados según el orden de prioridad. Los casos de prueba deberán cubrir las funciones básicas y las áreas con mayor probabilidad de presentar defectos. 

Menor tiempo y esfuerzo – Smoke Testing es rápido y fácil. Por lo tanto, es ejecutado en una menor cantidad de tiempo y los resultados estarán disponibles rápidamente también.

No exhaustivo – Puesto que no cubre toda la aplicación y tiene casos de prueba poco profundos y amplios, Smoke Testing no es exhaustivo.

Puede ser automatizado – Esto significa que los desarrolladores o los testers no tienen que realizar Smoke Testing de forma manual. Pueden utilizar una herramienta de pruebas y automatizar todo el proceso, lo cual ahorrará tiempo. Esto ayuda a reutilizar los scripts de automatización para probar los productos de forma continua. 

Enfoque en rutas críticas – De manera similar, ya que Smoke Testing deberá cubrir las funciones más importantes de la aplicación, estas se enfocan en rutas críticas y comprueban si el software está listo para su distribución.

Mejores Prácticas para un Smoke Testing Eficaz

Para que Smoke Testing sea eficaz, el tester debe asegurarse, sobre todo, de que las pruebas cubran todas las funciones básicas de la aplicación y de que los casos de pruebas sean seleccionados según su importancia y priorizados de acuerdo con la probabilidad de encontrar defectos.

En consecuencia, algunas de las mejores prácticas para garantizar lo antes mencionado, son: usar un marco de referencia de pruebas, automatizar Smoke Testing siempre que sea posible, realizar las pruebas lo más temprano posible en el proceso de desarrollo de software, corregir los defectos tan pronto como sean descubiertos y documentar los resultados de las pruebas para su posterior revisión. 

¿Qué es Sanity Testing?

qué es sanity testing

Definición de Sanity Testing

Sanity Testing se realiza para comprobar si los cambios o características específicas de una compilación de software funcionan correctamente. Se diferencia de Smoke Testing porque se enfoca más en comprobar pequeños cambios y funciones en lugar de la estabilidad general del software. Sanity Testing es un tipo de pruebas de regresión más enfocado y específico. Normalmente, estas pruebas estrechas y profundas solo las realizan los testers. Más aún, Sanity Testing ahorra tiempo y esfuerzo al enfocarse en probar los componentes mejorados en lugar del producto completo. 

Propósito e Importancia de Sanity Testing

Sanity Testing se realiza para garantizar que las pruebas de extremo a extremo de una compilación puedan realizarse sin problemas después de realizar cambios o modificaciones menores al producto. Esto se lleva a cabo antes de pasar a realizar rondas de pruebas más complejas. Se enfoca en capacidades individuales de la aplicación, lo que nos permite ver si las modificaciones de código han introducido algún error sin tener que probar todo el sistema. Esto ahorra tiempo y esfuerzo mientras garantiza que los componentes mejorados son estables. Son importantes, ya que pueden ayudar a prevenir retrasos e interrupciones costosos en el proceso de desarrollo. 

Cuándo utilizar Sanity Testing

Se puede usar en una compilación nueva o en una que haya pasado por varias regresiones. También se emplea después de hacer un cambio menor o mayor en el código, después de corregir errores, para comprobaciones rápidas de estabilidad del producto, después de cambios recientes en un componente o característica específicos, y antes de que la compilación sea liberada a producción o al cliente.

Considera una aplicación de software con una página de acceso, una página de registro y una página de inicio. Asume que los flujos de acceso a las aplicaciones han sido modificados recientemente. Por lo tanto, se puede realizar una prueba de cordura para cubrir las funciones de acceso para verificar el componente de acceso. Por ejemplo, al establecer la contraseña para la aplicación, el usuario necesita seguir ciertas pautas específicas, por ejemplo, que es obligatorio que tenga 8 caracteres, al menos un número, etc. Esto se puede verificar con Sanity Testing y, si el software permite a un usuario establecer una contraseña que no siga las reglas dadas, se trata de un problema y no deberá permitirse. En consecuencia, Sanity Testing ha fallado y los testers informarán a los desarrolladores acerca de este asunto, que deberá ser corregido antes del lanzamiento.

Proceso de Sanity Testing

El proceso de Sanity Testing también puede dividirse en cuatro pasos principales

  1. Preparar el Entorno de Pruebas
  2. Seleccionar los Casos de Prueba
  3. Ejecutar Sanity Testing
  4. Analizar los Resultados

Preparar el Entorno de Pruebas

El entorno de pruebas deberá ser lo más parecido posible al entorno de producción. Para preparar el entorno de pruebas, debes configurar el hardware y software requerido para las pruebas. Al configurar el entorno de pruebas, este deberá ser aislado del entorno de producción, de tal forma que cualquier problema que ocurra durante las pruebas no afecte el entorno de producción y no se pierdan los datos. 

Seleccionar los Casos de Prueba

Tras preparar el entorno de pruebas, es necesario seleccionar los casos de prueba. La selección se realiza enfocándose en las características más críticas del software, y los casos de prueba también deberán ser capaces de detectar problemas importantes en una fase temprana. La importancia de la característica, su probabilidad de uso por parte de los usuarios y su complejidad deben ser consideradas al seleccionar los casos de prueba. 

Ejecutar Sanity Testing

Sanity Testing se ejecuta de una manera rápida y eficiente. La ejecución deberá llevarse a cabo en un orden lógico y los resultados deberán ser documentados.

Analizar los Resultados

Es necesario revisar y analizar los resultados documentados para identificar problemas relevantes con el software. Si se encuentra algún problema, el software será redirigido al equipo de desarrollo para ser corregido.

Características Principales de Sanity Testing

Alcance y Cobertura Estrecho  Sanity Testing posee un alcance estrecho y profundo. La cobertura no es mucha, ya que se centra en un conjunto limitado de características o en ciertos componentes seleccionados que son los más importantes, y no cubre todas las características y funcionalidades del software. 

La Selección de los Casos de Prueba se basa en la Importancia – Los casos de prueba en Sanity Testing son seleccionados principalmente según la importancia de la característica. La selección depende de su importancia, probabilidad de uso y complejidad.  Esto le permite concentrarse en áreas importantes mientras se garantiza que las funciones esenciales trabajen correctamente.

Menos Limitaciones de Tiempo y Esfuerzo – Puesto que su ejecución no requiere mucho tiempo o esfuerzo, Sanity Testing se considera rápido y de alto nivel. Se enfoca en confirmar las funciones y cambios críticos, permitiendo realizar pruebas más eficientes en menos tiempo. Suele tardar unas horas o días en realizarse.

Implica una Toma de Decisiones Rápida – Durante Sanity Testing, los testers tienen la responsabilidad de encontrar problemas y reportarlos a los desarrolladores lo más pronto posible. Esto implica que los testers tomen decisiones rápidas con respecto al software y que evalúen si está o no funcionando según lo previsto. Los resultados e informes de su análisis desempeñan un papel importante en garantizar que el producto cumpla los requisitos exigidos.

Son Complementarias a Otras Pruebas – Sanity Testing se utiliza junto con otros tipos de pruebas como las pruebas unitarias, las pruebas de integración y las pruebas del sistema. Normalmente se utilizan en combinación con pruebas de regresión. El objetivo de Sanity Testing es poner en evidencia cualquier problema que otros tipos de pruebas puedan haber pasado por alto, garantizando así que el software funcione perfectamente.

Mejores Prácticas para un Sanity Testing Eficaz

Hay muchas buenas prácticas a seguir para garantizar la eficiencia de Sanity Testing. Algunas de ellas son: definir el alcance apropiadamente, seleccionar los casos de prueba correctos, asegurarse de que el entorno de pruebas es similar al entorno de producción, pero aislados uno del otro, y utilizar los resultados para mejorar los casos de prueba. 

Existen muchas formas de realizar Sanity Testing y obtener resultados más eficaces. Una de esas estrategias es emplear la automatización de pruebas, lo cual ayuda a agilizar y optimizar el proceso de pruebas. Trabajar en estrecha colaboración con el equipo de desarrollo es imprescindible, ya que tienen una gran perspectiva de las características del producto y de los posibles casos de prueba. Además, garantizar una comunicación clara y eficaz de los resultados de las pruebas es fundamental para resolver cuanto antes los fallos detectados. Combinando estos principios, Sanity Testing tiene más éxito, lo que se traduce en versiones de software de mayor calidad.

Pros y Contras de Smoke Testing y Sanity Testing

Como ya hemos comentado el significado de Smoke Testing y de Sanity Testing, ahora echemos un vistazo a algunos de los pros y contras de estas dos técnicas de pruebas.

Pros de Smoke Testing

  • Detección temprana de problemas relevantes: puesto que Smoke Testing se realiza en una fase muy temprana del proceso de desarrollo de software, es capaz de identificar y prevenir problemas.
  • Eficiencia en tiempo y costos: Smoke Testing es rápido y eficiente para detectar problemas, por lo tanto, puede ahorrar tiempo y dinero evitando tener que realizar más pruebas en caso de haber algún problema. 
  • Una evaluación rápida de la estabilidad de la aplicación: el objetivo principal de Smoke Testing es identificar si el software es estable y poder avanzar en el proceso de desarrollo, así como evaluar la aplicación.
  • Identifica fallos críticos antes de las pruebas extensas: sin Smoke Testing, los desarrolladores no serán capaces de identificar problemas importantes y enviarán la aplicación a los testers para que realicen las pruebas extensas. Con Smoke Testing, los desarrolladores pueden ejecutar estas pruebas antes de entregarla al equipo de QA.
  • Proporciona confianza en la calidad de compilación: esto puede ayudar a garantizar que el software será distribuido en un estado de alta calidad mientras aumenta la confianza en la calidad de compilación.

Contras de Smoke Testing

  • Cobertura limitada de prueba: Smoke Testing solo abarca las funciones más críticas.
  • Posibilidad de falsos positivos: Smoke Testing tiende a identificar problemas que en realidad no lo son, lo que puede suponer una pérdida de tiempo.
  • Dependencia de casos de prueba predefinidos: Smoke Testing no utiliza todos los casos de prueba de una suite de pruebas, por lo que es posible que algunos problemas no sean identificados.
  • No sustituye las pruebas integrales: las pruebas integrales son realizadas para identificar la mayoría de los problemas de una aplicación. Esto no es posible con Smoke Testing.
  • Puede pasar por alto defectos menores o casos extremos: esto también puede ocurrir porque las pruebas solo cubren las funciones críticas.

Pros de Sanity Testing

  • Se centra en áreas o funciones específicas: Sanity Testing se enfoca en áreas específicas y ayudan a garantizar su correcto funcionamiento.
  • Evaluación rápida de la estabilidad y funcionalidad: Sanity Testing se utiliza para evaluar la estabilidad y funcionalidad del software de manera rápida.
  • Eficiencia en tiempo y recursos: puesto que se centra solamente en las áreas más críticas, las pruebas pueden ser eficientes.
  • Confirmación de correcciones o mejoras críticas: las pruebas pueden emplearse para confirmar si las correcciones y mejoras críticas funcionan adecuadamente.
  • Complementa otras técnicas de prueba: como Sanity Testing es complementario, puede garantizar que el software se pruebe a fondo.

Contras de Sanity Testing

  • Alcance reducido de las pruebas: es posible que Sanity Testing no identifique todos los problemas del software, ya que se enfoca en áreas específicas.
  • Cobertura limitada de prueba: como se centra en funciones o componentes críticos, su cobertura es limitada.
  • Posibilidad de pasar por alto defectos no relacionados: puesto que las pruebas se enfocan en problemas relevantes, es posible pasar por alto los de menor importancia.
  • Dependencia de casos de prueba selectivos: Sanity Testing no cubre la totalidad del software.
  • No sustituye las pruebas exhaustivas: las pruebas exhaustivas deberán realizarse para identificar la mayoría de los problemas del software. Sanity Testing no lo hace.

Diferencia entre Smoke Testing y Sanity Testing

 

Aunque tanto Smoke Testing como Sanity Testing se llevan a cabo durante las fases tempranas del desarrollo del software, existen claras diferencias entre ellas. La primera distinción se basa en su enfoque: Smoke Testing es amplio y superficial, cubriendo un rango de funciones, mientras que  Sanity Testing es más estrecho y profundo, enfocándose en áreas específicas del software.

La siguiente tabla muestra un resumen de Smoke Testing frente a Sanity Testing.

Funciones Smoke Testing Sanity Testing
Objeto Verificar que el software puede iniciar y ejecutar sus funciones básicas Verificar que el software funciona según lo previsto
Alcance Alto nivel Estrecho
Documentación del Producto No Requerido Requerido
Quién lo realiza Desarrolladores o Testers Testers
Cuándo lo realiza Antes de ejecutar Sanity Testing Después de ejecutar Somke Testing

 

Por lo tanto, Smoke Testing garantiza que el software es lo suficientemente estable para realizar más pruebas, mientras que Sanity Testing comprueba la funcionalidad e integridad general del software después de hacer cambios o modificaciones. 

Importancia del Smoke Testing y Sanity Testing

Como lo demuestran los ejemplos de Smoke Testing y Sanity Testing, ambos cumplen papeles vitales en el aseguramiento de la calidad del software. Estas pruebas ayudan a identificar cualquier defecto importante o regresión en el software, permitiendo una rápida corrección y el mejoramiento de la calidad general del producto.

Importancia de Smoke Testing

Smoke Testing puede ayudar a identificar problemas relevantes del software en una etapa temprana, tales como fallos, errores, problemas de inicio y funciones ausentes. Esto puede ayudar a evitar que el software sea distribuido con problemas importantes que afectarían a los usuarios. También puede mejorar la calidad del software.

Por lo tanto, Smoke Testing es realmente significativo cuando se trata de realizar pruebas en las fases tempranas del proceso de desarrollo de software.

Importancia de Sanity Testing

Sanity Testing puede ayudar a identificar problemas menores en el software en una fase temprana, tales como errores de tipografía, casos extremos, flujos negativos, problemas de interfaz de usuario y errores menores. Esto puede ayudar a evitar que el software sea distribuido con problemas menores que afectarían la experiencia del usuario. También puede contribuir a ahorrar tiempo y dinero, así como también a mejorar la calidad del software.

Conclusión

Como tester, no cabe duda que ha trabajado con tipos de pruebas como Smoke Testing y Sanity Testing. Aun así, muchos profesionales de IT, como los desarrolladores, carecen de una comprensión clara de las diferencias que hay entre ellas. Por lo tanto, con este artículo, pretendemos compartir qué son Smoke Testing y Sanity Testing, por qué son importantes y por qué debería conocer sus pros y sus contras.

Cuando llega un lanzamiento, el equipo encargado se reúne y prioriza los tipos de pruebas a realizar, de acuerdo con el cronograma. Durante esta priorización, casi siempre las personas prefieren llevar a cabo una ronda de Smoke Testing para verificar la estabilidad del producto. Sanity Testing se elegirá para ejecutar como una segunda ronda de pruebas, ya que se enfocan en probar un componente específico mejorado del producto y no el producto en general.

Es necesario realizar otros tipos de pruebas, tales como pruebas de regresión, rendimiento y seguridad, para garantizar la calidad del producto antes de su lanzamiento.