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



Hello MBT Bug - Model-based testing for advanced tester



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.