En programación informática y pruebas de software , las pruebas de humo (también pruebas de confianza , pruebas de cordura , [1] prueba de verificación de compilación ( BVT ) [2] [3] [4] y prueba de aceptación de compilación ) son pruebas preliminares o pruebas de cordura para revelar fallas simples lo suficientemente graves como para, por ejemplo, rechazar una posible versión de software. Las pruebas de humo son un subconjunto de casos de prueba que cubren la funcionalidad más importante de un componente o sistema, que se utilizan para ayudar a evaluar si las funciones principales del software parecen funcionar correctamente. [1] [2] Cuando se utiliza para determinar si un programa de computadora debe someterse a pruebas adicionales y más detalladas, una prueba de humo puede denominarse prueba previa [5] o prueba de admisión . [1] Alternativamente, es un conjunto de pruebas que se ejecutan en cada nueva compilación de un producto para verificar que la compilación sea comprobable antes de que se lance a manos del equipo de pruebas. [6] En el paradigma DevOps , el uso de un paso de prueba de verificación de compilación es un sello distintivo de la etapa de madurez de la integración continua . [7]
Por ejemplo, una prueba de humo puede abordar cuestiones básicas como "¿se ejecuta el programa?", "¿se abre la interfaz de usuario?" o "¿se produce algún efecto al hacer clic en el botón principal?". El proceso de prueba de humo tiene como objetivo determinar si la aplicación está tan dañada que no es necesario realizar más pruebas de inmediato. Como dice el libro Lessons Learned in Software Testing [8] , "las pruebas de humo cubren en general las características del producto en un tiempo limitado [...] si las características clave no funcionan o si los errores clave aún no se han solucionado, su equipo no perderá más tiempo instalando o probando". [3]
Las pruebas de humo con frecuencia se ejecutan rápidamente, lo que brinda la ventaja de una respuesta más rápida, en lugar de ejecutar conjuntos de pruebas más extensos , que naturalmente tomarían más tiempo.
La reintegración frecuente con pruebas de humo se encuentra entre las mejores prácticas de la industria . [9] [ necesita cita para verificar ] Idealmente, cada confirmación a un repositorio de código fuente debería desencadenar una compilación de integración continua, para identificar regresiones lo antes posible. Si las compilaciones tardan demasiado, puede agrupar varias confirmaciones en una sola compilación, o los sistemas muy grandes pueden reconstruirse una vez al día. En general, reconstruya y vuelva a probar con la mayor frecuencia posible.
Los evaluadores también realizan pruebas de humo antes de aceptar una compilación para realizar más pruebas. Microsoft afirma que, después de las revisiones de código , " las pruebas de humo son el método más rentable para identificar y corregir defectos en el software". [10]
Se pueden realizar pruebas de humo de forma manual o mediante una herramienta automatizada . En el caso de las herramientas automatizadas, el proceso que genera la compilación suele iniciar la prueba. [ cita requerida ]
Las pruebas de humo pueden ser pruebas funcionales o pruebas unitarias . Las pruebas funcionales ejercitan el programa completo con varias entradas. Las pruebas unitarias ejercitan funciones individuales, subrutinas o métodos de objetos. Las pruebas funcionales pueden comprender una serie de entradas de programa programadas, posiblemente incluso con un mecanismo automatizado para controlar los movimientos del mouse. Las pruebas unitarias se pueden implementar como funciones separadas dentro del código mismo o como una capa de controlador que se vincula al código sin alterar el código que se está probando. [ cita requerida ]
En Lessons Learned in Software Testing , Cem Kaner, James Bach y Brett Pettichord proporcionaron el origen del término: "La frase prueba de humo proviene de las pruebas de hardware electrónico . Conectas una placa nueva y enciendes la energía. Si ves que sale humo de la placa, apagas la energía. No tienes que hacer más pruebas". [3]