Electrical Engineering
      and Computer Sciences

Electrical Engineering and Computer Sciences

COLLEGE OF ENGINEERING

UC Berkeley

Heuristics for Scalable Dynamic Test Generation

Jacob Burnim and Koushik Sen

EECS Department
University of California, Berkeley
Technical Report No. UCB/EECS-2008-123
September 19, 2008

http://www.eecs.berkeley.edu/Pubs/TechRpts/2008/EECS-2008-123.pdf

Recently there has been great success in using symbolic execution to automatically generate test inputs for small software systems. A primary challenge in scaling such approaches to larger programs is the combinatorial explosion of the path space. It is likely that sophisticated strategies for searching this path space are needed to generate inputs that effectively test large programs (by, e.g., achieving significant branch coverage). We present several such heuristic search strategies, including a novel strategy guided by the control flow graph of the program under test. We have implemented these strategies in \tname{}, our open source concolic testing tool for C, and evaluated them on two widely-used software tools, grep 2.2 (15K lines of code) and Vim 5.7 (150K lines). On these benchmarks, the presented heuristics achieve significantly greater branch coverage on the same testing budget than concolic testing with a traditional depth-first search strategy.


BibTeX citation:

@techreport{Burnim:EECS-2008-123,
    Author = {Burnim, Jacob and Sen, Koushik},
    Title = {Heuristics for Scalable Dynamic Test Generation},
    Institution = {EECS Department, University of California, Berkeley},
    Year = {2008},
    Month = {Sep},
    URL = {http://www.eecs.berkeley.edu/Pubs/TechRpts/2008/EECS-2008-123.html},
    Number = {UCB/EECS-2008-123},
    Abstract = {  Recently there has been great success in using symbolic execution to
  automatically generate test inputs for small software systems.  A
  primary challenge in scaling such approaches to larger programs is
  the combinatorial explosion of the path space.  It is likely that
  sophisticated strategies for searching this path space are needed to
  generate inputs that effectively test large programs (by, e.g.,
  achieving significant branch coverage).  We present several such
  heuristic search strategies, including a novel strategy guided by
  the control flow graph of the program under test.  We have
  implemented these strategies in \tname{}, our open source concolic
  testing tool for C, and evaluated them on two widely-used software
  tools, grep 2.2 (15K lines of code) and Vim 5.7 (150K lines).  On
  these benchmarks, the presented heuristics achieve significantly
  greater branch coverage on the same testing budget than concolic
  testing with a traditional depth-first search strategy.}
}

EndNote citation:

%0 Report
%A Burnim, Jacob
%A Sen, Koushik
%T Heuristics for Scalable Dynamic Test Generation
%I EECS Department, University of California, Berkeley
%D 2008
%8 September 19
%@ UCB/EECS-2008-123
%U http://www.eecs.berkeley.edu/Pubs/TechRpts/2008/EECS-2008-123.html
%F Burnim:EECS-2008-123