La técnica de "bebugging" (también conocida como "inyección de fallos" o "inyección de errores ") es una técnica popular de ingeniería de software utilizada en la década de 1970 para medir la cobertura de las pruebas . Se añaden aleatoriamente errores conocidos al código fuente de un programa y el probador de software tiene la tarea de encontrarlos. El porcentaje de errores conocidos que no se encuentran proporciona una indicación de los errores reales que aún persisten.
El término "bebugging" se mencionó por primera vez en *The Psychology of Computer Programming * (1970), donde Gerald M. Weinberg describió el uso del método como una forma de entrenar, motivar y evaluar a los programadores, no como una medida de los fallos que persistían en un programa. El enfoque se tomó prestado del sistema SAGE , donde se utilizaba para mantener alerta a los operadores que observaban las pantallas de radar. He aquí una cita del uso original del término:
El exceso de confianza del programador podría contrarrestarse mediante un sistema que introdujera errores aleatorios en el programa bajo prueba. La ubicación y la naturaleza de estos errores se registrarían en el sistema, pero se ocultarían al programador. La frecuencia con la que encontrara y eliminara estos errores conocidos podría utilizarse para estimar la frecuencia con la que elimina los errores desconocidos. Una técnica similar se utiliza habitualmente en sistemas de vigilancia donde se espera que un operador pase ocho horas seguidas observando una pantalla de radar en busca de eventos muy raros, como el paso de una aeronave no identificada. Las pruebas de rendimiento demostraron que era necesario introducir una frecuencia de ocurrencia distinta de cero de eventos artificiales para mantener al operador en un estado de alerta satisfactorio. Además, dado que estos eventos estaban bajo el control del sistema, este podía estimar el rendimiento actual y general de cada operador.
Aunque no podemos introducir errores de programación que simulen errores reales con la misma precisión con la que simulamos aeronaves reales en una pantalla de radar, esta técnica podría emplearse para capacitar y evaluar a los programadores en las pruebas de programas. Incluso si los errores tuvieran que ser introducidos manualmente por otra persona del proyecto, valdría la pena probar un sistema de "detección de errores" de este tipo. Esto motivaría enormemente al programador, ya que ahora sabría:
- Su programa contiene errores.
- Él no los puso allí.
Una de las primeras aplicaciones de la depuración de software fue el método de siembra de fallos de Harlan Mills [ 1 ] , que posteriormente se perfeccionó mediante la siembra de fallos estratificada [ 2 ] . Estas técnicas consistían en añadir varios fallos conocidos a un sistema de software con el fin de monitorizar la tasa de detección y eliminación. Esto presuponía que era posible estimar el número de fallos restantes en un sistema de software que aún debían detectarse mediante una metodología de prueba específica.
El bebugging es un tipo de inyección de fallos .
Véase también
Referencias
- ↑ HD Mills , "Sobre la validación estadística de programas informáticos", División de Sistemas Federales de IBM, 1972.
- ↑ LJ Morell y JM Voas, "Análisis de infección y propagación: un enfoque basado en fallas para estimar la confiabilidad del software", College of William and Mary en Virginia, Departamento de Ciencias de la Computación, septiembre de 1988.
- Pruebas de software