A system may exhibit a different response depending on current conditions or previous history (its state). In this case, that aspect of the system can be shown as a state transition diagram. It allows the tester to view the software in terms of its states, transitions between states, the inputs or events that trigger state changes (transitions) and the actions which may result from those transitions. The states of the system or object under test are separate, identifiable and finite in number. A state table shows the relationship between the states and inputs, and can highlight possible transitions that are invalid. Tests can be designed to cover a typical sequence of states, to cover every state, to exercise every transition, to exercise specific sequences of transitions or to test invalid transitions.
State transition testing is much used within the embedded software industry and technical automation in general. However, the technique is also suitable for modeling a business object having specific states or testing screen-dialogue flows (e.g. for internet applications or business scenarios).
State-transition diagrams describe all of the states that an object can have, the events under which an object changes state (transitions), the conditions that must be fulfilled before the transition will occur (guards), and the activities undertaken during the life of an object (actions). State-transition diagrams are very useful for describing the behavior of individual objects over the full set of use cases that affect those objects. State-transition diagrams are not useful for describing the collaboration between objects that cause the transitions.
For those not familiar with the notation used for state-transition diagrams, some explanation is in order.
State. A condition during the life of an object in which it satisfies some condition, performs some action, or waits for some event.
Event: An occurrence that may trigger a state transition. Event types include an explicit signal from outside the system, an invocation from inside the system, the passage of a designated period of time, or a designated condition becoming true.
Guard: A boolean expression which, if true, enables an event to cause a transition.
Transition: The change of state within an object.
Action: One or more actions taken by an object in response to a state change.
State transition testing is a type of Black box testing technique in which software is considered as a FSM which moves from one state to another state based on the current state, current and the previous inputs. So here, any application is considered as a FSM which can be tested across stages. The inputs to the system and categorize and drafted across each stage: Using this a matrix would be draw across stages, inputs and corresponding outputs. Using this matrix state transition testing would be carried out. With state transition testing, complete coverage can be attained and functional states that is other-wise not testable can also be tested using this STT.