MonitorExplorer: A State Exploration-Based Approach to Testing Java Monitors
Yu Lei, Richard Carver, David Kung, Vidur Gupta, and Monica Hernandez
17th International Symposium on Software Reliability Engineering (ISSRE 06)
Raleigh, North Carolina, USA, November 6-11, 2006
Abstract
A Java monitor is a Java class that defines one or more synchronized methods. Unlike a regular object, a Java monitor object is intended to be accessed by multiple threads simultaneously. Thus, testing a Java monitor can be significantly different from testing a regular class. In this paper, we propose a state exploration-based approach to testing a Java monitor. Our approach systematically explores the state space of a Java monitor in a depth-first manner. Each explored path can be considered as a dynamically constructed test. A novel aspect of our approach is that during exploration, threads are introduced on-the-fly, and as needed, to simulate race conditions that can occur when multiple threads try to access a monitor object at the same time. Furthermore, each transition is defined in a way such that the behavior of each path can be precisely characterized and controlled. We describe a prototype tool called MonitorExplorer and report three case studies that are designed to provide an initial evaluation of our approach. The results indicate that our approach is very effective in detecting synchronization-related faults for the monitors we have studied.