Transformations for testability
There are a number of alternative notions and definitions of
testability. However, our work has largely considered the
ease with which we can generate a test suite that satisfies
a given test criterion. Naturally, this will depend
heavily on both the test criterion used and the technique
being used to generate the test data.
Once we have a notion of testability, we can ask whether
it is possible to automatically transform our code or specification
in order to improve the testability. We have looked at two
main forms of testability.
Genetic algorithms have been used in order to automate
the generation of test data to satisfy white-box coverage
based test criteria, such as achieving 100% branch coverage.
However, in practice certain structural features can have
a significant impact - making it likely that test generation
will take longer and less likely that full coverage is achieved.
The problem thus is to transform out these undesirable features,
from a program p, in a manner that leads to a program p' such that
test data generated from p' is guaranteed to be adequate for p.
Suppose we are testing from a state based specification written using
a language such as statecharts or SDL. Here we often abstract
away the data from the specification to form a finite state machine
that represents the control structure of the specification.
We then generate a test suite T from the FSM and, for each
test sequence in T, attempt to find test data that leads to
the corresponding path in the specification being traversed.
However, these paths need not be feasible. We are thus interested
in our specification containing a set of paths that,
between them, satisfy the test criterion and that are
guaranteed to be feasible. The problem then is to (automatically) transform
our specification so that it satisfies this form of testability.
Interestingly, in each case our transformations need not
be meaning preserving.
R. M. Hierons, M. Harman, and C. J. Fox, 2005,
Branch-coverage testability transformation for unstructured programs,
The Computer Journal, 48 4, pp. 421-436.
R. M. Hierons, T.-H. Kim, and H. Ural, 2004,
On The Testability of SDL Specifications,
Computer Networks, 44 5, pp. 681-700.
M. Harman, L. Hu, R. M. Hierons, J. Wegener, H. Sthamer, A. Baresel, and M. Roper, 2004,
IEEE Transactions on Software Engineering, 30 1, pp. 3-16.
D. Fatiregun, M. Harman and R. M. Hierons, 2004,
Evolving Transformation Sequences using Genetic Algorithms,
4th Workshop on Source Code Analysis and Manipulation (SCAM 2004),
September 14th-15th, 2004, Chicago, Illinois, USA, pp. 65-74.
R.M. Hierons, T.-H. Kim, and H. Ural, 2002,
Expanding an Extended Finite State Machine to aid Testability,
IEEE Annual Computer Software and Applications Conference (COMPSAC 2002),
M. Harman, L. Hu, R. M. Hierons, C. Fox, S. Danicic,
Andre Baresel, Harmen Sthamer, and
Joachim Wegener, 2002,
Evolutionary Testing Supported by Slicing and Transformation,
IEEE International Conference on Software Maintenance (ICSM 2002)
Montreal, Canada, October 2002.
Back to Rob Hierons'
Last updated: July 2006.
Disclaimer The contents of this page falls
outside the responsibility of Brunel University.