Abstracting Failure-Inducing Inputs

Gopinath, Rahul and Kampmann, Alexander and Havrikov, Nikolas and Soremekun, Ezekiel and Zeller, Andreas
(2020) Abstracting Failure-Inducing Inputs.
In: ISSTA - ACM SIGSOFT International Symposium on Software Testing and Analysis, Sat 18 - Wed 22 July 2020, Virtual.
Conference: ISSTA - International Symposium on Software Testing and Analysis

This is the latest version of this item.

[img]
Preview
Text
issta2020-language-of-failure.pdf - Published Version
Available under License Creative Commons Attribution.

Download (324kB) | Preview

Abstract

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 Coreutils, DDSET's abstract failure-inducing inputs provided to-the-point diagnostics, and precise producers for further failure inducing inputs.

Available Versions of this Item

Actions

Actions (login required)

View Item View Item