Generalized algorithmic debugging and testing
- 1 December 1992
- journal article
- Published by Association for Computing Machinery (ACM) in ACM Letters on Programming Languages and Systems
- Vol. 1 (4) , 303-322
- https://doi.org/10.1145/161494.161498
Abstract
This paper presents a method for semi-automatic bug localization, generalized algorithmic debugging, which has been integrated with the category partition method for functional testing. In this way the efficiency of the algorithmic debugging method for bug localization can be improved by using test specifications and test results. The long-range goal of this work is a semi-automatic debugging and testing system which can be used during large-scale program development of nontrivial programs.The method is generally applicable to procedural langua ges and is not dependent on any ad hoc assumptions regarding the subject program. The original form of algorithmic debugging, introduced by Shapiro, was however limited to small Prolog programs without side-effects, but has later been generalized to concurrent logic programming languages. Another drawback of the original method is the large number of interactions with the user during bug localization.To our knowledge, this is the first method which uses category partition testing to improve the bug localization properties of algorithmic debugging. The method can avoid irrelevant questions to the programmer by categorizing input parameters and then match these against test cases in the test database. Additionally, we use program slicing, a data flow analysis technique, to dynamically compute which parts of the program are relevant for the search, thus further improving bug localization.We believe that this is the first generalization of algorithmic debugging for programs with side-effects written in imperative languages such as Pascal. These improvements together makes it more feasible to debug larger programs. However, additional improvements are needed to make it handle pointer-related side-effects and concurrent Pascal programs.A prototype generalized algorithmic debugger for a Pascal subset without pointer side-effects and a test case generator for application programs in Pascal, C, dBase, and LOTUS have been implemented.Keywords
This publication has 11 references indexed in Scilit:
- Using assertions in declarative and operational models for automated debuggingJournal of Systems and Software, 1994
- Techniques for debugging parallel programs with flowback analysisACM Transactions on Programming Languages and Systems, 1991
- Interprocedural slicing using dependence graphsACM Transactions on Programming Languages and Systems, 1990
- Dynamic program slicingInformation Processing Letters, 1988
- The category-partition method for specifying and generating fuctional testsCommunications of the ACM, 1988
- Knowledge-Based Program Debugging SystemsIEEE Software, 1987
- Program SlicingIEEE Transactions on Software Engineering, 1984
- Symbolic debugging through incremental compilation in an integrated environmentJournal of Systems and Software, 1983
- Programmers use slices when debuggingCommunications of the ACM, 1982
- Method for determining the side effects of procedure calls [Thesis]Published by Office of Scientific and Technical Information (OSTI) ,1978