ComputingComputer EngineeringComputer ScienceAlgorithmsComputer ArchitectureProgramming LanguagesConstraint SatisfactionConstraint SolvingControl-flow AnalysisData-flow AnalysisSoftware TestingSymbolic ExecutionAutomated Test GenerationConstraint GenerationPath Constraint SolvingSymbolic Execution EnginesTest Case GenerationTest Generation
In unit testing, a program is decomposed into units which are collections of functions. A part of unit can be tested by generating inputs for a single entry function. The entry function may contain pointer arguments, in which case the inputs to the unit are memory graphs. The paper addresses the problem of automating unit testing with memory graphs as inputs. The approach used builds on previous work combining symbolic and concrete execution, and more specifically, using such a combination to generate test inputs to explore all feasible execution paths. The current work develops a method to represent and track constraints that capture the behavior of a symbolic execution of a unit with memory graphs as inputs. Moreover, an efficient constraint solver is proposed to facilitate incremental generation of such test inputs. Finally, CUTE, a tool implementing the method is described together with the results of applying CUTE to real-world examples of C code.
23
Patrice Godefroid, Nils Klarlund, Koushik Sen · ACM SIGPLAN Notices · 2005 · 2.1K citations
Patrice Godefroid, Nils Klarlund, Koushik Sen · 2005 · 1.5K citations
Thomas A. Henzinger, Ranjit Jhala, Rupak Majumdar et al. · 2002 · 1.2K citations
Koen Claessen, John Hughes · ACM SIGPLAN Notices · 2011 · 1K citations
Koen Claessen, John Hughes · 2000 · 714 citations