Misplaced Pages

Delta debugging

Article snapshot taken from Wikipedia with creative commons attribution-sharealike license. Give it a read and then ask your questions in the chat. We can research this topic together.
(Redirected from Delta Debugging)
This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these messages)
This article may require cleanup to meet Misplaced Pages's quality standards. The specific problem is: spelling, grammar, capitalization, word usage, and punctuation need to be checked. Please help improve this article if you can. (December 2014) (Learn how and when to remove this message)
This article relies excessively on references to primary sources. Please improve this article by adding secondary or tertiary sources.
Find sources: "Delta debugging" – news · newspapers · books · scholar · JSTOR (April 2011) (Learn how and when to remove this message)
The topic of this article may not meet Misplaced Pages's general notability guideline. Please help to demonstrate the notability of the topic by citing reliable secondary sources that are independent of the topic and provide significant coverage of it beyond a mere trivial mention. If notability cannot be shown, the article is likely to be merged, redirected, or deleted.
Find sources: "Delta debugging" – news · newspapers · books · scholar · JSTOR (October 2010) (Learn how and when to remove this message)
(Learn how and when to remove this message)

Delta Debugging is a methodology to automate the debugging of programs using a scientific approach of hypothesis-trial-result loop. This methodology was first developed by Andreas Zeller of the Saarland University in 1999.

In practice, the Delta Debugging algorithm builds on unit testing to isolate failure causes automatically - by systematically narrowing down failure-inducing circumstances until a minimal set remains. For example, if you can supply a test case that will produce the bug you are looking for, then you can feed that to the Delta Debugging algorithm, which will then simply try to trim useless functions and lines of code that are not needed to reproduce the bug, until a 1-minimal program is found.

Delta Debugging has been applied to isolate failure-inducing program input (e.g. an HTML page that makes a Web browser fail), failure-inducing user interaction (e.g. the keystrokes that make a program crash), or failure-inducing changes to the program code (e.g. after a failing regression test).

Later, some software development tools have been inspired by Delta Debugging, such as the bisect commands of revision control systems (e.g., git-bisect, svn-bisect, hg-bisect, etc.), which, instead of working on the program's code, apply the delta debugging methodology on the code history by comparing various versions until the faulty change is found.

Recently, Network Dialog Minimization a technique based on delta debugging is proposed to find the smallest subset of network traffic from the original dialog, that when replayed still achieves the same goal as the original dialog

Software

See also

References

  • Andreas Zeller: Why Programs Fail: A Guide to Systematic Debugging, Morgan Kaufmann, ISBN 1-55860-866-4
  • Learning from Code History A presentation at Google Tech Talk from the original inventor of the Delta Debugging
  1. Zeller, Andreas (1999). "Yesterday, my program worked. Today, it does not. Why?". Software Engineering — ESEC/FSE '99. Lecture Notes in Computer Science. Vol. 1687. Springer. pp. 253–267. doi:10.1007/3-540-48166-4_16. ISBN 978-3-540-66538-0.
  2. M. Zubair Rafique; et al. "Network Dialog Minimization and Network Dialog Diffing: Two Novel Primitives for Network Security Applications" (PDF). In Proceedings of 30th Annual Computer Security Applications Conference (ACSAC 2014). ACM.
  3. danielwilkerson.com
  4. DustMite, the general purpose data reduction tool
  5. "Detecting Software Errors via Genetic Algorithms". 2014-03-05. Retrieved 22 July 2015.

External links

Category: