Loading

Model Based Testing: A Learner's Approach


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.

Methods to Implement Model-Based Testing:

  • Online testing: Model-based testing applications are directly implemented in the system under test (SUT), and the dynamic test is carried out.
  • Offline formation of concrete tests: This process involves the creation of assets which can be apprehended by computer and are placed for automatic execution in the future.
  • Offline formation of concrete tests: This process involves the creation of assets which can be apprehended by computer and are placed for automatic execution in the future.
  • Offline generation of manually deployable tests: This process involves a model based testing tool which is similar to the above, but the assets can be read by a human as well as kept for future reference.
  • The tests in model-based testing allow automation and this factor add effectiveness to the testing method. Thus, if a model is machine readable with a precise behavioral description then test cases can be derived according to algorithms as specified below:

From finite state machine:

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.

Theorem proving:

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 and Symbolic execution:

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.