SMOKE TEST: DONDE HAY HUMO, HAY FUEGO

Desde que trabajo en el mundo del testing me he encontrado alguna vez con compañeros que me han pedido que les explicase en qué consistía exactamente el smoke test ya que no lo habían utilizado o que simplemente no lo conocían. Cierto es que no es tan famoso como sus otros hermanos regression test, acceptance test, exploratory test… pero creo que puede ser una parte muy importante y útil dentro de nuestros proyectos.

Podemos definir el smoke test como un conjunto de pruebas a alto nivel que tienen como objetivo comprobar el funcionamiento de las partes críticas de un determinado firmware o software. Esencialmente se utiliza para verificar que una nueva versión de código no ha afectado a las funcionalidades existentes y, por consiguiente, que se puede proceder a realizar un ciclo de pruebas más exhaustivo.

El término smoke test (prueba de humo) seguramente proviene de la electrónica, concretamente del testing de hardware; una vez tienes una nueva placa o componente preparado, lo conectas a una fuente eléctrica y lo enciendes, si comienza a salir humo no es necesario hacer más pruebas… No obstante, documentándome para el artículo encontré otras teorías como que proviene de la fontanería, puesto que en ocasiones para detectar fisuras o sellos deficientes se inyecta humo en las tuberías. Otra posibilidad es que simplemente proviene de la expresión popular “donde hay humo, hay fuego” ya que es utilizada en diferentes idiomas. De todas maneras lo que está claro es que la analogía del humo como antesala de problemas mayores la podemos extrapolar a que una detección precoz de problemas en nuestro código puede ayudarnos a prevenir un teórico incendio más adelante.

Bajo esta premisa, es conveniente establecer esta tipología de test en nuestros ciclos de pruebas. Para ello primeramente deberemos identificar las funcionalidades y componentes básicos de nuestro sistema y luego crearemos los test cases que nos puedan asegurar una cierta estabilidad del mismo. Estas pruebas pueden ser manuales, automáticas o mixtas (dependiendo de las características del proyecto) y en principio deben ser rápidas de ejecutar.

Normalmente el smoke test viene asociado a la integración continua, que esencialmente es la generación por parte del equipo de desarrollo de, como mínimo, una build del producto al día que podrá ser validada con nuestra suite. También se suele utilizar para realizar una última verificación a nivel general antes de hacer una entrega al cliente.

Por poner un ejemplo, en mi caso concreto estoy trabajando en el departamento de Smoke Test que SOGETI tiene dentro de un cliente. Me encargo de probar el firmware (tanto las builds diarias como las diferentes releases que se compilan) de un prototipo de impresora de gran formato que todavía no ha salido al mercado. Trabajo estrechamente con los desarrolladores ya que dependiendo del resultado de mis test este código puede pasar a manos de otros departamentos como el de Software Quality para que hagan un análisis más exhaustivo, o puede quedar parado pendiente de una regeneración debido a que una funcionalidad tan básica como la de cargar papel esté fallando. Una pronta detección de los problemas en las partes críticas del firmware que controla la impresora ayuda a que se puedan comenzar a solucionar mucho antes y a que el resto de departamentos se encuentre un código en condiciones cuando este llegue a sus manos.

Por todo lo anteriormente descrito, podemos enumerar una serie de beneficios que son claves para tener en cuenta el uso del smoke test:

  • Se encuentran los problemas de integración de una forma temprana, cuando todavía son fáciles de solucionar.
  • Asegura la estabilidad del firmware/software antes de iniciarse un análisis más profundo.
  • Aporta un alto grado de seguridad en que los cambios realizados en el código no han afectado a las funciones básicas de nuestro producto, ayudando a reducir los problemas de calidad.
  • Es uno de los métodos con la mejor relación tiempo-coste-rentabilidad.
  • Se puede usar en aquellos momentos en los que no es posible hacer una suite de pruebas más completa y específica.
  • Al utilizarse cada poco tiempo permite acotar el momento en el que ha aparecido un determinado error.
  • Es una parte fundamental dentro de la integración continua.
  • Puede ser automatizado.

En conclusión, el uso del smoke test contribuye enormemente a la optimización de nuestro trabajo permitiéndonos detectar errores graves en el código lo antes posible. Además el tiempo invertido para la realización de las suites tiene un impacto mínimo en nuestro calendario de ejecución de pruebas. Así que recordad, si veis el humo es hora de actuar.

¿Y vosotros, habéis utilizado el smoke test en vuestros proyectos?

Si quieres descubrir las soluciones de calidad de software que te ofrece SOGETI, visita nuestra web.

Joan_Camprodon

Joan Camprodon

Software Control & Testing en SOGETI

Anuncios

Deja tu comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: