Coverage testing of Java programs and components

Although software testing is a crucial activity in the software development process, only recently have more sound and consistent testing tools become available for testing Java programs and their components. These tools support mostly functional and control-flow based structural criteria. In this paper we explore control-flow and data-flow based coverage criteria to support the testing of Java programs and/or components. We also describe a testing tool, named JaBUTi, which can be used by both the component developer and the component user to test Java-based components and/or systems. To achieve this goal, the tool works at the bytecode level such that no source code is required during the testing activity. We illustrate these ideas and concepts with an example extracted from the literature.

[1]  Paul Piwowarski,et al.  Coverage measurement experience during function test , 1993, Proceedings of 1993 15th International Conference on Software Engineering.

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

[3]  Gary Mcgraw,et al.  Building a Java Software Engineering Tool for Testing Java Applets , 2004 .

[4]  W. Eric Wong,et al.  Java bytecode static analysis: deriving structural testing requirements , 2003 .

[5]  Gregg Rothermel,et al.  Using component metacontent to support the regression testing of component-based software , 2001, Proceedings IEEE International Conference on Software Maintenance. ICSM 2001.

[6]  Jianjun Zhao Dependence analysis of Java bytecode , 2000, Proceedings 24th Annual International Computer Software and Applications Conference. COMPSAC2000.

[7]  A. J. Offutt,et al.  Testing object-oriented software using the category-partition method , 1995 .

[8]  Elaine J. Weyuker,et al.  Data flow-based test adequacy analysis for languages with pointers , 1991, TAV4.

[9]  Joseph Robert Horgan,et al.  Effect of test set size and block coverage on the fault detection effectiveness , 1994, Proceedings of 1994 IEEE International Symposium on Software Reliability Engineering.

[10]  Mark Harman,et al.  Pareto efficient multi-objective test case selection , 2007, ISSTA '07.

[11]  Jehad Al Dallal,et al.  Dynamic data flow analysis for Java programs , 2000, Inf. Softw. Technol..

[12]  Neelam Soundarajan,et al.  Testing Components , 2001 .

[13]  Takuya Katayama,et al.  Proceedings of the 15th international conference on Software Engineering , 1982, ICSE 1993.

[14]  Glenford J. Myers,et al.  Art of Software Testing , 1979 .

[15]  Peter Zimmerer,et al.  International workshop on testing distributed component-based systems , 1999, ICSE 1999.

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

[17]  Mei-Hwa Chen,et al.  Testing object-oriented programs - an integrated approach , 1999, Proceedings 10th International Symposium on Software Reliability Engineering (Cat. No.PR00443).

[18]  Software and Component Testing: Using Jtest ® to Automate Unit Testing and Coding Standard Enforcement , .

[19]  Lori L. Pollock,et al.  OMEN: A strategy for testing object-oriented software , 2000, ISSTA '00.

[20]  Vivek Sarkar,et al.  Dependence Analysis for Java , 1999, LCPC.

[21]  Simon L. Peyton Jones,et al.  Imperative functional programming , 1993, POPL '93.

[22]  Hiralal Agrawal,et al.  Dominators, super blocks, and program coverage , 1994, POPL '94.

[23]  Boris Beizer,et al.  Black Box Testing: Techniques for Functional Testing of Software and Systems , 1996, IEEE Software.

[24]  Joseph Robert Horgan,et al.  Data flow coverage and the C language , 1991, TAV4.

[25]  Yingxu Wang,et al.  A method for built-in tests in component-based software maintenance , 1999, Proceedings of the Third European Conference on Software Maintenance and Reengineering (Cat. No. PR00090).

[26]  Clemens A. Szyperski,et al.  Component software - beyond object-oriented programming , 2002 .

[27]  Stephen H. Edwards,et al.  A framework for practical, automated black‐box testing of component‐based software † , 2001, Softw. Test. Verification Reliab..

[28]  John Morris,et al.  A software component verification tool , 2000, Proceedings International Conference on Software Methods and Tools. SMT 2000.

[29]  P ? ? ? ? ? ? ? % ? ? ? ? , 1991 .

[30]  Volker Gruhn,et al.  An integrated testing technique for component-based software , 2001, Proceedings ACS/IEEE International Conference on Computer Systems and Applications.