State Transition Testing is a test design technique, which you can use to design test cases. Now,
what is a state in state transition? A state is a particular condition in which the system under test can exist. A state A state has certain attributes or properties and it has a certain behavior.
What is transition? A transition is movement from one valid (allowed) state to another valid state. These transitions are tested in state transition testing. View the detailed
State Transition Testing tutorial or read on...
Let us assume that a lighting system has a switch, an electric circuit and a light. As you can see in the state transition diagram above, there are only two valid states in which this system can exist - OFF and ON. In the OFF state, you can provide an input (turn switch on) to cause a transition to the ON state with the output that the light becomes on. In the ON state, you can provide an input (turn switch off) to cause a transition to OFF state with the output that the light becomes off. In state transition testing, you would test both these transitions i.e. OFF state to ON state and ON state to OFF state.
Car State Diagram example
Let us see another state transition example. The above diagram is also called the the State Graph or the State Chart or State Transition Chart or State Transition Graph. This diagram shows the four possible states of a car -
Stopped,
Accelerating,
Constant Speed and
Braking. From the Stopped state, the system can only change to the Accelerating state. From the Accelerating state, it is possible to change to the Constant Speed state and vice versa. From the Constant Speed state, it is possible to change the car to the Braking state and vice versa. From the Braking state, it is possible to change to the Accelerating state and vice versa. Also, from the Braking state, it is possible to change to the Stopped state. Therefore, there are 8 valid transitions (represented by 8 arrows) that you should test.
State Table and State Diagram are related. The same information is shown in the form of a state table or state transition table. The first 8 rows after the header are the valid transitions. The next 4 rows are the invalid transitions. You should also test the invalid transitions to ensure that they are impossible.
State | Input | Next State |
Stopped | Press gas pedal | Accelerating |
Accelerating | Keep gas pedal constant | Constant Speed |
Accelerating | Switch to brake pedal | Braking |
Constant Speed | Press gas pedal more | Accelerating |
Constant Speed | Switch to brake pedal | Braking |
Braking | Switch to gas pedal; press gas pedal more | Accelerating |
Braking | Switch to gas pedal | Constant Speed |
Braking | Keep braking | Stopped |
Stopped | ? | Constant Speed |
Stopped | ? | Braking |
Accelerating | ? | Stopped |
Constant Speed | ? | Stopped |
You can design state transition testing test cases based on the state transition table. For example, you can write test cases based on the workflows as follows. Ensure that you cover each valid transition and each invalid transition.
Test case 1– Stopped | Accelerating | Constant Speed | Braking | Stopped
Test case 2– Stopped | Accelerating | Braking | Accelerating | Braking | Stopped
Test case 3 – Stopped | Accelerating | Constant Speed | Accelerating | Constant Speed | Braking | Constant Speed | Braking | Stopped
and so on.
I hope that you found the above state diagram examples useful.to understand state transition testing. If you want to learn more, you can view my
State Transition Testing tutorial. I have explained the above concepts in greater detail in it.