Critical slicing for software fault localization

  • Authors:
  • Richard A. DeMillo;Hsin Pan;Eugene H. Spafford

  • Affiliations:
  • Bellcore, 445 South Street, Morristown NJ;Department of Computer and Information Science, National Chiao-Tung University, HsinChu, Taiwan, ROC;Software Engineering Research Center, 1398 Computer Sciences Building, Purdue University, West Lafayette, IN

  • Venue:
  • ISSTA '96 Proceedings of the 1996 ACM SIGSOFT international symposium on Software testing and analysis
  • Year:
  • 1996

Quantified Score

Hi-index 0.00

Visualization

Abstract

Developing effective debugging strategies to guarantee the reliability of software is important. By analyzing the debugging process used by experienced programmers, we have found that four distinct tasks are consistently performed: (1) determining statements involved in program failures, (2) selecting suspicious statements that might contain faults, (3) making hypotheses about suspicious faults (variables and locations), and (4) restoring program state to a specific statement for verification. This research focuses support for the second task, reducing the search domain for faults, which we refer to as fault localization.We explored a new approach to enhancing the process of fault localization based on dynamic program slicing and mutation-based testing. In this new approach, we have developed the technique of Critical Slicing to enable debuggers to highlight suspicious statements and thus to confine the search domain to a small region. The Critical Slicing technique is partly based on "statement deletion" mutant operator of the mutation-based testing methodology. We have explored properties of Critical Slicing, such as the relationship among Critical Slicing, Dynamic Program Slicing, and Executable Static Program Slicing; the cost to construct critical slices; and the effectiveness of Critical Slicing. Results of experiments support our conjecture as to the effectiveness and feasibility of using Critical Slicing for fault localization.This paper explains our technique and summarizes some of our findings. From these, we conclude that a debugger equipped with our proposed fault localization method can reduce human interaction time significantly and aid in the debugging of complex software.