The scope of the generated test cases is specified by the definition of the test objectives. This enables the creation of different test suites, which meet the requirements of the test coverage.


All structural elements (state nodes, transitions or transition pairs) can be selected as coverage objective. As in any other test objective, individual elements can be blocked or explicitly set as the only test objective. Transition pairs combine each transition with every possible, immediately successive transition. With the help of transition pairs, it can be ensured that all pairs of directly successive transition sequences are tested.


All requirements linked to the model can be selected as test objectives by choosing the generation strategy. This ensures the complete testing of all requirements by a test suite. As required, individual requirements can be explicitly ignored or blocked during the generation.


A frequent, very abstract requirement for the generated test set is to achieve the required coverage, but stay at the same time efficient with the number or length of the test case. Here arises a challenge for the manual and automatic (or model-based) test case finding. In many cases, it may be useful to include the domain knowledge of the tester and for example provoke particularly interesting partial sequences in a more generic model. Such a routing of the generator is possible via sequence rules in MODICA. This can be a useful function to increase the test depth, especially when combining model-based approaches and black-box testing.


In MODICA, variants are used to describe models that differ only in details. For this purpose, only one model is created that has different variants. When defining the generation strategy, a separate strategy can be defined for each variant. Therefore, for example, different sequence rules can be combined with different variants.


While running through transitions, variables can be specified with values. With a data variation different values for variables can be generated. For example to assign different values of a generation time to a variable with a passed function. As a test property, a variable can be specified with a certain value as well as cross combinations of different values.