Generating State-Based Testing Models for Object-Oriented Framework Interface Classes

An application framework provides a reusable design and implementation for a family of software systems. Application developers extend the framework to build their particular applications using hooks. Hooks are the places identified to show how to use and customize the framework. Hooks define the Framework Interface Classes (FICs) and the specifications of their methods. As part of the development life cycle, it is required to test the implementations of the FICs. Building a testing model to express the behavior of a class is an essential step for the generation of the class-based test cases. The testing model has to be consistent with the specifications provided for the hooks. State-based models consisting of states and transitions are testing models well suited to objectoriented software. Typically, hand-construction of a state-based model of a class behavior is expensive, error-prone, and may result in constructing an inconsistent model with the specifications of the class methods, which misleads verification results. In this paper, a technique is introduced to automatically synthesize a state-based testing model for FICs using the specifications provided for the hooks. A tool that supports the proposed technique is introduced.




References:
[1] K. Beck and R, Johnson. Patterns generated architectures, Proc. of
ECOOP 94, 1994, 139-149.
[2] G. Froehlich. Hooks: an aid to the reuse of object-oriented frameworks,
Ph.D. Thesis, University of Alberta, Department of Computing Science,
2002.
[3] Y. Cheon and G. Leavens, A simple and practical approach to unit
testing: the JML and JUnit way, Proc. of the 16th European Conference
on Object-Oriented Programming (ECOOP2002), June 2002, pp. 231-
254.
[4] R. Binder. Testing object-oriented systems, Addison Wesley, 1999.
[5] J. Offut and A. Abdurazik, Generating tests from UML specifications,
Second International Conference on the Unified Modeling Language
(UML99), Fort Collins, CO, October 1999, 416-429.
[6] A. Abdurazik, P. Ammann, W. Ding, and J. Offutt, Evaluation of three
specification-based testing criteria, Sixth IEEE International Conference
on Engineering of Complex Computer Systems (ICECCS '00), Tokyo,
Japan, September 2000, 179-187.
[7] L. Briand, Y. Labiche, and H. Sun, Investigating the use of analysis
contracts to support fault isolation in object-oriented code, International
Symposium on Software Testing and Analysis ISSTA, Rome, Italy, July
2002.
[8] B. Baudry, Y. LeTraon, and J.-M. Jézéquel, Robustness and
diagnosability of OO-systems designed by contracts, Proceedings of
Metrics'01, London, UK, April 2001.
[9] B. Meyer, Design by contracts, IEEE Computer, 1992, Vol. 25(10), 40-
52.
[10] Jcontract,
http://www.parasoft.com/jsp/products/home.jsp?product=Jcontract,
ParaSoft Corporation, July 2006.
[11] iContract: the Java Design-by-Contract tool,
http://www.javaworld.com/javaworld/jw-02-2001/jw-0216-
cooltools.html, July 2006.
[12] G. Leavens, A. Baker, and C. Ruby, Preliminary design of JML: a
behavioral interface specification language for Java, TR 98-06p, Iowa
State University, Department of Computer Science, August 2001.
[13] G. Leavens, A. Baker, and C. Ruby, JML: a notation for detailed design.
In H. Kilov, B. Rupe, and I. Simmonds, editors, behavioral
specifications of Businesses and Systems, chapter 12, Kluwer, 1999, pp.
175-188.
[14] Junit, http://junit.sourceforge.net/, July 2006.
[15] C. Boyapati, S. Khurshid, and D. Marinov, Korat: Automated Testing
Based on Java Predicates, International Symposium on Software Testing
and Analysis ISSTA, Rome, Italy, July 2002.
[16] Jtest, http://www.parasoft.com/jsp/products/home.jsp?product=Jtest,
ParaSoft Corporation, July 2006.
[17] J. Offutt and J. Pan, Automatically detecting equivalent mutants and
infeasible paths, The Journal Of Software Testing, Verification, and
Reliability, 7(3), September 1997, pp 165-192.
[18] A. Beugnard, J.-M. Jézéquel, N. Plouzeau, and D. Watkins, Making
components contract aware, IEEE Computer, 13(7), July 1999.