1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
PROJECT
Software Design for Testability
GOAL
The aim of the project is to develop (1) a methodology for designing
testable software systems, and (2) an accompanying testing framework.
Systems targeted by this project are software systems which interact
with and control hardware and which are therefore difficult to test
extensively.
INTRODUCTION
In hardware/software systems, functionality like high-speed data
acquisition, manipulation and transmission tends to be implemented by
hardware, possibly complemented by, relatively simple, software. More
complex software is applied to control the system, with functionality
like administration, exception handling, and (re-) configuration.
The main problem with software which controls hardware is how to test
it extensively against hardware failures, exceptions and other unusual
conditions. Failure conditions to which the software must respond
correctly can, of course be stimulated by probing screwdrivers at the
hardware and other brute-force techniques, but would be much more
economical and, more important, repeatable if such conditions were
simulated.
LANGUAGE
XXX.
FRAMEWORK
The testing framework will include features listed below. Note that
for the implementation of a lot of these, active support by the test
objects is necessary, obviously.
- the framework maintains the notion of simulated time: actions by
the test objects can specify the elapsed simulated time; for all
other software actions simulated time runs at the same pace as the
real time.
- enumerated fault testing: testing the response to each of an
enumerable set of conditions.
- statistical fault testing: testing the response to conditions from
a set, occuring statistically. Statistical testing can be used to
generate scenario's.
- scenario testing: feeding the system faults according to a
scenario, which can contain statistical faults, dependencies,
timing information, &c.
- loading a particular state of the system.
- making a snapshot of the system's state and reloading from a
previous snapshot.
- In between tests, the system may be reset to its default state,
its state may be retrieved from a snapshot or its state may be
unmodified.
|