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]  Lionel C. Briand,et al.  Is mutation an appropriate tool for testing experiments? , 2005, ICSE.

[2]  Twittie Senivongse,et al.  Title AN ANALYSIS TECHNIQUE TO INCREASE TESTABILITY OF CLASS-COMPONENT By Miss Supaporn Kansomkeat Field of study , 2006 .

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

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

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

[6]  Jeff Offutt,et al.  Generating Test Cases from UML Specifications , 1999 .

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

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

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

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

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

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

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

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

[15]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

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

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

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

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