The syntax is represented as a number of rules each of which defines the possible means of production of a symbol in terms of sequences of, iterations of, or selections between other symbols.
Test cases with valid and invalid syntax are designed from the formally defined syntax of the inputs to the component.
Test cases with valid syntax shall be designed to execute options which are derived from rules which shall include those that follow, although additional rules may also be applied where appropriate:
- whenever a selection is used, an option is derived for each alternative by replacing the selection with that alternative;
- whenever an iteration is used, at least two options are derived, one with the minimum number of iterated symbols and the other with more than the minimum number of repetitions.
A test case may exercise any number of options. For each test case the following shall be identified:- the input(s) to the component
- option(s) exercised
- the expected outcome of the test case
Test cases with invalid syntax shall be designed as follows:
- a checklist of generic mutations shall be documented which can be applied to rules or parts of rules in order to generate a part of the input which is invalid;
- this checklist shall be applied to the syntax to identify specific mutations of the valid input, each of which employs at least one generic mutation;
- test cases shall be designed to execute specific mutations.
For each test case the following shall be identified:- the input(s) to the component
- the generic mutation(s) used
- the syntax element(s) to which the mutation or mutations are applied;
- the expected outcome of the test case.