Model-based testing is a software testing approach that is based on models of the system under test and its environment to define, manually or automatically, the test cases.
The models explicitly represent the intended behavior of a system and its environment. The use of explicit models is aimed to avoid the problems caused by a traditional process of defining tests cases that tends to be unstructured, lacking explicit motivations, not reproducible, not documented, and largely influenced by the level of skills of software testers.
Model-based testing tools allow defining the model of the system and provide an automatic generation of the test cases derived from this model. This article lists the main open source model-based testing tools available and recently maintained today. Use our contact form to make us aware of some open source test automation tools for model-based testing that we should add to this list.
Fastbot is an open source model-based testing tool for modeling GUI transitions to discover app stability problems in Android and iOS applications. The model is build via graph transition with the consideration of high reward choice selection. Fastbot combines machine learning and reinforcement learning techniques to assist discovery in a more intelligent way. Fastbot is compatible with multiple Android OS systems, including original Android, Android 5-12 and a variation of modified Android-based system by domestic manufacturers. Inherited from original Monkey, Fastbot allows for fast action insertion as high as 12 actions per second. Expert system is equipped with the ability to customize deeply based on needs from different business lines.
GraphWalker is an open source Model-Based testing tool. It reads models in the shape of directed graphs, and generates [test] paths from these graphs. GraphWalker offers an editor called the Studio in which models can be created and edited. But Studio can do more than just editing. In the tool, the models can be verified by running test path generations, so the user can verify the correctness of the models.
Modelator is an open source tool that facilitates generation and execution of tests. Besides other features, Modelator provides:
* easy selection of a model checker to execute (Apalache or TLC)
* automatic enumeration of tests in TLA+ files
* generation of multiple test executions from the same test assertion
* interfaces for execution of generated tests in target languages (currently Rust and Go
OSMO MBT is an open source tool for generating and executing test cases. Test models are expressed as Java programs, which the test generator executes based on annotations defined in the model. The test generator can be configured with different algorithms to generate tests in different ways. The main point with this approach is a systematic approach to go through the specification and define it more formally in the form of a test model from which the tool can then be used to automatically generate tests. OSMO MBT provides an automated generation of large number of tests for level of coverage not realistic for manual test creation. The set of coverage elements supported:
SICOPE Model is an open source model-based testing tool that uses a single color Petrinet model. SICOPE Model was designed from the ground up to be easily used to model and test your website. No code is required. SICOPE Model lets you focus on modeling your web application and managing bugs, and we’ll do the chores. Go ahead and create some models and tasks.
TorXakis is an open source model-based testing tool. The TorXakis modelling language is powerful enough to capture the behavior of high-tech embedded systems, including communication, synchronization, sequence, parallelism, non-determinism, choices, states, and constraints. Based on the model, TorXakis automatically generates and executes test cases. consequently, whenever the system changes, testers only need to modify the model to be able to test the changed system.
Tcases is a tool for designing tests. It doesn’t matter what kind of system you are testing — UI, command line, REST-ful API, or backend. Nor does it matter what level of the system you are testing — unit, subsystem, or full system. You can use Tcases to design your tests in any of these situations. With Tcases, you define the input space for your system-under-test and the level of coverage that you want. Then Tcases generates a minimal set of test cases that meets your requirements. Tcases is primarily a tool for black-box test design. For such tests, the concept of “coverage” is different from structural testing criteria such as line coverage, branch coverage, etc. Instead, Tcases is guided by coverage of the input space of your system. Tcases gives you a way to define the input space for your system in a form that is concise but comprehensive. Then Tcases allows you to control the number of test cases in your sample subset by specifying the level of coverage you want. You can start with a basic level of coverage, and Tcases will generate a small set of test cases that touches every significant element of the input space. Then you can improve your tests by selectively adding coverage in specific high-risk areas. For example, you can specify pairwise coverage or higher-order combinations of selected input variables.
More resources on Model-Based Testing
Model-based testing on Wikipedia
A Taxonomy Of Model-Based Testing (PDF)
Model-based Testing: Stateful and Model-based Properties with Examples in Java
Model Based Testing – An Introduction to Model-Based Testing and Spec Explorer
Model-based testing (MBT)
Model-Based Testing Adds Value