Systematic Testing of Software with Structurally Complex Inputs
Google Tech Talks
January, 7 2008
Modern software pervasively uses structurally complex data, for example web-traversal code operates on graphs that encode web pages, and IDEs manipulate program representations such as abstract syntax trees. The standard approach to generating test suites for such software, manual generation of the inputs in the suite, is tedious and error-prone. This talk presents a new approach that automates the generation of suites with structurally complex test inputs. Our approach is based on test abstractions which provide a high-level description of desired test suites. Developers do not need to manually write large suites of individual tests but instead write test abstractions from which tools automatically generate individual tests. This approach has helped developers in both industry and academia to discover bugs in several real applications. This talk focuses on two recent projects, speeding up testing through parallelization (our experiments on up to 1024 machines on the Google's infrastructure show significant speedups, over 500 times) and using imperative test abstractions (in particular to test parts of Eclipse and NetBeans, two popular IDEs, in which our approach discovered 45 new bugs).
This is joint work with Brett Daniel, Danny Dig, Kely Garcia (UIUC), Sarfraz Khurshid (UT Austin), Aleksandar Milicevic, Sasa Misailovic (University of Belgrade), and Nemanja Petrovic (Google, New York).
Speaker: Darko Marinov
Darko Marinov is an Assistant Professor in the Department of Computer Science at the University of Illinois at Urbana-Champaign. He defended his Ph.D. at MIT in 2004. His main research interests are in Software Engineering, with focus on improving software reliability using software testing and model checking. His work is supported by NSF and Microsoft.
Home page: http://www-faculty.cs.uiuc.edu/~marinov