Harmony starts from requirements or user stories. The first step is to generate abstract test cases based on the requirements. Abstract test cases can be executed by the testers, but cannot be executed automatedly. We use a new test design technique, called action-state testing where you can create a model in a very simple way. This technique is implementation-independent, thus it can be done in a test-first way. Harmony can generate abstract test cases from the action-state model that can be validated as every stakeholder can understand them. This is a very good defect prevention method. Here is an example of the action-state model of our Pizza application :
add items so that price remains below 10
is an action, i.e., the input
paying is not possible
is the response for the action that should be validated
is test state.
Harmony on the fly creates the related statechart:
Based on this graph the model can be verified and improved.
Harmony offers complete steps that are missing to fulfil the all-transition pairs test selection criterion. You can accept or reject a step. In this way, the generated test cases become more reliable and you can detect tricky bugs as well.
From the model, Harmony generates abstract test cases. These test cases can be executed by the manual testers, but executable test code cannot be generated. However, this is a higher-level model and gives you a big picture you can easily understand.