Professional testing made playfully easy!




Model-based testing is an innovative test approach to improve the effectiveness and efficiency of the testing process. A model-based tester uses models to control test design and analysis, and also takes advantage of models for other test activities such as test case generation and test report generation..


( ISTQB® MBT certification )



Our strength is the automated, model-based generation of test suites using graphical usage models for hardware and software systems.

Our highly efficient TestPlayer© tool guides you quickly and accurately to the effective testing of your IT applications.

The TestPlayer© is independent of special application domains and can be used in a variety of ways, but we can refer to concrete expertise in the areas of information and communication technology, medical technology and automotive.





Scroll To Top

Model-driven Test Case Generation


An approach, where the test cases are generated in parts or completely from a model is called Model-driven Testing.

The V Model


In general, a distinction is made between

  • System specifications, which model the functional behavior of the SUT, i.e. the system under test and
  • Usage models that model the usage behavior of the future users of the system.

Test cases, which are generated from a system specification are mostly used in the so-called component- or unit test. Usage models are applied for the generation of test cases for the system- and acceptance test, respectively.

The widespread V Model clarifies this relation by distinguishing between the development and the test of a system.



The concept of TestPlayer© is very general and independent of specific fields of application. In this way it is possible to create test models that can be used in any domain.



Scroll To Top

Statistical Test Case Generation


With the help of statistical usage models, so-called Markov chains, individual test cases or complete test suites are automativally provided by simple push button operations.

Markov Chains


Markov chains are graphical models and represent


  • usage states for modelling the user behavior during the interaction with the system, as well as
  • state transitions to specify the reaction of the system on a user's interaction.

For example, the input of a search item in the search field of an Internet browser is an interaction between the user and the browser and displaying a list of web pages that fulfill the search criterion is the expected response of the system. Both usage states <input of a search item> and <output of a list with web pages> as well as the state transition between these usage states that is triggered when the interacting user is pressing the Enter key are described in the Markov chain.



Usually there are many alternatives to move from a given usage state to possible successor states. For example, instead of pressing the Enter key in our example a different action may be performed, such as switching to another window by using the mouse. This will bring the user to another usage state.



The probability that a particular action can be performed is called transition probability between the usage states.

By adjusting the transition probabilities, you can easily define different user classes. In this way, different test cases can be created automatically for different system users.



Scroll To Top

Automatic Test Case Generation


The TestUS TestPlayer© is a versatile tool for the automatic generation of test cases and and for the analysis, visualization and evaluation of the generated test suites.

The TestPlayer©


Using the TestPlayer©, it is possible to assess the quality of the generated test cases on the basis of graphical representations at an early stage and even before the actual test execution.


The TestPlayer© allows the characteristic properties of a test suit to be seen very quickly, such as


  • the maximium length of a test case , i.e. the number of single test steps between the start and the end state of the markov chain,
  • the mean length of the test cases in a test suite,
  • the accordance between the usage profile of the Markov chain and the usage frequencies of the generated test suite,
  • the coverage of all usage states after having executed the test suite and
  • the coverage of all state transitions after having executed the test suite.

Our expertise and experience from various national and international projects show that statistical usage models based on Markov chains are excellently suited for the testing of applications in different domains, such as


  • Information and communication technology,
  • Medical technology,
  • Automotive , as well as
  • Automation technology.

The concept of the TestPlayer© is very general and independent of specific fields of application. This makes it possible to create test models that can be used in any domain.



Scroll To Top


Automatic Test Suite Generation


Our strength is the automated, model-based generation of test suites using graphical usage models for hardware and software systems. Test suites can be further processed as JSON documents for the development of executable test cases or can be visualized in a user-friendly way.

The Test Player© Dashboard enables the test developer to set configuration parameters in a convenient way and to star_ent the generation of the required test cases with a mouse click.

After a few seconds the TestPlayer© automatically generates an abstract test suite, which can be downloaded as a JSON document via the file handler.

Additional characteristic features of the generated test suite, such as coverage properties or mean length of a test case allow the tester to quickly assess the required quality criteria.

The following diagrams show the dynamic visualization of test cases for testing an ATM. The test-suite ensures a complete coverage of all usage states when operating the ATM, i. e. each usage state is passed at least once during execution of the test.

Each test case begins in the start state [ and stops in the end state ].

The tab MCUM (Markov Chain Usage Model) shows the usage model provided by the tester and the test cases derived from it. Usage models are created in the Model editor section using the integrated graphical model editor.

The Simulated Annealing , star_en , tree_en , grid_en , and Graph Optimizing tabs show diagrams of various visualization algorithms and topologies that the TestPlayer© provides for different display options of the automatically generated test suite. The first diagram represents the visualization of the usage model, the following diagrams show an accumulative test case. Accumulative test cases visualize not only the test steps of the test cases, but also the coverage of states and state transitions that has already been achieved.


The TestPlayer© enables an efficient and goal-oriented analysis and visualization of the generated test suite. Various analysis and visualization algorithms with different characteristics are provided for this purpose.



Scroll To Top


Hello MBT World - Model-based testing for beginners


Our strength is the automated, model-based generation of test suites using graphical user models for hardware and software systems.

The Hello-MBT-World example demonstrates how model-based testing can be used to test Java GUI applications. For this purpose, a Java Swing application HelloMBTWorld.jar , which is stored in the TestPlayer© directory app together with the source code, is started (see below) in such a way that all click events of the buttons are triggered via an automatically generated test file.


The following diagrams first illustrate how the Java application HelloMBTWorld behaves when the four buttons Hello , MBT , World and Clear are pressed. The red Bye button terminates the execution of the application.


  • Start


  • Hello


  • World


  • MBT


  • Clear


  • MBT


  • World

...

A corresponding statistical usage model, which serves as a basis for the automatic generation of test cases, looks like this for the HelloMBTWorld application:



After starting the Java application, usage state Clear is directly reached from the start state [ and then, depending on whether the click events ClickHello , ClickMBT , ClickWorld or ClickClear are selected the usage states Hello , MBT , World or Clear are reached. Pressing the Bye button generates the click event ClickBye and terminates the test case when the final state ] is reached.

The additional generic probabilities p1 bis p20 at the edges behind the input events define the transition probabilities for selecting the respective input events. Prior to the generation of the test cases, the TestPlayer© replaces the generic values by concrete probability values that either originate from a given test profile or are calculated on the basis of a uniform geometric distribution.

By applying the usage model above the TestPlayer© Dashboard offers simple user interactions to automatically generate dedicated test suites that have specific characteristics, i.e

  • complete coverage of all usage states
  • complete coverage of all possible transitions between the usage states
  • coverage of all loop-free paths between the start state [ and the final state ], i.e. no transition is selected twice within the same test case
