[en] A program fails. Under which circumstances does the failure occur? Starting with a single failure-inducing input ("The input ((4)) fails") and an input grammar, the DDSET algorithm uses systematic tests to automatically generalize the input to an abstract failure-inducing input that contains both (concrete) terminal symbols and (abstract) nonterminal symbols from the grammar - for instance, "((⟨expr⟩))", which represents any expression ⟨expr⟩ in double parentheses. Such an abstract failure-inducing input can be used (1) as a debugging diagnostic, characterizing the circumstances under which a failure occurs ("The error occurs whenever an expression is enclosed in double parentheses"); (2) as a producer of additional failure-inducing tests to help design and validate fixes and repair candidates ("The inputs ((1)), ((3 * 4)), and many more also fail"). In its evaluation on real-world bugs in JavaScript, Clojure, Lua, and UNIX command line utilities, DDSET’s abstract failure-inducing inputs provided to-the-point diagnostics, and precise producers for further failure inducing inputs.
Disciplines :
Computer science
Author, co-author :
Gopinath, Rahul; CISPA Helmholtz Center for Information Security Saarbrücken, Germany
Kampmann, Alexander; CISPA Helmholtz Center for Information Security Saarbrücken, Germany
Havrikov, Nikolas; CISPA Helmholtz Center for Information Security Saarbrücken, Germany
Soremekun, Ezekiel ; University of Luxembourg > Interdisciplinary Centre for Security, Reliability and Trust (SNT) > SerVal
Zeller, Andreas; CISPA Helmholtz Center for Information Security Saarbrücken, Germany
External co-authors :
yes
Language :
English
Title :
Abstracting Failure-Inducing Inputs
Publication date :
18 July 2020
Event name :
Proceedings of the 29th ACM SIGSOFT International Symposium on Software Testing and Analysis
Event date :
8 - 22 July 2020
Audience :
International
Main work title :
Proceedings of the 29th ACM SIGSOFT International Symposium on Software Testing and Analysis