En programación de computadoras 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 grave 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, y 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 ejecutadas en cada nueva compilación de un producto para verificar que la compilación se puede probar antes de que se entregue 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 preguntas básicas como "¿se ejecuta el programa?", "¿se abre la interfaz de usuario?" o "¿hace algo 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 hace innecesarias más pruebas inmediatas. Como lo expresa el libro Lecciones aprendidas en pruebas de software [8] , "las pruebas de humo cubren ampliamente 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 perderemos más tiempo instalando o probando". [3]
Las pruebas de humo con frecuencia se ejecutan rápidamente, lo que brinda la ventaja de una retroalimentación más rápida, en lugar de ejecutar conjuntos de pruebas más extensos , lo que naturalmente llevaría más tiempo.
La reintegración frecuente con pruebas de humo se encuentra entre las mejores prácticas de la industria . [9] [ necesita cotización 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 reconstruir sistemas muy grandes una vez al día. En general, reconstruya y vuelva a realizar pruebas tan a menudo como pueda.
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 manualmente o utilizando una herramienta automatizada . En el caso de herramientas automatizadas, el proceso que genera la compilación suele iniciar la prueba. [ cita necesaria ]
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 escritas, posiblemente incluso con un mecanismo automatizado para controlar los movimientos del mouse. Las pruebas unitarias se pueden implementar como funciones separadas dentro del propio código o como una capa de controlador que se vincula al código sin alterar el código que se está probando. [ cita necesaria ]
En Lecciones aprendidas en pruebas de software , 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 . Se conecta una placa nueva y se enciende. Si ve humo proveniente del tablero, apague la alimentación. No tiene que hacer más pruebas". [3]