2017 · 43 citations · 40 references
ComputingComputer EngineeringComputer ScienceMalware AnalysisProgramming LanguagesSoftware EngineeringAbstract Syntax TreesComputer-based TestingSoftware TestingDebuggingSearch Space PruningTree Reduction
Reducing the test input given to a program while preserving some property of interest is important, e.g., to localize faults or to reduce test suites. The well-known delta debugging algorithm and its derivatives automate this task by repeatedly reducing a given input. Unfortunately, these approaches are limited to blindly removing parts of the input and cannot reduce the input by restructuring it. This paper presents the Generalized Tree Reduction (GTR) algorithm, an effective and efficient technique to reduce arbitrary test inputs that can be represented as a tree, such as program code, PDF files, and XML documents. The algorithm combines tree transformations with delta debugging and a greedy backtracking algorithm. To reduce the size of the considered search space, the approach automatically specializes the tree transformations applied by the algorithm based on examples of input trees. We evaluate GTR by reducing Python files that cause interpreter crashes, JavaScript files that cause browser inconsistencies, PDF documents with malicious content, and XML files used to tests an XML validator. The GTR algorithm reduces the trees of these files to 45.3%, 3.6%, 44.2%, and 1.3% of the original size, respectively, outperforming both delta debugging and another state-of-the-art algorithm.
40
Automated Whitebox Fuzz Testing.
Patrice Godefroid, Michael Y. Levin, David A. Molnar · 2008 · 1.1K citations
Hiralal Agrawal, J.R. Horgan · 1990 · 879 citations · Full text
Mark Weiser · International Conference on Software Engineering · 1981 · 702 citations
Isolating cause-effect chains from computer programs
Andreas Zeller · 2002 · 534 citations