In an object-oriented system, objects may interact with one another in various combinations. When the system is large, these combinations may create a state explosion problem, making it very difficult to identify and replay failure cases for debugging.
This paper proposes a JINSI tool to isolate failure-causing interactions. Unlike previous work that captures and replays interactions between a component and its environment, this tool records and replays object interactions within a component. The tool then identifies failure-causing calls using object slicing and delta debugging.
In a case study on the COLUMBA freeware email client, JINSI successfully shortlisted 32 cases from a full set of 187,532 interactions by means of object slicing. Using delta debugging, JINSI further narrowed down the shortlisted cases to only two interactions.
The paper is well written with convincing arguments and clear schematic diagrams. On the other hand, the proposal is “proved” by only one particular example. Readers may naturally wonder whether this case can be generalized. For instance, the failures in the case study happen to be due to the interactions within one component. Interactions across different components may be more important in other applications.
In the future, the authors should empirically compare the effectiveness of their tool with other techniques such as delta debugging, static slicing minimization, and selective capture replay. They should also compare the current JINSI with their earlier version that concentrates on the interactions of a component with the environment. These comparative studies can be conducted over various categories of interactive systems.