Test criteria are defined in order to guide the selection of subsets of the input domain to be covered during testing. A unification
of two categories of test criteria, program based and specification based, is presented. Such a unification is possible for
B models because the specification, refinement concepts and implementation are captured in one notation. The notion of control
flow graph is extended to handle the abstract constructs of the generalized substitution language, and a link between the
coverage of the graph and the coverage of the before-after predicate is established. A set of criteria for the coverage of
the control flow graph is proposed. These criteria are partially ordered according to their stringency, so that the coverage
strategy may be tuned according to the complexity of the operation under test.