| This paper describes a technique that helps a test engineer
select, from a large set of randomly generated test
inputs, a small subset likely to reveal faults in the software
under test. The technique takes a program or software component,
plus a set of normal executions—say, from an existing
test suite, or from observations of the software running
properly. The technique works by extracting an operational
model of the software’s operation, and comparing
each input’s operational pattern of execution against the
model. Test inputs whose operational pattern is suggestive
of a fault are further reduced by selecting only one input
per such pattern. The result is a small portion of the original
inputs, deemed most likely to reveal faults. Thus, our
technique can also be seen as an error-detection technique.
We have implemented these ideas in the Eclat tool, designed
for unit testing of Java classes. Eclat generates a
large number of inputs and uses our technique to select only
a few of them as fault-revealing. The inputs that it selects
are an order of magnitude more likely to reveal faults than
non-selected inputs. |