Subject Infrastructure Repository

Get Access!
 
Home
SIR Software Objects
 
SIR Users and Publications
Frequently Asked Questions
Repository License
 
Acknowledgments

Object Biography: Cruise Control, Elevator, and Ordered Set

The Java clusters (Cruise Control, Elevator and OrdSet) presented here have been used in an empirical study addressing the impact of using state machines for testing class clusters that exhibit a state-dependent behavior in testing cost effectiveness when compared with structural testing.

The RTP testing technique , a common state testing strategy, was selected for state based testing. A state machine would be represented as a tree graph called transition tree which includes (in a piecewise manner) all the transition sequences (paths) that begin and end with the same state, as well as simple paths (i.e., sequences of transitions that contain only one iteration for any loop present in the state machine) from the initial state to the final state. A transition tree is provided in the package documentation. Participants working with state machines are asked to use state invariants in their oracle assertions. After executing a transition, an oracle assertion checks the new cluster state with the expected state invariant. Participants are also asked to implement contract assertions in their oracles. Contract assertions include class invariant, and methods' preconditions and post-conditions. The different invariants and contracts are provided in OCL in the provided documentation.

For structural testing, participants were told to attempt covering all blocs (nodes, statements) and edges in the methods' control flow graphs. By running their drivers on the instrumented code (provided along with the source code), the students identify non-covered nodes and edges. This guides students to identify new test cases to be added to their drivers to improve structural coverage. Structural testing students were advised to write oracles checking expected output/attribute values against actual ones.

To compare the fault detection effectiveness of state based testing to structural testing, one executes the different drivers delivered by the experiment participants on a number of mutant programs (or mutants - provided in the package), that is versions of the program under test where one fault was seeded using a mutation operator. The mutants were automatically generated using MuJava .

References

Assessing, Comparing, and Combining State machine-Based Testing and Structural Testing: A Series of Experiments, Samar Mouchawrab, Lionel C. Briand, Yvan Labiche, and Massimiliano Di Penta. 2008. Technical Report, Carleton University, Ottawa, Ontario, Canada. pdf

 


Try the following link to upgrade the page display. (Explanation)