Unit testing, the process of checking the correctness of program units in isolation, is an important part of software development but rarely done in a systematic way as it is tedious and error-prone to do so manually. In object-oriented programs, unit tests consist of sequences of methods calls. This talk will discuss several recent techniques that automate unit testing and will focus on Symstra, a technique that automates generation of unit tests by symbolic execution of sequences of method calls with symbolic arguments. Symstra is based on a novel comparison of symbolic states of object-oriented programs. Given a set of methods from the class under test and a bound on the length of sequences, Symstra systematically explores the object-state space of the class and prunes this exploration based on the state comparisons. Experimental results show that Symstra generates unit tests that achieve a higher branch coverage faster than the techniques that systematically explore the object-state space based on concrete method arguments.
Bio
Darko Marinov is an Assistant Professor in the Department of Computer Science at the University of Illinois at Urbana-Champaign. He received his Ph.D. (in 2004) and S.M. (in 2000) from MIT and his B.S. (in 1997) from the University of Belgrade, Yugoslavia. His main research interests are in Software Engineering and Programming Languages. He is interested in rich specification languages and checking code conformance, both dynamically and statically. He is also interested in compilers, particularly in correctness of analyses and optimizations.