Title :
Software assurance by bounded exhaustive testing
Author :
Coppit, David ; Yang, Jinlin ; Khurshid, Sarfraz ; Le, Wei ; Sullivan, Kevin
Author_Institution :
Dept. of Comput. Sci., Coll. of William & Mary, Williamsburg, VA, USA
fDate :
4/1/2005 12:00:00 AM
Abstract :
Bounded exhaustive testing (BET) is a verification technique in which software is automatically tested for all valid inputs up to specified size bounds. A particularly interesting case of BET arises in the context of systems that take structurally complex inputs. Early research suggests that the BET approach can reveal faults in small systems with inputs of low structural complexity, but its potential utility for larger systems with more complex input structures remains unclear. We set out to test its utility on one such system. We used Alloy and TestEra to generate inputs to test the Galileo dynamic fault tree analysis tool, for which we already had both a formal specification of the input space and a test oracle. An initial attempt to generate inputs using a straightforward translation of our specification to Alloy did not work well. The generator failed to generate inputs to meaningful bounds. We developed an approach in which we factored the specification, used TestEra to generate abstract inputs based on one factor, and passed the results through a postprocessor that reincorporated information from the second factor. Using this technique, we were able to generate test inputs to meaningful bounds, and the inputs revealed nontrivial faults in the Galileo implementation, our specification, and our oracle. Our results suggest that BET, combined with specification abstraction and factoring techniques, could become a valuable addition to our verification toolkit and that further investigation is warranted.
Keywords :
automatic programming; fault trees; formal specification; program debugging; program testing; program verification; software fault tolerance; software tools; Alloy; BET; Galileo dynamic fault tree analysis tool; TestEra; bounded exhaustive testing; formal methods; formal specification; program debugging; program verification; software assurance; software verification technique; Aircraft; Automatic testing; Data structures; Debugging; Fault tolerant systems; Fault trees; Formal specifications; Hardware; Software testing; System testing; Index Terms- Formal methods; program verification; testing and debugging.;
Journal_Title :
Software Engineering, IEEE Transactions on
DOI :
10.1109/TSE.2005.52