BCS Oxfordshire
Thursday 6th October
State transition testing
A practical workshop in the use of a
software testing technique
Peter Quentin - QBIT
contents
• Introduction
• State transition testing
• Example
• Exercises
• Conclusion
the problem...
very large or infinite
number of test scenarios
+
finite amount of time
=
impossible to test everything
the solution...
Software test techniques exist to
reduce the number of tests to be run
whilst still providing sufficient coverage
of the system under test
state transition testing
• Models each state a system can exist in
• Models each state transition
• Defines for each state transition
‣ start state
‣ input
‣ output
‣ finish state
OFF
Input: switch on
OFF
Output: light on
ON
OFF
Input: switch off
ON
Output: light off
TEST 1 TEST 2
OFF
start state: start state:
off on
input: input:
switch on switch off
output: output:
light on light off
finish state: finish state:
on off
ON
OFF
FAULT
ON
OFF
OFF
ON
FAULT
FAULT OFF
ON
ON
TEST
STEP 1 STEP 2 STEP 3
START
OFF ON OFF
STATE
INPUT SWITCH ON SWITCH OFF SWITCH ON
OUTPUT LIGHT ON LIGHT OFF LIGHT ON
FINISH
ON OFF ON
STATE
electronic clock example
• A simple electronic clock has four modes,
display time, change time, display date and change
date
• The change mode button switches between
display time and display date
• The reset button switches from display time to
adjust time or display date to adjust date
• The set button returns from adjust time to
display time or adjust date to display date
reset
DISPLAY ADJUST
TIME TIME
set
change mode
change mode
reset
DISPLAY ADJUST
DATE DATE
set
DISPLAY
TIME
DISPLAY ADJUST
DATE TIME
DISPLAY ADJUST DISPLAY
TIME DATE TIME
DISPLAY
DATE
0-switch or
branch coverage
STEP 1 STEP 2
TEST 1 START STATE DISPLAY TIME DISPLAY DATE
INPUT CHANGE MODE CHANGE MODE
OUTPUT DISPLAY DATE DISPLAY TIME
FINISH STATE DISPLAY DATE DISPLAY TIME
STEP 1 STEP 2 STEP 3
TEST 2 START STATE DISPLAY TIME DISPLAY DATE ADJUST DATE
INPUT CHANGE MODE RESET SET
OUTPUT DISPLAY DATE ADJUST DATE DISPLAY DATE
FINISH STATE DISPLAY DATE ADJUST DATE DISPLAY DATE
STEP 1 STEP 2
TEST 3 START STATE DISPLAY TIME ADJUST TIME
INPUT RESET SET
OUTPUT ADJUST TIME DISPLAY TIME
FINISH STATE ADJUST TIME DISPLAY TIME
DISPLAY
TIME
DISPLAY ADJUST
DATE TIME
DISPLAY ADJUST DISPLAY
TIME DATE TIME
ADJUST DISPLAY ADJUST
DISPLAY
TIME DATE TIME
DATE
DISPLAY
DATE
1-switch or
switch coverage DISPLAY
TIME
ADJUST
DATE
STEP 1 STEP 2 STEP 3
TEST 1 START STATE DISPLAY TIME DISPLAY DATE DISPLAY TIME
INPUT CHANGE MODE CHANGE MODE CHANGE MODE
OUTPUT DISPLAY DATE DISPLAY TIME DISPLAY DATE
FINISH STATE DISPLAY DATE DISPLAY TIME DISPLAY DATE
STEP 1 STEP 2 STEP 3
TEST 2 START STATE DISPLAY TIME DISPLAY DATE DISPLAY TIME
INPUT CHANGE MODE CHANGE MODE RESET
OUTPUT DISPLAY DATE DISPLAY TIME ADJUST TIME
FINISH STATE DISPLAY DATE DISPLAY TIME ADJUST TIME
STEP 1 STEP 2 STEP 3 STEP 4
TEST 3 START STATE DISPLAY TIME DISPLAY DATE ADJUST DATE DISPLAY DATE
INPUT CHANGE MODE RESET SET CHANGE MODE
OUTPUT DISPLAY DATE ADJUST DATE DISPLAY DATE DISPLAY TIME
FINISH STATE DISPLAY DATE ADJUST DATE DISPLAY DATE DISPLAY TIME
STEP 1 STEP 2 STEP 3 STEP 4
TEST 4 START STATE DISPLAY TIME DISPLAY DATE ADJUST DATE DISPLAY DATE
INPUT CHANGE MODE RESET SET RESET
OUTPUT DISPLAY DATE ADJUST DATE DISPLAY DATE ADJUST DATE
FINISH STATE DISPLAY DATE ADJUST DATE DISPLAY DATE ADJUST DATE
STEP 1 STEP 2 STEP 3
TEST 5 START STATE DISPLAY TIME ADJUST TIME DISPLAY TIME
INPUT RESET SET CHANGE MODE
OUTPUT ADJUST TIME DISPLAY TIME DISPLAY DATE
FINISH STATE ADJUST TIME DISPLAY TIME DISPLAY DATE
STEP 1 STEP 2 STEP 3
TEST 6 START STATE DISPLAY TIME ADJUST TIME DISPLAY TIME
INPUT RESET SET RESET
OUTPUT ADJUST TIME DISPLAY TIME ADJUST TIME
FINISH STATE ADJUST TIME DISPLAY TIME ADJUST TIME
n-switch or
boundary interior
‣ execute each loop n times
‣ at least twice
‣ tests each loop irrespective of
the start/end point
‣ 6 loops to be tested in this case
n-switch or
boundary interior
for each exercise...
• Draw a state transition diagram
‣ draw the states
‣ mark the state transitions
‣ define input and output for each state transition
• Determine the level of coverage
‣ 1-switch/switch coverage for these exercises
• Draw a testing tree
• Define the tests
electric toothbrush
A two-speed electric toothbrush is operated by
pressing its one button. The first press of the
button turns the toothbrush from off to speed
one, the second press of the button turns it to
speed two
When the button is pressed for a third time the
electric toothbrush is turned off
OFF
OFF
S1
S2
SPEED SPEED
2 1 OFF
S1
tape cassette player
A tape player has three operations: play, fast
forward and fast play. Play and fast forward are
activated using the play and fast forward button
respectively. These operations can be cancelled
using the stop button. When in play mode, the
fast forward can be used to fast play. When in fast
play mode, the fast forward button can be
pressed again to enter fast forward or the stop
button can be used to return to play. When in
fast forward the play button can be pressed to
enter play mode directly.
fa
OFF
st
y
fo
a
pl
rw
st
op
ar
op
d
st
play FAST
PLAY FOR-
WARD
fa
d
st
ar
op
st
rw
fo
fo
rw
FAST
st
ar
PLAY fa
d
0-switch or
branch coverage
1-switch or
switch coverage
conclusions...
• There are many useful techniques available
‣ state transition testing is only one of the many
• A finite number of tests can be defined from an
infinite number of test scenarios and a level of
coverage can still be achieved
• The process for state transition testing:
‣ draw state transition diagram
‣ determine start state, input, output and finish state
‣ determine coverage level to be achieved
‣ draw testing tree
‣ define tests
thank you very much...
Peter Quentin - QBIT
peter@[Link]