In specification based (black-box) testing we produce a test suite on the basis of a specification. The existence of a formal specification or model introduces the possibility of automating test generation, thus making test generation more efficient. Usually we aim to produce a test suite that satisfies a given property, a test criterion. The test criterion could simply refer to some notion of coverage. Alternatively, the test criterion could be based on a fault domain - an often implicit set F of behaviours with the property that we believe that the implementation under test behaves like some (unknown) element of F. Given such a fault domain F, it is sometimes possible to produce a test suite that determines correctness relative to F: if the implementation under test really does behave like an element of F and it passes our test then it must be correct.
Model based testing is similar to specification based testing - we generate a test suite from a model. However, the model need not be a specification - it could have been produced to provide the basis for testing. It can thus represent some aspect of the requirements.
My primary interest in this topic is the automatic generation of efficient test suites, from a model or specification, that satisfy some test criterion. I have considered state based specifications/models (such as finite state machines, extended finite state machines, communicating finite state machines, and stream X-machines) and specifications written using predicate logic (in e.g. Z, VDM, B).
Back to Rob Hierons' home page
Last updated: 11th August 2004.