Gopinath, RahulHavrikov, NikolasKampmann, AlexanderSoremekun, EzekielZeller, AndreasKoziolek, AnneSchaefer, InaSeidl, Christoph2020-12-172020-12-172021978-3-88579-704-3https://dl.gi.de/handle/20.500.12116/34506A program fails. Under which circumstances does the failure occur? Starting with a single failure-inducing input ("The input ((4)) fails") and an input grammar, this talk presents two techniques that use systematic tests to automatically determine the circumstances under which the failure occurs. The DDSET algorithm [Go20] generalizes 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 in double parentheses. The ALHAZEN technique [Ka20] takes this even further, using decision trees to learn input properties such as length or numerical values associated with failures: "The error occurs as soon as there are two parentheses or more." Such abstractions can be used as debugging diagnostics, characterizing the circumstances under which a failure occurs; and as producers of additional failure-inducing tests to help design and validate fixes and repair candidates. Both have the potential to significantly boost speed and quality of software debugging.endebugginggrammarerror diagnosisLearning Circumstances of Software FailuresText/ConferencePaper10.18420/SE2021_121617-5468