Most of today's software testing techniques somehow go back to the early attempts to define the nature of software tests of the mid seventies. (Miller81) is a comprehensive tutorial of software testing and validation techniques that takes up the most important approaches to testing and validation between 1974 and 1981. However, though the problem of testing has steadily gained importance, there is astonishingly little progress to be noted concerning the basic methodology and the techniques offered. Obviously, development in the area of testing techniques cannot keep pace with the increasing speed in the development of new hard- and software. This, however, is highly problematic because today's software systems are n-times more complex than their predecessors of the seventies. Despite the frequent usage of various tools which support the software development process to a large extent, the increasing complexity of systems leads to an increasing probability of software errors.
Glass box testing requires the intimate knowledge of program internals, while black box testing is based solely on the knowledge of the system requirements. Glass box (or white box) testing involves the knowledge of the program internals (Howden80, 162), (Thaller93, 135), (Bukowski87, 370), and (Musa87, 521). Being primarily concerned with program internals, it is obvious in SE literature that the primary effort to develop a testing methodology has been devoted to glass box tests. However, since the importance of black box testing has gained general acknowledgement, also a certain number of useful black box testing techniques were developed.
The following survey will briefly outline the most important glass and black box testing techniques. Each of the different techniques as they are presented in the following has its own merits and drawbacks and are therefore mostly applied in combination rather than exclusively. Black box testing mainly requires the knowledge of the system requirements (Thaller93, 135), (Musa87, 521) and (Howden80, 162).