La depuración delta es una metodología para automatizar la depuración de programas mediante un enfoque científico de bucle hipótesis-ensayo-resultado. Esta metodología fue desarrollada por primera vez por Andreas Zeller de la Universidad del Sarre en 1999. [1]
En la práctica, el algoritmo de depuración Delta se basa en pruebas unitarias para aislar las causas de los fallos de forma automática, reduciendo sistemáticamente las circunstancias que los provocan hasta que quede un conjunto mínimo. Por ejemplo, si puede proporcionar un caso de prueba que produzca el error que está buscando, puede pasarlo al algoritmo de depuración Delta, que simplemente intentará recortar las funciones inútiles y las líneas de código que no son necesarias para reproducir el error, hasta que encuentre un programa mínimo.
La depuración delta se ha aplicado para aislar entradas de programa que inducen fallos (por ejemplo, una página HTML que hace que un navegador web falle), interacciones del usuario que inducen fallos (por ejemplo, las pulsaciones de teclas que hacen que un programa se bloquee) o cambios en el código del programa que inducen fallos (por ejemplo, después de una prueba de regresión fallida).
Más tarde, algunas herramientas de desarrollo de software se han inspirado en la depuración delta, como los comandos bisect de los sistemas de control de revisiones (por ejemplo, git-bisect, svn-bisect, hg-bisect, etc.), que, en lugar de trabajar sobre el código del programa, aplican la metodología de depuración delta sobre el historial del código comparando varias versiones hasta encontrar el cambio defectuoso.
Recientemente, se propuso la minimización del diálogo de red , una técnica basada en la depuración delta para encontrar el subconjunto más pequeño del tráfico de red del diálogo original, que cuando se reproduce aún logra el mismo objetivo que el diálogo original [2].
Software
- delta - un programa informático para minimizar los archivos "interesantes" sujetos a una prueba de su interés [3]
- DD.py: una implementación de Python de Delta Debugging; consulte también su tutorial
- Lithium: una implementación en Python de un algoritmo de depuración Delta mejorado
- C-Reduce, que reduce los archivos fuente escritos en C/C++, utiliza los algoritmos Delta
- Perses: un reductor independiente del lenguaje para la minimización de programas, que emplea el algoritmo de depuración Delta.
- DustMite: una herramienta de reducción de datos de propósito general, utilizada principalmente para reducir programas D. [4]
- Complementos de Eclipse
- DDinput - Entrada que induce fallos
- DDchange - Cambios que provocan fracasos
- DDstate - Estados que inducen fallos
- Compañero XML [5]
- Implementación de Common Lisp
- Igor - herramienta de línea de comandos Archivado el 19 de julio de 2011 en Wayback Machine
Véase también
Referencias
- Andreas Zeller: Por qué fallan los programas: una guía para la depuración sistemática , Morgan Kaufmann, ISBN 1-55860-866-4
- Aprendiendo de la historia del código Una presentación en Google Tech Talk del inventor original de Delta Debugging
- ^ Zeller, Andreas (1999). "Ayer, mi programa funcionó. Hoy, no. ¿Por qué?". Ingeniería de software — ESEC/FSE '99 . Apuntes de clase en informática. Vol. 1687. Springer. págs. 253–267. doi :10.1007/3-540-48166-4_16. ISBN 978-3-540-66538-0.
- ^ M. Zubair Rafique; et al. "Minimización de diálogos de red y diferenciación de diálogos de red: dos primitivas novedosas para aplicaciones de seguridad de red" (PDF) . En Actas de la 30.ª Conferencia anual sobre aplicaciones de seguridad informática (ACSAC 2014) . ACM.
- ^ danielwilkerson.com
- ^ DustMite, la herramienta de reducción de datos de propósito general
- ^ "Detección de errores de software mediante algoritmos genéticos". 2014-03-05 . Consultado el 22 de julio de 2015 .
Enlaces externos
- Proyecto de depuración delta: amplia colección de enlaces a herramientas y métodos de depuración delta
- Curso de Udacity sobre depuración de software impartido por Andreas Zeller