Open Systems Laboratory at Illinois

DART: directed automated random testing

By Patrice Godefroid, Nils Klarlund, and Koushik Sen. In PLDI, 213–223. ACM, 2005.

Full Text:
Download PDF
Publisher Link:
http://doi.acm.org/10.1145/1065010.1065036

Abstract

We present a new tool, named DART, for automatically testing software that combines three main techniques: (1) automated extraction of the interface of a program with its external environment using static source-code parsing; (2) automatic generation of a test driver for this interface that performs random testing to simulate the most general environment the program can operate in; and (3) dynamic analysis of how the program behaves under random testing and automatic generation of new test inputs to direct systematically the execution along alternative program paths. Together, these three techniques constitute Directed Automated Random Testing, or DART for short. The main strength of DART is thus that testing can be performed completely automatically on any program that compiles -- there is no need to write any test driver or harness code. During testing, DART detects standard errors such as program crashes, assertion violations, and non-termination. Preliminary experiments to unit test several examples of C programs are very encouraging.

BibTeX

@inproceedings{conf/pldi/GodefroidKS05,
    author = "Godefroid, Patrice and Klarlund, Nils and Sen, Koushik",
    editor = "Sarkar, Vivek and Hall, Mary W.",
    title = "{DART}: directed automated random testing",
    booktitle = "PLDI",
    crossref = "conf/pldi/2005",
    ee = "http://doi.acm.org/10.1145/1065010.1065036",
    keywords = "formal methods, software engineering",
    pages = "213-223",
    year = "2005",
}

@proceedings{conf/pldi/2005,
    editor = "Sarkar, Vivek and Hall, Mary W.",
    title = "Proceedings of the ACM SIGPLAN 2005 Conference on
             Programming Language Design and Implementation, Chicago, IL, USA,
             June 12-15, 2005",
    isbn = "1-59593-056-6",
    publisher = "ACM",
    year = "2005",
}