Comprehensive Test Suite Augmentation
No Thumbnail Available
Date
2011-11-08T07:27:54Z
Authors
Journal Title
Journal ISSN
Volume Title
Publisher
Abstract
Test Suite Augmentation (TSA) is based on the
assumption that an existing test suite T already determines whether a program P works properly. When P evolves to P0, a comprehensive set of test cases that witness the changed behavior
shall be generated and augmented to T. We observe that a syntactic change may be propagated in different ways, thereby manifesting itself as different semantic changes (in terms of observable program behavior). We present a path exploration technique that seeks to generate one change revealing test case
for every semantic change, rather than generate multiple test cases which execute the same change and propagate it in the same fashion to the program output.
Our change-based path exploration technique 1) finds all paths that execute at least one changed statement, 2) finds
all paths along which the impact of a syntactic change is propagated to at least one output statement and 3) generates for both programs P and P0 a comprehensive number of test cases,
each of which exposes a different semantic change. If time is bounded during test generation, the semantic difference is computed over those change partitions that have been explored. Our method is not restricted by the number of changes across the two program versions being analyzed - there can be multiple changes across the program versions.
The results from our experiments suggest that by covering the syntactic changes, or even by considering possible ways of propagating the effects of these syntactic changes - we cannot
hope to uncover all possible differences in behavior across two program versions. In other words, analysis of both program versions is needed for generating a comprehensive new set of
tests which can augment the test suite of the old program version. For our subject programs, our method of change execution, change propagation and semantic differencing, yields 6
times as many change-revealing test cases as opposed to tests generated by covering syntactic changes.