requests will require a response, and a missing
response failure will show up in the invoking
sequence as an illegal pattern. This was the approach
we followed.
4.5 Evaluation
The BET approach to this problem was analyzed
with respect to the sample defect described in (Boy,
2004). In this example there are 2 or more clients, A
and B, and a lock server. The code was apparently
written so that if a client does not receive a
requested lock after a certain amount of time, then it
sends a release() for the lock to the server. Suppose
that the grant() message had been issued by the
server but not yet received by process A when it
sends the release(). The logic written into the server
is such that when it gets the release() it assumes the
lock is free, so that it can allocate it to a subsequent
request() from process B. As soon as A receives the
tardy grant() we will have a situation in which both
A and B have the same lock.
The random testing experiments described in
(Boy, 2004) resulted in the detection of this bug.
However, a different set of tests, just as likely to be
chosen, would have missed it. On the other hand, the
more precise approach described in the Cesium
paper would have repeatably and reliably found the
defect, provided the tester had thought to construct
such a test. BET would reliably generate a defect-
revealing sequence every time.
5 CONCLUSIONS
The results of our investigation were positive in two
ways. The four-part framework was an effective,
generic approach to the application of BET, in which
the essential concerns are identified and separated.
In addition, BET was found to be an effective defect
detection technique across the wide range of
examples that were considered.
Fault models can be used to specifically
document the defects for which a set of tests will be
effective. They proved to be a convenient way to
consider the application-bounding aspect of BET, in
order to systematically define minimal bounds for
reliable fault detection. In all three application
examples, the requirement that the BET test
generator "cover" the fault model facilitated the
identification of necessary lower bounds on the
"size" of the bounded application to be used in test
construction.
Failure models were found to be useful in
identifying a class of failures that can be observed.
Taken together, the fault and failure methods
circumscribe the defects for which a BET testing
effort is guaranteed to be effective.
Our BET-oriented test procedure led to
significant paradigm shifts in the way that two of our
applications could be tested. For the graphics
application it led to the creation of an inverse oracle.
For the finite element simulation, it led to a failure
model that was stronger than simple robustness and
more consistent than regression testing. Both of
these novelties were due to the very essence of BET
– bounding the complete problem domain into
meaningful subdomains by some central
characteristics. By considering these central
characteristics, stronger correctness oracles naturally
become apparent. This is not likely to occur during
simple random testing in which the test domain does
not have the sort of structure that lends itself to the
discovery of stronger failure models and automated
oracles. While this kind of paradigm shift may not
be unique to our testing methodology, and may not
occur for every application, our experience indicated
that our systematic testing framework facilitates this
kind of change in thinking.
REFERENCES
Artho, C., Leungwattanakit, W., Hagiya, M., Tanabe, Y.,
Tools and Techniques for Model Checking Networked
Programs. SNPD, 2008.
Bioeng. Dept., http://www.continuity.ucsd.edu, UCSD,
2008.
Boy, N., Casper, J., Pacheco, C., Williams, A.,
"Automated Testing of Distributed Systems, Final
project report, MIT 6.824, May 2004.
Guillarmo A. A., and Cristian, F., Simulation-based
Testing of Computer Protocols for Dependable
Embedded Systems, The Journal of SuperComputing,
16(1-2), 2000.
Howden, W.E. and Rhyne, C., Test Frameworks for
Elusive Bug Testing, ICSOFT, Barcelona, Spain, 2007.
Howden, W.E., Elusive Bugs, Exhaustive Testing and
Incomplete Oracles, ICSOFT, Porto, Portugal, 2008.
Kensler, A.; Shirley, P. “Optimizing Ray-Triangle
Intersection via Automated Search”. IEEE Symposium
on Interactive Ray Tracing 2006, Sept., 2006.
Miller, B. P., Cooksey, G, and Moore, F. “An Empirical
Study of the Robustness of MacOS Applications
Using Random Testing,” Proceedings of the 1st
International workshop on Random testing, 2006.
Sullivan, K, J., Yang, J., Coppit, D., Khurshid, S.,
Jackson, D., Software Assurance by Bounded
Exhaustive Testing, Proc. ISSTA, 2004.
Woo, A., Pearce, A., and Ouellette, M. “It’s really not a
rendering bug, you see...” IEEE Computer Graphics &
Applications, 16(5), September 1996.
ICSOFT 2009 - 4th International Conference on Software and Data Technologies
282