About Model-Based Testing
Model-based testing is a test design and test execution method to automate the generation and execution of tests. In QS Combinatorial Testing is used to determine what to test while model-based testing is used to determine how to execute and validate the test. The QS approach is very fast, supports time dependencies and parallel execution and provides efficient execution that achieves the test objective in few steps.
How it works
Model-based testing is a very broad field that covers different approaches from simple state machines to advanced theorem proving. Common to the different approaches is a model that describes the system under test. The model used in QS is a place-transition net where transitions are the actions from the combinatorial test and where each place represents a different combination of factor values. Transitions, the sequence of actions and the flow of data are determined automatically by QS.
A test based on a place/transition net lends itself well to state-transition testing simply by using extra factors to describe the state of data. Such state factors could for a car be “GearPosition”, “BrakeActivated” etc. When an action is expected to change the state of the data (e.g. setting the gear to neutral), the corresponding test simply updates the relevant state property as if the state was actually changed, then later tests relying on the object with the updated expectation will validate results according to this new expectation. This pattern of Lazy Validation is central to the strong ability of QS to find defects.
To support the complexities of real-world systems and to support non-functional testing, QS extends the basic facilities of a place-transition net with facilities to handle cross-cutting data dependencies and time aspects (events and other asynchronous behavior).