pldi2005 - DART Directed Automated Random Testing Patrice...

Info iconThis preview shows pages 1–2. Sign up to view the full content.

View Full Document Right Arrow Icon
DART: Directed Automated Random Testing Patrice Godefroid Nils Klarlund Bell Laboratories, Lucent Technologies { god,klarlund } Koushik Sen Computer Science Department University of Illinois at Urbana-Champaign [email protected] Abstract We present a new tool, named DART, for automatically testing soft- ware that combines three main techniques: (1) automated extrac- tion 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 test- ing and automatic generation of new test inputs to direct systemati- cally 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 com- piles – there is no need to write any test driver or harness code. Dur- ing 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. Categories and Subject Descriptors D.2.4 [ Software Engineer- ing ]: Software/Program VeriFcation; D.2.5 [ Software Engineer- ing ]: Testing and Debugging; ±.3.1 [ Logics and Meanings of Pro- grams ]: Specifying and Verifying and Reasoning about Programs General Terms VeriFcation, Algorithms, Reliability Keywords Software Testing, Random Testing, Automated Test Generation, Interfaces, Program VeriFcation 1. Introduction Today, testing is the primary way to check the correctness of soft- ware. Billions of dollars are spent on testing in the software indus- try, as testing usually accounts for about 50% of the cost of software development [27]. It was recently estimated that software failures currently cost the US economy alone about $60 billion every year, and that improvements in software testing infrastructure might save one-third of this cost [31]. Among the various kinds of testing usually performed during the software development cycle, unit testing applies to the indi- vidual components of a software system. In principle, unit testing plays an important role in ensuring overall software quality since its role is precisely to detect errors in the component’s logic, check all corner cases, and provide 100% code coverage. Yet, in practice, Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for proF t or commercial advantage and that copies bear this notice and the full citation on the F rst page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior speciF c permission and/or a fee. PLDI’05
Background image of page 1

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Image of page 2
This is the end of the preview. Sign up to access the rest of the document.

This note was uploaded on 10/04/2011 for the course CEN 5016 taught by Professor Workman,d during the Spring '08 term at University of Central Florida.

Page1 / 11

pldi2005 - DART Directed Automated Random Testing Patrice...

This preview shows document pages 1 - 2. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online