Testing Object-Oriented Framework Applications Using FIST2 Tool: A Case Study

An application framework provides a reusable design and implementation for a family of software systems. Frameworks are introduced to reduce the cost of a product line (i.e., a family of products that shares the common features). Software testing is a timeconsuming and costly ongoing activity during the application software development process. Generating reusable test cases for the framework applications during the framework development stage, and providing and using the test cases to test part of the framework application whenever the framework is used reduces the application development time and cost considerably. This paper introduces the Framework Interface State Transition Tester (FIST2), a tool for automated unit testing of Java framework applications. During the framework development stage, given the formal descriptions of the framework hooks, the specifications of the methods of the framework-s extensible classes, and the illegal behavior description of the Framework Interface Classes (FICs), FIST2 generates unitlevel test cases for the classes. At the framework application development stage, given the customized method specifications of the implemented FICs, FIST2 automates the use, execution, and evaluation of the already generated test cases to test the implemented FICs. The paper illustrates the use of the FIST2 tool for testing several applications that use the SalesPoint framework.

Authors:



References:
[1] K. Beck and R, Johnson, 1994. Patterns generated architectures, Proc.
of ECOOP 94, 139-149.
[2] G. Froehlich, H.J. Hoover, L. Liu, and P.G. Sorenson, May 1997.
Hooking into Object-Oriented Application Frameworks, Proc. 19th Int'l
Conf. on Software Engineering, Boston, 491-501.
[3] G. Froehlich, 2002. Hooks: an aid to the reuse of object-oriented
frameworks, Ph.D. Thesis, University of Alberta, Department of
Computing Science.
[4] K. Saleh, A. Boujarwah and J. Al-Dallal, Jan 2002, "Anomaly detection
in concurrent Java programs using dynamic data flow analysis", Journal
of Information and Software Technology, Vol. 44, no 1, pp. 53-61.
[5] R. Binder, 1999. Testing object-oriented systems, Addison Wesley.
[6] T. Chow, 1978, Testing software design modeled by finite state
machines, IEEE Transactions on Software Engineering, EE-4(3), 178-
187.
[7] J. Offutt and A. Abdurazik, October 1999, Generating tests from UML
specifications, Second International Conference on the Unified
Modeling Language (UML99), Fort Collins, CO, 416-429.
[8] K. Bogdanov and M. Holcombe, 2001, Statechart testing method for
aircraft control systems, Software Testing, Verification and Reliability,
11(1), 39-54.
[9] A. Abdurazik, P. Ammann, W. Ding, and J. Offutt, September 2000,
Evaluation of three specification-based testing criteria, Sixth IEEE
International Conference on Engineering of Complex Computer Systems
(ICECCS '00), Tokyo, Japan, 179-187.
[10] J. Al Dallal, 2002, Class-based testing of object-oriented framework
interface classes, Ph.D. Thesis, University of Alberta, Department of
Computing Science.
[11] L. Briand, Y. Labiche, and H. Sun, July 2002, Investigating the use of
analysis contracts to support fault isolation in object-oriented code,
International Symposium on Software Testing and Analysis ISSTA,
Rome, Italy.
[12] C. Boyapati, S. Khurshid, and D. Marinov, Korat, July 2002: Automated
Testing Based on Java Predicates, International Symposium on Software
Testing and Analysis ISSTA, Rome, Italy.
[13] B. Meyer, 1992, Design by contracts, IEEE Computer, Vol. 25(10), 40-
52.
[14] Jcontract, July 2006, http://www.parasoft.com/jsp/products/home.jsp?
product= Jcontract, ParaSoft Corporation.
[15] Y. Cheon and G. Leavens, June 2002, A simple and practical approach
to unit testing: the JML and JUnit way, Proc. of the 16th European
Conference on Object-Oriented Programming (ECOOP2002), pp. 231-
254.
[16] iContract: the Java Design-by-Contract tool, July 2006,
http://www.javaworld.com/javaworld/jw-02-2001/jw-0216-
cooltools.html.
[17] G. Leavens, A. Baker, and C. Ruby, 1999, JML: a notation for detailed
design. In H. Kilov, B. Rupe, and I. Simmonds, editors, behavioral
specifications of Businesses and Systems, chapter 12, Kluwer, pp. 175-
188.
[18] G. Leavens, A. Baker, and C. Ruby, August 2001, Preliminary design of
JML: a behavioral interface specification language for Java, TR 98-
06p, Iowa State University, Department of Computer Science.
[19] Junit, July 2006, http://junit.sourceforge.net/.
[20] Jtest, July 2006, http://www.parasoft.com/jsp/products/home.jsp?
product=Jtest, ParaSoft Corporation.
[21] P. Fenkam, H. Gall and M. Jazayeri, September 2002, Constructing
corba-supported oracles for testing: a case study, Proc. of the 17th IEEE
International Conference on Automated Software Applications
(ASE-02), Edinburgh, UK, pp. 129-138.
[22] J. Al Dallal and P. Sorenson, September 2002, System testing for objectoriented
frameworks using hook technology, Proc. of the 17th IEEE
International Conference on Automated Software Applications
(ASE-02), Edinburgh, UK, pp. 231-236.
[23] R. Binder, August 1996. Testing for reuse: libraries and frameworks,
Object Magazine, 77-80.
[24] W. Tsai, Y. Tu, W. Shao, and E. Ebner, October, 1999. Testing
extensible design patterns in object-oriented frameworks through
scenario templates, 23rd Annual International Computer Software and
Applications Conference, Phoenix, Arizona, pp. 166-171.
[25] Y. Wang, D. Patel, G. King, I. Court, G. Staples, M. Ross, and M.
Fayad, March 2000, On built-in test reuse in object-oriented framework
design, ACM Computing Surveys (CSUR), Vol. 32(1es), pp. 7-12.
[26] The SalesPoint framework v2.0 homepage, July 2006, http://wwwst.
inf.tu-dresden.de/SalesPoint/v3.0/.