Target-Directed Concolic Testing
Cui Zhan · Chinese Journal of Computers · 2011
Concolic testing is an automatic testing technique which combines concrete execution and symbolic execution together.Concolic testing only focuses on programs under test,and lacks the prior knowledge of target faulty statements.From the perspective of detecting defects,time is wasted in generating and executing test inputs that cannot find defects.Furthermore,the limitation of time,budgets,and resources in practical test tasks make this problem even worse.To address this problem,this paper proposes a target-directed testing approach to combine static analysis with concolic testing techniques: the program under test is statically analyzed before testing to identify types and positions of suspicious defects;then,the program is tested with the guidance of the static analysis results.The target-directed testing technique is consisted by 3 steps: Firstly,calculate the reachability relationships from branches to the suspicious statements;Secondly,instrument the program under test for concolic testing;Thirdly,use static analysis information and reachability relationships to guide concolic testing,only generate test inputs can cover suspicious statements,in order to avoid generating test inputs that cannot detect defects.A prototype tool,TARGET,has been implemented based on the proposed technique to test buffer overflows.The authors have experimentally evaluated TARGET on a set of C benchmarks,and the results show that TARGET can find more defects with less time overhead than original concolic testing techniques.