AsmL [Barnett et al.(2003)] - which is an abstract state machine
language
One of its features is the possibility to visualise the model of
the system. Because the models of large systems tend to be very
complex, the visualisation makes it possible to merge states of the
system into hyperstates. The idea of hyperstates is merging states
together, creating a layered state space, it is possible to de-clutter
the model. This technique makes it possible to unfold only those
parts of the model that one is interested in.
The tool has a wide range of possibilities to influence the test
runs. For example with parameter selection, method restriction and
state filtering.
It can be used for offline and on-line testing. Offline means
that pregenerated tests are run to test the system. On-line or on-
the-fly testing means that the test is generated dynamically as it
is running. With online test generation the reproducibility might be
lost, but because the test generation can take into account the actual
responses of the system, timing and performance also influence the
result.
The Spec Explorer has excellent features, but from a commer-
cial point of view it is not applicable because it is only available
for non-commercial purposes. There are commercially available
model- based testing tools with similar functionalities. For exam-
ple, Conformiq Qtronic [Huima(2007)] makes it possible to run of-
fline and on-the-fly tests as well.
There are tools which address model based testing through a dif-
ferent approach. They use strictly typed domain specific language
to specify the system under test. One of these tools is HOTTest
[Sinha et al.(2006)]. Using this approach, assuming that all the
domain-specific requirements are available and the model was cre-
ated, it is possible to automatically generate a test oracle. Further-
more, it is possible to extract domain specific invariants to create
additional test cases from the model.
Sinha claims in [Sinha et al.(2006)] that for database sys-
tems this technique was the most effective to capture domain-
specific requirements either explicitly stated in the documenta-
tion/specification or implicit. Implicit requirements are more con-
sidered to the writer of the specification, and as a result they are not
written down but still part of the model.
There is another group of model based testing tools, closely re-
lated to the ones using domain specific languages to specify the
model of a system. These testing tools use the UML specification
of the system as a model to test against. The difference is that the
domain specific languages are, as the name suggests, designed for a
specific problem, whereas UML is a general-purpose modeling lan-
guage. Commercially these tools have wider acceptance, because
usually there is already a UML model available to base the test-
ing on. Both Conformiq Qtronic [Huima(2007)], Rhapsody Test-
Conductor and TnT [Hartmann et al.(2000)] support testing against
UML models. These tools usually provide a graphical interface al-
lowing users to create the model of the system. With complex mod-
els however these can become complicated [Sinha et al.(2006)], be-
cause of their number of states. There are limitations in graphical
systems of how many states can be handled effectively.
3.2 Automated unit testing
Even though unit testing is less time consuming and less complex
than system testing, automating parts of the process can help im-
prove quality.
JUnit [Riehle(2008)] and JTest together create a framework
for Java which can automatically generate test cases for unit test-
ing. There is functionality to add your own tests to the previously
automatically generated ones. In C/C++/C# NTest provides simi-
lar functionality by providing automated testing of classes. What
makes these tools highly valuable for the developer is that these
tests can be run after every change in the code without major effort.
3.3 Integrated Frameworks
There are directions in the industry/research which aim to create
a common framework that provides a well defined interface for
different kinds of model based testing tools.
One of these is the AGEDIS [Hartman et al.(2004)] framework.
The user has to specify three different things for the testing: