T8

Parameterized Unit Testing: Theory and Practice

Nikolai Tillmann, Microsoft Research, USA
Jonathan De Halleux, Microsoft Research, USA
Tao Xie, North Carolina State University, USA

Monday, 3 May 2010 (afternoon)

Abstract:

Unit testing has been widely recognized as an important and valuable means of improving software reliability, as it exposes bugs early in the software development life cycle. However, manual unit testing is often tedious and insufficient. Testing tools can be used to enable economical use of resources by reducing manual effort. Recently parameterized unit testing has emerged as a very promising and effective methodology to allow the separation of two testing concerns or tasks: the specification of external, black-box behavior (i.e., assertions or specifications) by developers and the generation and selection of internal, white-box test inputs (i.e., high-code-covering test inputs) by tools. A parameterized unit test (PUT) is simply a test method that takes parameters, calls the code-under-test, and states assertions. PUTs have been supported by various test frameworks. Various open source and industrial testing tools also exist to generate test inputs for PUTs.

This tutorial presents latest research on principles and techniques, as well as practical considerations to apply parameterized unit testing on real-world programs, highlighting success stories, research and education achievements, and future research directions in developer testing. The tutorial will help improve developer skills and knowledge for writing PUTs and give overview of tool automation in supporting PUTs. Attendees will acquire the skills and knowledge needed to perform research or conduct practice in the field of developer testing and to integrate developer testing techniques in their own research, practice, and education.

Presenters:

Nikolai Tillmann is a Principal Research Software Design Engineer in the Foundations of Software Engineering (FSE) group at Microsoft Research in Redmond, USA, where he has been since January 2001. Previously, he received a M.S. ("Diplom") in Computer Science from the Technical University of Berlin in 2000. After working on modeling techniques and tools in the AsmL and Spec Explorer projects, his current research area is runtime verification and techniques for automatic test case generation.

Jonathan ‘Peli’ de Halleux is a Senior Research Software Design Engineer in the Foundations for Software Engineering (FSE) group at Microsoft Research in Redmond, USA, where he has been since October 2006. From 2004 to 2006, he worked in the Common Language Runtime (CLR) as a Software Design Engineer in Test (SDE/T) in charge of the Just In Time compiler. Before joining Microsoft, he earned a PhD in Applied Mathematics from the Catholic University of Louvain. Earlier, he developed the unit testing framework MbUnit.

Tao Xie received his Ph.D. in Computer Science from the University of Washington at Seattle in 2005. He is currently an Assistant Professor in the Department of Computer Science at North Carolina State University since 2005. His research interests are in automated software testing and mining software engineering data. He has served as ACM SIGSOFT history liaison in the SIGSOFT Executive Committee. He received a National Science Foundation Faculty Early Career Development (CAREER) Award in 2009. He received 2008 and 2009 IBM Faculty Awards and a 2008 IBM Jazz Innovation Award. He was Program Co-Chair of 2009 IEEE International Conference on Software Maintenance (ICSM) as well as Student Papers Track Program Co-Chair of ICST 2008 and Tutorial Co-Chair of ASE 2009. He has served on program committees of various conferences and workshops, including ICSE, ASE, ISSTA, and WWW. He has co-organized WebTest 2009 and TAV-WEB 2008. He is a co-organizer of a Dagstuhl Seminar on Mining Programs and Processes in 2007 and Dagstuhl Seminar on Practical Software Testing: Tool Automation and Human Factors. He has served on program committees of ICSE, ISSTA, WWW, and ASE.