Systematic mistake analysis of digital computer programs

Effective program checkout is imperative to any complex computer program. One or more test eases are always run for a program before it is considered ready for application to the actual problem. Each test ease checks that portion of the program actually used in its computation. To() Often, however, mistakes show up as late as several months (or even years) after a program has been put into operation. This is an indication that portions of the program called upon only by rarely occurring input conditions have not been properly tested during the checkout stage. In order to rely with confidence upon any particular program, it is not sufficient to know that the program works most of the time or even that it has never made a mistake so far. The real question is whether it, can be counted upon to fulfill its functional specifications sueeessfully every single time. This means that, after a program has passed the eheekout stage, there should be no possibility that an unusual combination of input data or conditions ,nay bring to light an unexpected mistake in the program. Every portion of tile program must be utilized during checkout in order/ ,hat its correctness may be confirmed. The purpose of work reported here has been to develop a systematic way in which a programmer may test, all realistic combinations of input data, and hence all portions of a given program. Although at first this seems to be an arduous task, its handling is simplified by an orderly approach, and its reward is a greater assurance of the correctness and reliability of the program. The potential number of test cases is given by 2 n, where B is the number of branchpoints in the flowchart. The computer could be programed to generate all of these cases automatically. However, if the number of branchpoints is at all large,

[1]  Richard M. Karp,et al.  A Note on the Applicaton of Graph Theory to Digital Computer Programming , 1960, Inf. Control..

[2]  Lois M. Haibt A program to draw multilevel flow charts , 1959, IRE-AIEE-ACM '59 (Western).

[3]  Richard L. Sauder,et al.  A general test data generator for COBOL , 1962, AIEE-IRE '62 (Spring).

[4]  D. D. McCracken Digital Computer Programming , 1957 .

[5]  Gerard Salton,et al.  Manipulation of trees in information retrieval , 1962, CACM.

[6]  Michael E. Senko A control system for logical block diagnosis with data loading , 1960, CACM.

[7]  Reese T. Prosser,et al.  Applications of Boolean matrices to the analysis of flow diagrams , 1899, IRE-AIEE-ACM '59 (Eastern).

[8]  Daniel D. McCracken Digital computer programming , 1957, General electric series.

[9]  K. Jacoby,et al.  Automation of program debugging , 1961 .

[10]  S. Gill,et al.  The diagnosis of mistakes in programmes on the EDSAC , 1951, Proceedings of the Royal Society of London. Series A. Mathematical and Physical Sciences.