Protest is a system written in Prolog for the automatic testing of modules written in C. It acts as a test harness by calling the module through the C interface of the underlying Prolog system. The paper deals with particular features of the Protest system as well as with general considerations on testing techniques: both the input generation and the test oracle problem are addressed, and the authors discuss several strategies to make adequate choices.
Protest includes a tool for specifying the interface syntax of the module to be tested. Automatic syntax checking is performed on the test cases to exclude failures caused by errors in the testing environment.
In addition to user-defined sets of test cases (input plus correct output), the authors suggest writing an oracle in Prolog, that is, an executable specification of the module. For a given input, both the C and the Prolog versions of the program are run, and the outputs are compared. Reasonable development times and runtimes of such oracles are reported.
The Protest system is experimental and oriented toward further research. This status is reflected in the size and complexity of the modules to which Protest has been applied; they are typical toy examples. More insight would have been gained by applying the system to at least one real module of medium or large size.
The idea of using Prolog as a test environment for modules written in imperative languages is appealing; compared to C, Prolog’s expressiveness is high enough for it to be considered a specification language. On the practical side, the approach is easy and quick to use.
The paper is easy to read and of reasonable length. Basic knowledge about testing or Prolog is helpful but not strictly necessary. The discussion of related work and the references are satisfactory.