It is all about, performing the black box testing activity on the software products, which may be visualized or disintegrated into a finite number of states. These states are linked up with one or more than one state, within the software, and transition from one state to another state is possible, on feeding inputs, whether valid or invalid, to the software product. These transitions are guided by the rules, to behave differently, on encountering with the different types of input.
Let us see the following basic diagram, to clear the concept of state transition.
In the given the diagram, a software product has been perceived as the set of 5 states, as below
State-1, also known as the initial state, have the possibility, to make transitions, either to State-2 or State-3, depending upon the inputs.
On feeding valid input to the software, transition is being made from state-1 to state-3(intermediate state), which further makes the transition to state-5(final state)
On the other hand, feeding with the invalid input, makes the transition of software from state-1 to state-2(error state).
From state-2, the software may backtrack to the initial state or on providing valid input, may transit to state-4(intermediate state), which may further transits to the final state, i.e. state-5.
Moreover, it is may also be possible, that on providing invalid input, the software may not respond and transits to error-state i.e. the software remains in its initial state until valid inputs are not delivered to it.
A basic transition model may comprise of four essential components
States that may be covered by the software product (open/closed or funded/insufficient funds).
Transitions from one state to another(considering the non-feasibility of all transitions).
Activities that triggers the transition(by performing certain action or feeding inputs to the software product).
Actions resulting from the transition(such as error message).
What should be the approach, while creating test cases?
Following points may be considered, while going for the test case preparation, for performing the state transition testing.
Understanding of all the states that are involved in the software product, along with the identification of the valid and invalid states.
Defining and outlining the series of steps, along with the sequences of events that leads to the final state.
Each visited state and transition, should be noted down.
Repeating steps 2 & 3, until all the states and all possible transitions are being covered and traversed, respectively.
It is advisable, to produce actual inputs along with the corresponding expected outputs, to have better coverage by the test cases.
Enables the test team or testers to get exposure to the designs, implemented in the software product, which may help in preparing effective test cases.
Enables the testers, to consider invalid states, also.
Empowers the test team, to abstract or detailed the transitional model, as per the needs and importance of the software component.