Software testing which involves applying model-based designs applications for designing a system is known as model-based testing. This type of testing is also implemented for executing artifacts in software design. The models are used for understanding the operation of a proposed design or system under test (SUT). Other applications of model-based testing include representation of the testing environment and relevant testing strategies.
Model-based testing involves the creation of models before testing or in unison with system testing. Completed systems can also be used to derive models. The modeling languages used are UML and SysML and other prominent programming languages. Other entities associated with the creation of models are finite machines specifications and mathematical terminologies such as Z, Event-B, COQ or Alloy.
This model is treated as state transaction system or finite state automation. In this type of model, all the probable system configurations which are under testing are represented. Test case evaluation is done by searching executable paths since they can be apt test cases. This method is valid for models which are deterministic or can be turned into one.
This approach has been followed in the automatic proving of logical formulas. Test cases are determined by partitioning the model into equivalence classes. Each class denotes specific system behavior, and we get our test case.
Constraint logic programming is used to scout test cases which meet certain limitations. Symbolic execution can be done in line with constraint programming. The difference is that data constraints in different control paths are evaluated before solving constraints and getting test cases.
The model-based testing is the great way to do software testing. This will help to understand the operation of the design or the system which is under test. But this may become costly as it required building the mode which will affect the project cost.