Abstract: Testing with manually generated test cases is the primary
technique used in industry to improve reliability of software--in fact,
such testing is reported to account for over half of the typical cost of
software development. I will describe Concolic Testing, an efficient
approach which combines random and symbolic testing. Concolic testing
enables automatic and systematic testing of large programs, avoids
redundant test cases and does not generate false warnings. Experiments
on real-world software show that concolic testing can be used to
effectively catch generic errors such as assertion violations, memory
leaks, uncaught exceptions, and segmentation faults. Combined with
dynamic partial order reduction techniques, concolic testing is
effective in catching concurrency bugs such as data races and deadlocks.
I will describe my experience with building two concolic testing tools,
CUTE for C programs and jCUTE for Java programs, and applying these
tools to real-world software systems. Finally, I will provide a brief
overview of my research in predictive runtime monitoring, statistical
and probabilistic model checking, application of machine learning to
verify infinite state systems, and probabilistic programming.
Bio : Koushik Sen is a Ph.D. student in the Computer Science Department
at the University of Illinois at Urbana-Champaign, where he is advised
by Professor Gul Agha. Koushik got his B.S. from Indian Institute of
Technology, Kanpur, India in 1999. He subsequently worked as a software
engineer and middleware architect in two startups before joining the
University of Illinois at Urbana-Champaign. His paper on concolic
testing won the ACM SIGSOFT Distinguished Paper Award at ESEC/FSE'05. He
received the C. W. Gear Outstanding Graduate Award in 2005 for being the
best graduate student and the C.L. and Jane W-S. Liu Award in 2004 for
exceptional research promise from the UIUC Department of Computer
Science.