The default number of test cases that are generated by the TestPlayer© is 100, but can easily be changed within the TestPlayer© Dashboard. Test suites that possess the specific characteristics defined above arise by reduction with respect to the given coverage and sort criteria. Below three test suites are presented that are generated by using the sort criterion sort_l , i.e. test cases are selected from 100 statistically generated test cases by first sorting them with respect to the length of the test cases.






  • Testsuite state coverage contains 4 (out of 100) test cases
The individual test cases are animated (emphasized by bold orange coloring) and show the current coverage of usage states as well as transitions between the states (represented by pale orange coloring). The number after the colon of the particular click event shows how often the state transition within the test case was executed.


  • Testsuite transition coverage contains 17 (out of 100) test cases
The individual test cases are animated (emphasized by bold orange coloring) and show the current coverage of usage states as well as transitions between the states (represented by pale orange coloring). The number after the colon of the particular click event shows how often the state transition within the test case was executed.


  • Testsuite path coverage contains 57 (out of 100) test cases
The individual test cases are animated (emphasized by bold orange coloring) and show the current coverage of usage states as well as transitions between the states (represented by pale orange coloring). The number after the colon of the particular click event shows how often the state transition within the test case was executed.

In addition to the graphical representations, the TestPlayer© also generates text files that provide the test cases of the test suite in compact JSON format for further processing, especially for test execution.



Content of the file test_cases_for_state_coverage.json.txt :

[
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  {}
]
Content of the file test_cases_for_transition_coverage.json.txt :

