An analysis technique to increase testability of object-oriented components

Object-oriented component engineering is increasingly used for system development, partly because it emphasizes portability and reusability. Each time a component is used, it must be retested in the new environment. Unfortunately, the data abstraction that components usually use results in low testability. First, internal variables cannot be directly set. Second, even though a test input may trigger a fault, the failure does not propagate to the output. This paper presents a technique to increase object-oriented component testability, thereby making it easier to detect faults. Components are often sealed so that source code is not available. The program analysis is performed at the Java component bytecode level. A component's bytecode is analysed to create a control and data flow graph, which is then used to increase component testability by increasing both controllability and observability. We have implemented this technique and applied it to several components. Experimental results reveal that fault detection can be increased by using our increasing testability process. Copyright © 2008 John Wiley & Sons, Ltd.

[1]  Yingxu Wang,et al.  On built-in test reuse in object-oriented framework design , 2000, CSUR.

[2]  Richard J. Lipton,et al.  Hints on Test Data Selection: Help for the Practicing Programmer , 1978, Computer.

[3]  J. Voas,et al.  Software Testability: The New Verification , 1995, IEEE Softw..

[4]  Gregg Rothermel,et al.  Performing data flow testing on classes , 1994, SIGSOFT '94.

[5]  Janusz W. Laski,et al.  A Data Flow Oriented Program Testing Strategy , 1983, IEEE Transactions on Software Engineering.

[6]  A. Jefferson Offutt,et al.  Coupling‐based criteria for integration testing , 1998 .

[7]  A. Jefferson Offutt,et al.  Constraint-Based Automatic Test Data Generation , 1991, IEEE Trans. Software Eng..

[8]  Elaine J. Weyuker,et al.  Selecting Software Test Data Using Data Flow Information , 1985, IEEE Transactions on Software Engineering.

[9]  Roy S. Freedman,et al.  Testability of Software Components , 1991, IEEE Trans. Software Eng..

[10]  Elaine J. Weyuker,et al.  Testing Component-Based Software: A Cautionary Tale , 1998, IEEE Softw..

[11]  A. Jefferson Offutt,et al.  Generating Tests from UML Specifications , 1999, UML.

[12]  Yong Rae Kwon,et al.  Testing of object-oriented programs based on finite state machines , 1995, Proceedings 1995 Asia Pacific Software Engineering Conference.

[13]  A. Jefferson Offutt,et al.  Investigations of the software testing coupling effect , 1992, TSEM.

[14]  Robert V. Binder,et al.  Design for testability in object-oriented systems , 1994, CACM.

[15]  Wanchai Rivepiboon,et al.  Bytecode-Based Analysis for Increasing Class-Component Testability , 1970 .

[16]  A. Jefferson Offutt,et al.  Integration testing of object‐oriented components using finite state machines , 2006, Softw. Test. Verification Reliab..

[17]  J.H. Andrews,et al.  Is mutation an appropriate tool for testing experiments? [software testing] , 2005, Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005..