Logo image
Abstracting failure-inducing inputs
Conference proceeding

Abstracting failure-inducing inputs

Rahul Gopinath, Alexander Kampmann, Nikolas Havrikov, Ezekiel O. Soremekun and Andreas Zeller
Proceedings of the 29th ACM SIGSOFT International Symposium on Software Testing and Analysis, pp.237-248
ACM Conferences
ISSTA '20: 29th ACM SIGSOFT International Symposium on Software Testing and Analysis
18/07/2020

Abstract

Software and its engineering -- Software creation and management -- Software verification and validation -- Software defect analysis -- Software testing and debugging Theory of computation -- Formal languages and automata theory -- Grammars and context-free languages Theory of computation -- Theory and algorithms for application domains -- Machine learning theory -- Active learning
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, "(())", which represents any expression 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.
url
https://doi.org/10.1145/3395363.3397349View
Published (Version of record) Open

Metrics

1 Record Views

Details

Logo image