[
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickClear", "Clear"],
    ["Clear", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickMBT", "MBT"],
    ["MBT", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickClear", "Clear"],
    ["Clear", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickMBT", "MBT"],
    ["MBT", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickClear", "Clear"],
    ["Clear", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickHello", "Hello"],
    ["Hello", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickMBT", "MBT"],
    ["MBT", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickClear", "Clear"],
    ["Clear", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickHello", "Hello"],
    ["Hello", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickHello", "Hello"],
    ["Hello", "ClickBye", "]"]
  ],
  {}
]
Content of the file test_cases_for_path_coverage.json.txt :

[
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickClear", "Clear"],
    ["Clear", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickMBT", "MBT"],
    ["MBT", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickClear", "Clear"],
    ["Clear", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickMBT", "MBT"],
    ["MBT", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickClear", "Clear"],
    ["Clear", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickHello", "Hello"],
    ["Hello", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickClear", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickMBT", "MBT"],
    ["MBT", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickClear", "Clear"],
    ["Clear", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickHello", "Hello"],
    ["Hello", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickHello", "Hello"],
    ["Hello", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickHello", "Hello"],
    ["Hello", "ClickClear", "Clear"],
    ["Clear", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickClear", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickClear", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickClear", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickClear", "Clear"],
    ["Clear", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickWorld", "World"],
    ["World", "ClickMBT", "MBT"],
    ["MBT", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickMBT", "MBT"],
    ["MBT", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickWorld", "World"],
    ["World", "ClickClear", "Clear"],
    ["Clear", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickMBT", "MBT"],
    ["MBT", "ClickHello", "Hello"],
    ["Hello", "ClickClear", "Clear"],
    ["Clear", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickHello", "Hello"],
    ["Hello", "ClickHello", "Hello"],
    ["Hello", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickMBT", "MBT"],
    ["MBT", "ClickHello", "Hello"],
    ["Hello", "ClickClear", "Clear"],
    ["Clear", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickWorld", "World"],
    ["World", "ClickClear", "Clear"],
    ["Clear", "ClickClear", "Clear"],
    ["Clear", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickHello", "Hello"],
    ["Hello", "ClickMBT", "MBT"],
    ["MBT", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickHello", "Hello"],
    ["Hello", "ClickHello", "Hello"],
    ["Hello", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickWorld", "World"],
    ["World", "ClickMBT", "MBT"],
    ["MBT", "ClickHello", "Hello"],
    ["Hello", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickClear", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickHello", "Hello"],
    ["Hello", "ClickMBT", "MBT"],
    ["MBT", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickClear", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickHello", "Hello"],
    ["Hello", "ClickHello", "Hello"],
    ["Hello", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickWorld", "World"],
    ["World", "ClickMBT", "MBT"],
    ["MBT", "ClickHello", "Hello"],
    ["Hello", "ClickClear", "Clear"],
    ["Clear", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickClear", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickWorld", "World"],
    ["World", "ClickMBT", "MBT"],
    ["MBT", "ClickClear", "Clear"],
    ["Clear", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickHello", "Hello"],
    ["Hello", "ClickWorld", "World"],
    ["World", "ClickWorld", "World"],
    ["World", "ClickHello", "Hello"],
    ["Hello", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickMBT", "MBT"],
    ["MBT", "ClickHello", "Hello"],
    ["Hello", "ClickWorld", "World"],
    ["World", "ClickMBT", "MBT"],
    ["MBT", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickMBT", "MBT"],
    ["MBT", "ClickWorld", "World"],
    ["World", "ClickMBT", "MBT"],
    ["MBT", "ClickHello", "Hello"],
    ["Hello", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickWorld", "World"],
    ["World", "ClickClear", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickClear", "Clear"],
    ["Clear", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickHello", "Hello"],
    ["Hello", "ClickWorld", "World"],
    ["World", "ClickMBT", "MBT"],
    ["MBT", "ClickMBT", "MBT"],
    ["MBT", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickMBT", "MBT"],
    ["MBT", "ClickHello", "Hello"],
    ["Hello", "ClickHello", "Hello"],
    ["Hello", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickWorld", "World"],
    ["World", "ClickHello", "Hello"],
    ["Hello", "ClickWorld", "World"],
    ["World", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickMBT", "MBT"],
    ["MBT", "ClickClear", "Clear"],
    ["Clear", "ClickClear", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickClear", "Clear"],
    ["Clear", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickClear", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickMBT", "MBT"],
    ["MBT", "ClickMBT", "MBT"],
    ["MBT", "ClickHello", "Hello"],
    ["Hello", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickHello", "Hello"],
    ["Hello", "ClickClear", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickWorld", "World"],
    ["World", "ClickHello", "Hello"],
    ["Hello", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickClear", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickClear", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickClear", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickWorld", "World"],
    ["World", "ClickClear", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickHello", "Hello"],
    ["Hello", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickHello", "Hello"],
    ["Hello", "ClickMBT", "MBT"],
    ["MBT", "ClickClear", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickHello", "Hello"],
    ["Hello", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickMBT", "MBT"],
    ["MBT", "ClickClear", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickWorld", "World"],
    ["World", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickClear", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickHello", "Hello"],
    ["Hello", "ClickMBT", "MBT"],
    ["MBT", "ClickClear", "Clear"],
    ["Clear", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickMBT", "MBT"],
    ["MBT", "ClickWorld", "World"],
    ["World", "ClickClear", "Clear"],
    ["Clear", "ClickClear", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickMBT", "MBT"],
    ["MBT", "ClickWorld", "World"],
    ["World", "ClickWorld", "World"],
    ["World", "ClickHello", "Hello"],
    ["Hello", "ClickClear", "Clear"],
    ["Clear", "ClickClear", "Clear"],
    ["Clear", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickMBT", "MBT"],
    ["MBT", "ClickMBT", "MBT"],
    ["MBT", "ClickHello", "Hello"],
    ["Hello", "ClickClear", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickClear", "Clear"],
    ["Clear", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickClear", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickWorld", "World"],
    ["World", "ClickMBT", "MBT"],
    ["MBT", "ClickClear", "Clear"],
    ["Clear", "ClickClear", "Clear"],
    ["Clear", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickHello", "Hello"],
    ["Hello", "ClickClear", "Clear"],
    ["Clear", "ClickClear", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickMBT", "MBT"],
    ["MBT", "ClickHello", "Hello"],
    ["Hello", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickHello", "Hello"],
    ["Hello", "ClickHello", "Hello"],
    ["Hello", "ClickMBT", "MBT"],
    ["MBT", "ClickWorld", "World"],
    ["World", "ClickHello", "Hello"],
    ["Hello", "ClickClear", "Clear"],
    ["Clear", "ClickBye", "]"]
  ],
  {}
]
Executing the command

java -jar HelloMBTWorld.jar -h
returns the following help text:

NAME
    HelloMBTWorld.jar

SYNTAX
    java -jar HelloMBTWorld.jar [[-f] <test case file>]  [[-t] <time>] [[-d] <level>] [[-h]]


ARGUMENTS
    -f <test case file> :  use file <test case file> to simulate/test the HelloMBTWorld app
                           from a test case file that was automatically generated by the
                           TestUS (https://testus.eu) TestPlayer© MBT tool

    -t <time> :            set the <time> in milliseconds beetween successive klick events
                           (default: 10 ms)

    -d <level> :           set debug level
                           <level>=0: no debug info (only start of test case #1 is shown)
                           <level>=1: confirm each test case (default)
                           <level>=2: confirm each single test step (e.g. klick event)

    -h :                   print this help info
	

The output shows that

java -jar HelloMBTWorld.jar -f test_cases_for_state_coverage.json.txt
performs the testing of HelloMBTWorld.jar by using the generated test suite in the file test_cases_for_state_coverage.json.txt that contains 4 test cases. During the test case execution a timeout of 10 milliseconds separates individual clicks. Each of the five buttons Hello , MBT , World , Clear and Bye is triggered at least once and the following output appears in the console:

TestCase[1]=<StartApp ClickBye>
TestCase[2]=<StartApp ClickMBT ClickBye>
TestCase[3]=<StartApp ClickHello ClickBye>
TestCase[4]=<StartApp ClickWorld ClickBye>
At the end of the test, the message



appears and indicates that all 4 test cases have successfully passed the test.
If the coverage of the state transitions has to be ensured the test is started by using the automatically generated test suite test_cases_for_transition_coverage.json.txt that consists of 17 test cases:

java -jar HelloMBTWorld.jar -f test_cases_for_transition_coverage.json.txt
During the test execution the buttons Hello , MBT , World , Clear and Bye are triggered at least once in all possible transition combinations and the following output appears in the console:

TestCase[1]=<StartApp ClickBye>
TestCase[2]=<StartApp ClickMBT ClickBye>
TestCase[3]=<StartApp ClickHello ClickBye>
TestCase[4]=<StartApp ClickClear ClickBye>
TestCase[5]=<StartApp ClickWorld ClickBye>
TestCase[6]=<StartApp ClickHello ClickWorld ClickBye>
TestCase[7]=<StartApp ClickHello ClickMBT ClickBye>
TestCase[8]=<StartApp ClickWorld ClickClear ClickBye>
TestCase[9]=<StartApp ClickWorld ClickMBT ClickBye>
TestCase[10]=<StartApp ClickMBT ClickClear ClickBye>
TestCase[11]=<StartApp ClickMBT ClickHello ClickBye>
TestCase[12]=<StartApp ClickMBT ClickMBT ClickBye>
TestCase[13]=<StartApp ClickHello ClickClear ClickBye>
TestCase[14]=<StartApp ClickWorld ClickHello ClickBye>
TestCase[15]=<StartApp ClickWorld ClickWorld ClickBye>
TestCase[16]=<StartApp ClickMBT ClickWorld ClickBye>
TestCase[17]=<StartApp ClickHello ClickHello ClickBye>
At the end of the test, the message



appears and indicates that all 17 test cases have successfully passed the test.
If all possible loop-free paths of the usage model have to be visited the test is started by using the automatically generated test suite test_cases_for_path_coverage.json.txt that consists of 57 test cases:

java -jar HelloMBTWorld.jar -f test_cases_for_transition_coverage.json.txt
During the test execution the buttons Hello , MBT , World , Clear and Bye are triggered in such a way that no transition will appear more than once in each test case. For example the sequence button World is triggered directly after button Hello may appear at most once in a single test case. During the test execution by using the test suite test_cases_for_path_coverage.json.txt the following output appears in the console:

TestCase[1]=<StartApp ClickBye>
TestCase[2]=<StartApp ClickMBT ClickBye>
TestCase[3]=<StartApp ClickHello ClickBye>
TestCase[4]=<StartApp ClickClear ClickBye>
TestCase[5]=<StartApp ClickWorld ClickBye>
TestCase[6]=<StartApp ClickHello ClickWorld ClickBye>
TestCase[7]=<StartApp ClickHello ClickMBT ClickBye>
TestCase[8]=<StartApp ClickWorld ClickClear ClickBye>
TestCase[9]=<StartApp ClickWorld ClickMBT ClickBye>
TestCase[10]=<StartApp ClickMBT ClickClear ClickBye>
TestCase[11]=<StartApp ClickMBT ClickHello ClickBye>
TestCase[12]=<StartApp ClickClear ClickMBT ClickBye>
TestCase[13]=<StartApp ClickMBT ClickMBT ClickBye>
TestCase[14]=<StartApp ClickHello ClickClear ClickBye>
TestCase[15]=<StartApp ClickWorld ClickHello ClickBye>
TestCase[16]=<StartApp ClickWorld ClickWorld ClickBye>
TestCase[17]=<StartApp ClickMBT ClickWorld ClickBye>
TestCase[18]=<StartApp ClickHello ClickHello ClickBye>
TestCase[19]=<StartApp ClickWorld ClickHello ClickClear ClickBye>
TestCase[20]=<StartApp ClickClear ClickMBT ClickWorld ClickBye>
TestCase[21]=<StartApp ClickWorld ClickClear ClickHello ClickBye>
TestCase[22]=<StartApp ClickClear ClickHello ClickClear ClickBye>
TestCase[23]=<StartApp ClickMBT ClickWorld ClickMBT ClickBye>
TestCase[24]=<StartApp ClickMBT ClickMBT ClickWorld ClickBye>
TestCase[25]=<StartApp ClickHello ClickWorld ClickClear ClickBye>
TestCase[26]=<StartApp ClickMBT ClickMBT ClickHello ClickClear ClickBye>
TestCase[27]=<StartApp ClickWorld ClickHello ClickHello ClickWorld ClickBye>
TestCase[28]=<StartApp ClickWorld ClickMBT ClickHello ClickClear ClickBye>
TestCase[29]=<StartApp ClickMBT ClickWorld ClickClear ClickClear ClickBye>
TestCase[30]=<StartApp ClickMBT ClickHello ClickMBT ClickWorld ClickBye>
TestCase[31]=<StartApp ClickMBT ClickHello ClickHello ClickWorld ClickBye>
TestCase[32]=<StartApp ClickHello ClickWorld ClickMBT ClickHello ClickBye>
TestCase[33]=<StartApp ClickClear ClickHello ClickHello ClickMBT ClickBye>
TestCase[34]=<StartApp ClickClear ClickWorld ClickHello ClickHello ClickWorld ClickBye>
TestCase[35]=<StartApp ClickWorld ClickWorld ClickMBT ClickHello ClickClear ClickBye>
TestCase[36]=<StartApp ClickClear ClickWorld ClickWorld ClickMBT ClickClear ClickBye>
TestCase[37]=<StartApp ClickHello ClickHello ClickWorld ClickWorld ClickHello ClickBye>
TestCase[38]=<StartApp ClickHello ClickMBT ClickHello ClickWorld ClickMBT ClickBye>
TestCase[39]=<StartApp ClickMBT ClickMBT ClickWorld ClickMBT ClickHello ClickBye>
TestCase[40]=<StartApp ClickHello ClickWorld ClickClear ClickMBT ClickClear ClickBye>
TestCase[41]=<StartApp ClickMBT ClickHello ClickWorld ClickMBT ClickMBT ClickBye>
TestCase[42]=<StartApp ClickWorld ClickMBT ClickHello ClickHello ClickWorld ClickBye>
TestCase[43]=<StartApp ClickMBT ClickWorld ClickHello ClickWorld ClickWorld ClickBye>
TestCase[44]=<StartApp ClickWorld ClickMBT ClickClear ClickClear ClickHello ClickClear ClickBye>
TestCase[45]=<StartApp ClickMBT ClickClear ClickHello ClickMBT ClickMBT ClickHello ClickBye>
TestCase[46]=<StartApp ClickMBT ClickHello ClickClear ClickWorld ClickWorld ClickHello ClickBye>
TestCase[47]=<StartApp ClickHello ClickClear ClickWorld ClickClear ClickMBT ClickWorld ClickBye>
TestCase[48]=<StartApp ClickClear ClickMBT ClickWorld ClickClear ClickWorld ClickHello ClickBye>
TestCase[49]=<StartApp ClickHello ClickHello ClickMBT ClickClear ClickWorld ClickHello ClickBye>
TestCase[50]=<StartApp ClickWorld ClickMBT ClickClear ClickMBT ClickWorld ClickWorld ClickBye>
TestCase[51]=<StartApp ClickHello ClickClear ClickMBT ClickHello ClickMBT ClickClear ClickBye>
TestCase[52]=<StartApp ClickHello ClickMBT ClickWorld ClickClear ClickClear ClickWorld ClickWorld ClickBye>
TestCase[53]=<StartApp ClickWorld ClickMBT ClickWorld ClickWorld ClickHello ClickClear ClickClear ClickBye>
TestCase[54]=<StartApp ClickHello ClickMBT ClickMBT ClickHello ClickClear ClickMBT ClickClear ClickBye>
TestCase[55]=<StartApp ClickHello ClickClear ClickMBT ClickWorld ClickMBT ClickClear ClickClear ClickBye>
TestCase[56]=<StartApp ClickWorld ClickHello ClickClear ClickClear ClickMBT ClickMBT ClickHello ClickBye>
TestCase[57]=<StartApp ClickMBT ClickHello ClickHello ClickMBT ClickWorld ClickHello ClickClear ClickBye>
At the end of the test, the message



appears and indicates that all 57 test cases have successfully passed the test.



Our highly efficient TestPlayer© tool uses the dashboard to guide you quickly and accurately to designing an effective test suite for your IT application.



Scroll To Top


TestPlayer© - Basic Operation


The Testus TestPlayer© is a versatile tool for the automatic generation of test cases and the analysis, visualization and evaluation of generated test suites.

In the following, we will use the Hello MBT World example to demonstrate the essential steps for the automatic generation of a test suite and the visualization of the test cases that result.

Usage models can be created in the Model editor section of the TestPlayer© Dashboard[1] by means of a graphical editor.


First, we model the behavior and actions of users when they call the Java Swing GUI application HelloMBTWorld.jar by means of a usage model with the start state [ , the state Clear ( Clear button), the state Hello ( Hello button), the state MBT ( MBT button), the state World ( World button), and the end state ] which can be reached by pressing the Bye button.

In addition, all edges between the usage states must be added to describe the dynamic usage behavior. As a result, we receive an incomplete usage model that still lacks the edge labels. Edge labels are pairs (event, probability) containing the names of the transition events and the corresponding transition probability between the usage states.

In our example, the transition events are called StartApp (calling the GUI application HelloMBTWorld.jar ), ClickClear (pressing the Clear button), ClickHello (pressing the Hello button), ClickMBT (pressing the MBT button), ClickWorld (pressing the World button) and ClickBye (pressing the Bye button).

This brings us to the following incomplete usage model:


Subsequently, the generated model must be saved in the uncompressed (important!) XML format for further processing:

In the next step, the usage model is loaded into the model area ( models ) of the TestPlayer© via the dashboard Filemanager :

When executing dashboard actions, the first step in the Model settings section is to select the appropriate usage model, in our example HelloMBTWorld :

In order to be able to automatically generate test cases from the previous incomplete usage model without edge labels, all transition events that lead to a change of state and the associated transition probabilities must be added to the edges of the usage model. The TestPlayer© automatically takes over the necessary completion by selecting Check graph elements in the dashboard:

The extended, complete usage model can be downloaded from the Dashboard Filemanager

and now looks like this:

In the last step of the modeling process, the generic event names must still be adapted to the specific application. As a result of this adaptation, the final, complete usage model of the Java GUI application HelloMBTWorld.jar is derived:

After uploading the usage model to the models section of the TestPlayer©, the automatic generation of test suites for testing application HelloMBTWorld.jar can be performed. Now, via the TestPlayer© Dashboard [1] test cases can be automatically generated:

A look at the TestPlayer Settings in the Information section shows the following generation alternatives:

  • Selected model = HelloMBTWorld: the test suite is generated from the usage model HelloMBTWorld.xml
  • Profile usage = no: test cases are randomly generated according to a geometric distribution without using a special usage profile
  • Number of test cases = 100: the test suite contains 100 different test cases after generation
  • Generation strategy = fast overview: in addition to the generation of a test suite for the specified sort criterion in the test_cases directory of the file manager, additional diagrams and test case visualizations are created in the diagrams directory of the file manager
  • Sorting strategy = all strategies: test suites are generated for all sorting criteria.

Pressing the Start button will execute the selected options and create the test cases in the directory test_cases :

The following diagrams are results for the sorting strategy length, i.e. test cases are sorted by length (shorter first):

The statistics.txt file contains additional information about the test suite, such as the number of states (nodes) and state transitions of the usage model, the mean length of a test case in the test suite, or the number of test cases that cover all states of the usage model:

The file test_cases_for_state_coverage.txt contains all the test cases that are needed to cover all states of the usage model, as well as some additional information, such as the date of generation:

The file test_cases_for_state_coverage.json.txt contains all the test cases that that are needed to cover the states of the usage model in a compact JSON format (JavaScript Object Notation) for further processing of the test suite:

The diagrams directory contains further subdirectories for displaying the characteristic properties of the test suite:

  • analyze_testcases: various statistics for transition events and usage states
  • single_metrics: steady state distributions of usage states and visit frequencies
  • visualize_MCUM: XML files containing accumulated test cases for visualizing the state coverage of the usage model
  • visualize_testsuite: PNGfiles for visualizing the test suite by using various graph visualization methods

The next two diagrams show how to download the XML files for visualizing accumulated test cases as a compressed ZIP archive via the Filemanager :

After unpacking the ZIP archive, the XML files for visualizing the test cases can be loaded and viewed in the Model editor :


Afterwards, the XML files can be saved with the Model editor for further processing in various graphic formats:

Special metrics in the single_metrics directory can be used to analyze the characteristic properties of the test suite:

  • SSP: Comparison of the probability distribution of usage states in statistical equilibrium for the usage model and the relative frequencies of the corresponding usage states in the generated test suite. As you can see, the values for the individual usage states are matched very well.




  • SSV: Comparison of the average number of test cases required to visit a state in the usage model respectively during the test execution. As you can see, the values for the individual usage states are matched very well.




After the analysis of the test suite, the resulting test cases can be visualized. The edge labels show the triggering event and how often the edge is traversed during the test case. As a result, three test suites are displayed that are generated according to the sort_l sort criterion, i.e. the test cases are sorted out of 100 randomly generated test cases, sorted first according to the length of the test cases and then selected for achieving the desired coverage criterion.




  • Testsuite state coverage contains 4 (out of 100) test cases
The individual test cases are animated (emphasized by bold orange coloring) and show the current coverage of usage states as well as transitions between the states (represented by pale orange coloring). The number after the colon of the particular click event shows how often the state transition within the test case was executed.


  • Testsuite transition coverage contains 17 (out of 100) test cases
The individual test cases are animated (emphasized by bold orange coloring) and show the current coverage of usage states as well as transitions between the states (represented by pale orange coloring). The number after the colon of the particular click event shows how often the state transition within the test case was executed.


  • Testsuite path coverage contains 57 (out of 100) test cases
The individual test cases are animated (emphasized by bold orange coloring) and show the current coverage of usage states as well as transitions between the states (represented by pale orange coloring). The number after the colon of the particular click event shows how often the state transition within the test case was executed.

References:


  1. W. Dulz. A Comfortable TestPlayer© for Analyzing Statistical Usage Testing Strategies. Proceedings of the 6th ICSE/ACM Workshop on Automation of Software Test (AST '11), 2011.



The concept of TestPlayer© is very general and independent of specific fields of application. Thus it is possible to create test models that can be applied in any desired domain.



Scroll To Top


Hello MBT-Bug - Model-based testing for advanced tester


Our strength is the automated, model-based generation of test suites using graphical user models for hardware and software systems.

The Hello-MBT-Bug example extends the previous Hello-MBT-World example and shows how to use MBT techniques for representing and finding bugs in the system under test. For this purpose, the original usage model is extended by another (irregular) state Bug Demon . The main intension by doing this is to inject an incorrect input BuggyClick that should be found during the test of the Java Swing application HelloMBTWorld.jar .


A corresponding statistical usage model, that is required by the TestPlayer© to automatically generate buggy test cases for testing application HelloMBTWorld is shown below:



Starting from usage state World the false usage state Bug Demon is reached by the erroneous input event BuggyClick before input event ClickWorld returns the test execution to usage state World again. As a result the TestPlayer© will generate test suites that may contain the erroneous input event BuggyClick in addition.

By applying the usage model above the TestPlayer© Dashboard offers simple user interactions to automatically generate dedicated test suites that have specific characteristics, i.e

  • complete coverage of all usage states
  • complete coverage of all possible transitions between the usage states
  • coverage of all loop-free paths between the start state [ and the final state ], i.e. no transition is selected twice within the same test case

The default number of test cases that are generated by the TestPlayer© is 100, but can easily be changed within the TestPlayer© Dashboard. Test suites that possess the specific characteristics defined above arise by reduction with respect to the given coverage and sort criteria. Below three test suites are presented that are generated by using the sort criterion sort_l , i.e. test cases are selected from 100 statistically generated test cases by first sorting them with respect to the length of the test cases.






  • Test suite state coverage contains 5 (out of 100) test cases
Individual test cases are animated (highlighted by fat-orange coloring) and show the already achieved coverage of usage states, respectively state transitions (represented by pale orange coloration). The number behind the colon of the click events shows how often the given state transition is passed during the test case execution..


  • Test suite transition coverage contains 18 (out of 100) test cases
Individual test cases are animated (highlighted by fat-orange coloring) and show the already achieved coverage of usage states, respectively state transitions (represented by pale orange coloration). The number behind the colon of the click events shows how often the given state transition is passed during the test case execution.


  • Test suite path coverage contains 57 (out of 100) test cases
Individual test cases are animated (highlighted by fat-orange coloring) and show the already achieved coverage of usage states, respectively state transitions (represented by pale orange coloration). The number behind the colon of the click events shows how often the given state transition is passed during the test case execution.

In addition to the graphical representations, the TestPlayer© also generates text files that represent the test cases of the test suite in a compact JSON format for further processing:



Content of file test_cases_for_state_coverage.json.txt :

[
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickWorld", "World"],
    ["World", "BuggyClick", "Bug\nDemon"],
    ["Bug\nDemon", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  {}
]
Content of file test_cases_for_transition_coverage.json.txt :

[
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickClear", "Clear"],
    ["Clear", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickClear", "Clear"],
    ["Clear", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickClear", "Clear"],
    ["Clear", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickHello", "Hello"],
    ["Hello", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickHello", "Hello"],
    ["Hello", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickMBT", "MBT"],
    ["MBT", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickClear", "Clear"],
    ["Clear", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickMBT", "MBT"],
    ["MBT", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickWorld", "World"],
    ["World", "ClickMBT", "MBT"],
    ["MBT", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickWorld", "World"],
    ["World", "BuggyClick", "Bug\nDemon"],
    ["Bug\nDemon", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickClear", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickHello", "Hello"],
    ["Hello", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  {}
]
Content of file test_cases_for_path_coverage.json.txt :

[
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickClear", "Clear"],
    ["Clear", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickClear", "Clear"],
    ["Clear", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickClear", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickClear", "Clear"],
    ["Clear", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickClear", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickHello", "Hello"],
    ["Hello", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickHello", "Hello"],
    ["Hello", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickMBT", "MBT"],
    ["MBT", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickClear", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickClear", "Clear"],
    ["Clear", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickMBT", "MBT"],
    ["MBT", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickWorld", "World"],
    ["World", "ClickMBT", "MBT"],
    ["MBT", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickClear", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickClear", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickClear", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickClear", "Clear"],
    ["Clear", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickClear", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickWorld", "World"],
    ["World", "ClickHello", "Hello"],
    ["Hello", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickMBT", "MBT"],
    ["MBT", "ClickMBT", "MBT"],
    ["MBT", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickClear", "Clear"],
    ["Clear", "ClickClear", "Clear"],
    ["Clear", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickMBT", "MBT"],
    ["MBT", "ClickClear", "Clear"],
    ["Clear", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickWorld", "World"],
    ["World", "BuggyClick", "Bug\nDemon"],
    ["Bug\nDemon", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickWorld", "World"],
    ["World", "BuggyClick", "Bug\nDemon"],
    ["Bug\nDemon", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "BuggyClick", "Bug\nDemon"],
    ["Bug\nDemon", "ClickWorld", "World"],
    ["World", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickClear", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickClear", "Clear"],
    ["Clear", "ClickClear", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickWorld", "World"],
    ["World", "ClickHello", "Hello"],
    ["Hello", "ClickMBT", "MBT"],
    ["MBT", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickHello", "Hello"],
    ["Hello", "ClickWorld", "World"],
    ["World", "ClickHello", "Hello"],
    ["Hello", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickMBT", "MBT"],
    ["MBT", "ClickClear", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickClear", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickHello", "Hello"],
    ["Hello", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickWorld", "World"],
    ["World", "ClickWorld", "World"],
    ["World", "ClickMBT", "MBT"],
    ["MBT", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickClear", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickHello", "Hello"],
    ["Hello", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickClear", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickMBT", "MBT"],
    ["MBT", "ClickClear", "Clear"],
    ["Clear", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickClear", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickWorld", "World"],
    ["World", "ClickClear", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickWorld", "World"],
    ["World", "BuggyClick", "Bug\nDemon"],
    ["Bug\nDemon", "ClickWorld", "World"],
    ["World", "ClickMBT", "MBT"],
    ["MBT", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickMBT", "MBT"],
    ["MBT", "ClickClear", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickHello", "Hello"],
    ["Hello", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickClear", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickHello", "Hello"],
    ["Hello", "ClickWorld", "World"],
    ["World", "BuggyClick", "Bug\nDemon"],
    ["Bug\nDemon", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickMBT", "MBT"],
    ["MBT", "ClickWorld", "World"],
    ["World", "BuggyClick", "Bug\nDemon"],
    ["Bug\nDemon", "ClickWorld", "World"],
    ["World", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickClear", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickWorld", "World"],
    ["World", "ClickHello", "Hello"],
    ["Hello", "ClickClear", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickWorld", "World"],
    ["World", "ClickClear", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "BuggyClick", "Bug\nDemon"],
    ["Bug\nDemon", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickWorld", "World"],
    ["World", "BuggyClick", "Bug\nDemon"],
    ["Bug\nDemon", "ClickWorld", "World"],
    ["World", "ClickHello", "Hello"],
    ["Hello", "ClickMBT", "MBT"],
    ["MBT", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickMBT", "MBT"],
    ["MBT", "ClickMBT", "MBT"],
    ["MBT", "ClickWorld", "World"],
    ["World", "BuggyClick", "Bug\nDemon"],
    ["Bug\nDemon", "ClickWorld", "World"],
    ["World", "ClickWorld", "World"],
    ["World", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickHello", "Hello"],
    ["Hello", "ClickMBT", "MBT"],
    ["MBT", "ClickWorld", "World"],
    ["World", "ClickWorld", "World"],
    ["World", "ClickMBT", "MBT"],
    ["MBT", "ClickMBT", "MBT"],
    ["MBT", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickClear", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickClear", "Clear"],
    ["Clear", "ClickHello", "Hello"],
    ["Hello", "ClickMBT", "MBT"],
    ["MBT", "ClickHello", "Hello"],
    ["Hello", "ClickClear", "Clear"],
    ["Clear", "ClickBye", "]"]
  ],
  [
    ["[", "StartApp", "Clear"],
    ["Clear", "ClickWorld", "World"],
    ["World", "ClickHello", "Hello"],
    ["Hello", "ClickHello", "Hello"],
    ["Hello", "ClickWorld", "World"],
    ["World", "ClickMBT", "MBT"],
    ["MBT", "ClickWorld", "World"],
    ["World", "ClickClear", "Clear"],
    ["Clear", "ClickMBT", "MBT"],
    ["MBT", "ClickBye", "]"]
  ],
  {}
]

Execution of the extended test cases with the automatically generated, incorrect input BuggyClick now returns the following results:



Executing the command

java -jar HelloMBTWorld.jar -f test_cases_for_state_coverage.json.txt
will test the application HelloMBTWorld.jar by using the test suite test_cases_for_state_coverage.json.txt that consists of 5 test cases and contains the buggy event BuggyClick . The following output appears in the console:

TestCase[1]=<StartApp ClickBye>
TestCase[2]=<StartApp ClickMBT ClickBye>
TestCase[3]=<StartApp ClickWorld ClickBye>
TestCase[4]=<StartApp ClickHello ClickBye>
TestCase[5]=<StartApp ClickHello ClickWorld BuggyClick ClickWorld ClickBye>
At the end of the test, the message



appears and indicates that 1 of the 5 test cases failed and did not pass the test because it contains the erroneous input event BuggyClick .
If the coverage of the state transitions has to be ensured the test is started by using the automatically generated test suite test_cases_for_transition_coverage.json.txt that consists of 18 test cases:

java -jar HelloMBTWorld.jar -f test_cases_for_transition_coverage.json.txt
The following output appears in the console:

TestCase[1]=<StartApp ClickBye>
TestCase[2]=<StartApp ClickMBT ClickBye>
TestCase[3]=<StartApp ClickWorld ClickBye>
TestCase[4]=<StartApp ClickHello ClickBye>
TestCase[5]=<StartApp ClickClear ClickBye>
TestCase[6]=<StartApp ClickHello ClickClear ClickBye>
TestCase[7]=<StartApp ClickHello ClickWorld ClickBye>
TestCase[8]=<StartApp ClickMBT ClickClear ClickBye>
TestCase[9]=<StartApp ClickWorld ClickHello ClickBye>
TestCase[10]=<StartApp ClickHello ClickHello ClickBye>
TestCase[11]=<StartApp ClickHello ClickMBT ClickBye>
TestCase[12]=<StartApp ClickWorld ClickWorld ClickBye>
TestCase[13]=<StartApp ClickWorld ClickClear ClickBye>
TestCase[14]=<StartApp ClickMBT ClickMBT ClickBye>
TestCase[15]=<StartApp ClickMBT ClickWorld ClickBye>
TestCase[16]=<StartApp ClickWorld ClickWorld ClickMBT ClickBye>
TestCase[17]=<StartApp ClickHello ClickWorld BuggyClick ClickWorld ClickBye>
TestCase[18]=<StartApp ClickClear ClickMBT ClickHello ClickWorld ClickBye>
At the end of the test, the message



and indicates that 1 of the 18 test cases failed and did not pass the test because it contains the erroneous input event BuggyClick .
If every loop-free path of the usage model has to traversed during the test execution the automatically generated test suite test_cases_for_path_coverage.json.txt consisting of 51 test cases is used:

java -jar HelloMBTWorld.jar -f test_cases_for_transition_coverage.json.txt
The following output appears in the console:

TestCase[1]=<StartApp ClickBye>
TestCase[2]=<StartApp ClickMBT ClickBye>
TestCase[3]=<StartApp ClickWorld ClickBye>
TestCase[4]=<StartApp ClickHello ClickBye>
TestCase[5]=<StartApp ClickClear ClickBye>
TestCase[6]=<StartApp ClickHello ClickClear ClickBye>
TestCase[7]=<StartApp ClickClear ClickHello ClickBye>
TestCase[8]=<StartApp ClickHello ClickWorld ClickBye>
TestCase[9]=<StartApp ClickMBT ClickClear ClickBye>
TestCase[10]=<StartApp ClickClear ClickMBT ClickBye>
TestCase[11]=<StartApp ClickWorld ClickHello ClickBye>
TestCase[12]=<StartApp ClickHello ClickHello ClickBye>
TestCase[13]=<StartApp ClickHello ClickMBT ClickBye>
TestCase[14]=<StartApp ClickWorld ClickWorld ClickBye>
TestCase[15]=<StartApp ClickClear ClickWorld ClickBye>
TestCase[16]=<StartApp ClickWorld ClickClear ClickBye>
TestCase[17]=<StartApp ClickMBT ClickMBT ClickBye>
TestCase[18]=<StartApp ClickMBT ClickWorld ClickBye>
TestCase[19]=<StartApp ClickWorld ClickWorld ClickMBT ClickBye>
TestCase[20]=<StartApp ClickWorld ClickClear ClickMBT ClickBye>
TestCase[21]=<StartApp ClickClear ClickHello ClickWorld ClickBye>
TestCase[22]=<StartApp ClickClear ClickHello ClickClear ClickBye>
TestCase[23]=<StartApp ClickClear ClickWorld ClickWorld ClickBye>
TestCase[24]=<StartApp ClickHello ClickWorld ClickHello ClickBye>
TestCase[25]=<StartApp ClickWorld ClickMBT ClickMBT ClickBye>
TestCase[26]=<StartApp ClickMBT ClickClear ClickClear ClickBye>
TestCase[27]=<StartApp ClickWorld ClickMBT ClickClear ClickBye>
TestCase[28]=<StartApp ClickHello ClickWorld BuggyClick ClickWorld ClickBye>
TestCase[29]=<StartApp ClickMBT ClickWorld BuggyClick ClickWorld ClickBye>
TestCase[30]=<StartApp ClickWorld BuggyClick ClickWorld ClickWorld ClickBye>
TestCase[31]=<StartApp ClickWorld ClickClear ClickHello ClickWorld ClickBye>
TestCase[32]=<StartApp ClickMBT ClickClear ClickClear ClickHello ClickBye>
TestCase[33]=<StartApp ClickWorld ClickWorld ClickHello ClickMBT ClickBye>
TestCase[34]=<StartApp ClickHello ClickHello ClickWorld ClickHello ClickBye>
TestCase[35]=<StartApp ClickWorld ClickMBT ClickClear ClickMBT ClickBye>
TestCase[36]=<StartApp ClickClear ClickMBT ClickHello ClickWorld ClickBye>
TestCase[37]=<StartApp ClickHello ClickWorld ClickWorld ClickMBT ClickBye>
TestCase[38]=<StartApp ClickClear ClickHello ClickHello ClickWorld ClickBye>
TestCase[39]=<StartApp ClickClear ClickHello ClickMBT ClickClear ClickBye>
TestCase[40]=<StartApp ClickClear ClickMBT ClickWorld ClickClear ClickWorld ClickBye>
TestCase[41]=<StartApp ClickHello ClickWorld BuggyClick ClickWorld ClickMBT ClickBye>
TestCase[42]=<StartApp ClickHello ClickMBT ClickClear ClickMBT ClickHello ClickBye>
TestCase[43]=<StartApp ClickClear ClickWorld ClickHello ClickWorld BuggyClick ClickWorld ClickBye>
TestCase[44]=<StartApp ClickHello ClickMBT ClickWorld BuggyClick ClickWorld ClickWorld ClickBye>
TestCase[45]=<StartApp ClickClear ClickMBT ClickWorld ClickHello ClickClear ClickHello ClickBye>
TestCase[46]=<StartApp ClickHello ClickWorld ClickClear ClickWorld BuggyClick ClickWorld ClickBye>
TestCase[47]=<StartApp ClickMBT ClickWorld BuggyClick ClickWorld ClickHello ClickMBT ClickBye>
TestCase[48]=<StartApp ClickWorld ClickMBT ClickMBT ClickWorld BuggyClick ClickWorld ClickWorld ClickBye>
TestCase[49]=<StartApp ClickMBT ClickHello ClickMBT ClickWorld ClickWorld ClickMBT ClickMBT ClickBye>
TestCase[50]=<StartApp ClickClear ClickWorld ClickClear ClickHello ClickMBT ClickHello ClickClear ClickBye>
TestCase[51]=<StartApp ClickWorld ClickHello ClickHello ClickWorld ClickMBT ClickWorld ClickClear ClickMBT ClickBye>
At the end of the test, the message



and indicates that 9 of the 51 test cases failed and did not pass the test because they contain the erroneous input event BuggyClick .



Our highly efficient TestPlayer© tool uses the dashboard to guide you quickly and accurately to designing an effective test suite for your IT application.



Scroll To Top


References


The TestUS TestPlayer© is a versatile tool for the automatic generation of test cases and enables the user-friendly analysis, evaluation and visualization of the resulting test suites.

The following list contains selected puplications that cover various testing techniques and application domains that can be implemented with the Test Player:


  1. Vitali Schneider, Anna Yupatova, Winfried Dulz, Reinhard German. How to Avoid Model Interferences for Test-driven Agile Simulation based on Standardized UML Profiles. Proceedings of the 4th IEEE/ACM Workshop on Model-driven Approaches for Simulation Engineering, 2014.
  2. W. Dulz. Model-based Strategies for Reducing the Complexity of Statistically Generated Test Suites. Proceedings of the 2013 Software Quality Days, 2013.
  3. A. Djanatliev, W. Dulz, R. German, and V. Schneider. VeriTAS - A Versatile Modeling Environment for Test-driven Agile Simulation . Proceedings of the 2011 Winter Simulation Conference, 2011.
  4. W. Dulz. A Comfortable TestPlayer© for Analyzing Statistical Usage Testing Strategies. Proceedings of the 6th ICSE/ACM Workshop on Automation of Software Test (AST '11), 2011.
  5. I. Dietrich, F. Dressler, W. Dulz, and R. German. Validating UML Simulation Models with Model-Level Unit Tests. Proceedings of the 3rd International ICST Conference on Simulation Tools and Techniques (SIMUTools '10), 2010.
  6. W. Dulz, R. German, Stefan Holpp and Helmut Götz. Calculating the usage probabilities of statistical usage models by constraints optimization. Proceedings of the 5th ICSE/ACM Workshop on Automation of Software Test (AST '10), 2010.
  7. W. Dulz, S. Holpp and R. German. A Polyhedron Approach to Calculate Probability Distributions for Markov Chain Usage Models . Electr. Notes Theor. Comput. Sci. 264(3), 2010.
  8. W. Dulz. On-the-fly Interpretation of Test Cases in an Automatically Generated TTCN-3 Test Suite. Evaluation of Novel Approaches to Software Engineering, in Communications in Computer and Information Science, Volume 69, I, 17-30, 2010.
  9. S. Siegl, W. Dulz, R. German, G. Kiffe. Model-Driven Testing based on Markov Chain Usage Models in the Automotive Domain . Proceedings of the 12th European Workshop on Dependable Computing, 2009.
  10. F. Prester and W. Dulz. markov@.mzT - Model Centric Testing Using Markov Chain Theory. Proceedings of the embeddedWorld 2009.
  11. M. Beyer, W. Dulz and K.-S. Hielscher. Performance Issues in Statistical Testing. Proceedings of 13th GI/ITG Conference Measuring, Modelling and Evaluation of Computer and Communication Systems, 2006.
  12. M. Beyer and W. Dulz. Scenario-Based Statistical Testing of Quality of Service Requirements . International Workshop "Scenarios: Models, Transformations and Tools", Revised Selected Papers, Springer LNCS 3466, 2005.
  13. W. Dulz and F.-H. Zhen. MaTeLo - Statistical Usage Testing by Annotated Sequence Diagrams, Markov Chains and TTCN-3. Proceedings of the Third International Conference on Quality Software (QSIC '03) , 2003.
  14. M. Beyer, W. Dulz and F.-H. Zhen. Automated TTCN-3 test case generation by means of UML sequence diagrams and Markov chains. Proceedings of the 12th Asian Test Symposium (ATS '03), 2003.



The concept of the TestPlayer© is very general and independent of specific application domains. In this way, test models are created that can be used in any domain.



Scroll To Top


Impressum


The TestUS TestPlayer© is a versatile tool for the automatic generation of test cases and for the analysis, visualization and assessment of the generated test suites.

TestUS Consulting for Information and Communication Systems


Firm Owner:
Heidi Klotz

Mailing Address:
Cimbernstr. 11, 90402 Nuremberg
Phone: (+49) 911 4809783
Telefax: (+49) 911 46206312
info@testus.eu
https://testus.eu

Commercial Register Nürnberg-IHK-Nr. 1058509
Tax number 240/237/21151
Sales tax ID-DE 260 808 350




Liability for content

As a service provider we are responsible for our own content on this site under the general law according to § 7 Abs.1 of the German TMG (Telemedia Act). However, according to §§ 8 to 10 TMG as a service provider we are not obliged to monitor transmitted or stored information or to investigate circumstances that refer to an illegal activity. Obligations to remove or block the use of information under the general laws remain unaffected. However, a liability relating to this is only possible from the date of knowledge of a concrete infringement. Becoming aware of such violations, we will remove the content immediately.




Liability for links

Our site contains links to external websites over which we have no influence. Therefore for these foreign contents we can assume no liability. For the content of linked pages always the respective provider or operator is responsible. Linked Sites were checked at the time of linking for possible legal violations. Illegal contents were not recognizable at the time of linking. A permanent control of all linked pages without concrete evidence of a infringement is not reasonable though. Upon notification of violations, we will remove such links immediately.




Copyright

The contents and works created by the site operators on these pages are subject to German copyright law. Reproduction, adaptation , distribution or any kind of exploitation outside the limits of copyright require the written consent of the author or creator. Downloads and copies of these pages are only for private, non- commercial use. Insofar as the content on our web site was not created by the operator, the third-party copyrights are respected. In particular, third parties contents are marked as such. Should you become aware of copyright infringement despite, we ask you for a reference accordingly. Upon notification of violations, we will remove such contents immediately.



The TestPlayer© concept is very general and independent of specific fields of application. In this way, it is possible to create test models that can be applied in any domain.



Scroll To Top


TestUS contact data


The TestUS TestPlayer© is a versatile tool for the automatic generation of test cases and for the analysis, visualization and assessment of the generated test suites.

Dr.-Ing. Winfried Dulz
Cimbernstr. 11
90402 Nürnberg
info@testus.eu
(+49) 171 7422626
(+49) 911 46206312



The TestPlayer© concept is very general and independent of specific fields of application. In this way, it is possible to create test models that can be applied in any domain.



Scroll To Top

TestPlayer© Login


An approach, where the test cases are generated in parts or completely from a model is called Model-driven Testing.



Please input account name and password for your personal TestPlayer© access here!

Scroll To Top

TestPlayer© Sign-up


The TestUS TestPlayer© is a versatile tool for the automatic generation of test cases and enables the user-friendly analysis, evaluation and visualization of the resulting test suites.



Please fill in the sign-up form below to get a free TestPlayer© trial account!


The concept of the TestPlayer© is very general and independent of specific application domains. In this way, test models are created that can be used in any domain.



Scroll To Top

© 2017  ​TestUS Consulting Inc.