Bytecode fault injection for Java software

Developers using third party software components need to test them to satisfy quality requirements. In the past, researchers have proposed fault injection testing approaches in which the component state is perturbed and the resulting effects on the rest of the system are observed. Non-availability of source code in third-party components makes it harder to perform source code level fault injection. Even if Java decompilers are used, they do not work well with obfuscated bytecode. We propose a technique that injects faults in Java software by manipulating the bytecode. Existing test suites are assessed according to their ability to detect the injected faults and improved accordingly. We present a case study using an open source Java component that demonstrates the feasibility and effectiveness of our approach. We also evaluate the usability of our approach on obfuscated bytecode.

[1]  Farnam Jahanian,et al.  ORCHESTRA: A Fault Injection Environment for Distributed Systems , 1996 .

[2]  James M. Bieman,et al.  Mutation of Java objects , 2002, 13th International Symposium on Software Reliability Engineering, 2002. Proceedings..

[3]  Jim Gray,et al.  A census of Tandem system availability between 1985 and 1990 , 1990 .

[4]  João Carreira,et al.  Why do some (weird) people inject faults? , 1998, SOEN.

[5]  Daniel P. Siewiorek,et al.  Fault Injection Experiments Using FIAT , 1990, IEEE Trans. Computers.

[6]  Gary McGraw,et al.  Software fault injection: inoculating programs against errors , 1997 .

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

[8]  John A. Clark,et al.  The Rigorous Generation of Java Mutation Operators Using HAZOP , 1999 .

[9]  Hitoshi Kume,et al.  A Case History Analysis of Software Error Cause-Effect Relationships , 1991, IEEE Trans. Software Eng..

[10]  Jeffrey M. Voas,et al.  Predicting How Badly "Good" Software Can Behave , 1997, IEEE Softw..

[11]  John A. Clark,et al.  Assessing Test Set Adequacy for Object-Oriented Programs Using Class Mutation , 2000 .

[12]  Dhiraj K. Pradhan,et al.  Fault Injection: A Method for Validating Computer-System Dependability , 1995, Computer.

[13]  W. Eric Wong,et al.  A theoretical comparison between mutation and data flow based test adequacy criteria , 1994, International Conference on Scientific Computing.

[14]  Cecília M. F. Rubira,et al.  Jaca: a reflective fault injection tool based on patterns , 2002, Proceedings International Conference on Dependable Systems and Networks.

[15]  John J. Marciniak Encyclopedia of software engineering (vol. 1 A-N) , 1994 .

[16]  John A. Clark,et al.  Class Mutation : Mutation Testing for Object-Oriented Programs , 2000 .

[17]  Adam Woei-Jyh Lee,et al.  Fault-injection experiments for distributed objects , 1999, Proceedings of the International Symposium on Distributed Objects and Applications.

[18]  Daniel P. Siewiorek,et al.  Development of a benchmark to measure system robustness , 1993, FTCS-23 The Twenty-Third International Symposium on Fault-Tolerant Computing.

[19]  Mario Jino,et al.  Proteum: uma ferramenta de teste baseada na analise de mutantes , 1993 .

[20]  Ram Chillarege,et al.  Understanding large system failures-a fault injection experiment , 1989, [1989] The Nineteenth International Symposium on Fault-Tolerant Computing. Digest of Papers.

[21]  A. Jefferson Offutt,et al.  MuJava: an automated class mutation system , 2005, Softw. Test. Verification Reliab..

[22]  Nicolás Hernández Pérez A theoretical comparison between moments and L-moments , 2003 .

[23]  Syed R. Ali Analysis of Total Outage Data for Stored Program Control Switching Systems , 1986, IEEE J. Sel. Areas Commun..

[24]  James M. Bieman,et al.  Using fault injection to increase software test coverage , 1996, Proceedings of ISSRE '96: 7th International Symposium on Software Reliability Engineering.

[25]  Dawn Cizmar 22nd Annual 1994 ACM Computer Science Conference : scaling up : meeting the challenge of complexity in real-world computing applications, Phoenix, Arizona, March 8-10, 1994 : proceedings , 1994 .

[26]  Wynne Hsu,et al.  DESIGN OF MUTANT OPERATORS FOR THE C PROGRAMMING LANGUAGE , 2006 .

[27]  R.A. DeMillo,et al.  An extended overview of the Mothra software testing environment , 1988, [1988] Proceedings. Second Workshop on Software Testing, Verification, and Analysis.

[28]  Sudipto Ghosh,et al.  TDS: a tool for testing distributed component-based applications , 2001 .

[29]  Tsanchi Li Adequacy assessment of tests for fault tolerance , 1995 .

[30]  Inderpal S. Bhandari,et al.  Orthogonal Defect Classification - A Concept for In-Process Measurements , 1992, IEEE Trans. Software Eng..

[31]  Aditya P. Mathur,et al.  Integration testing using interface mutation , 1996, Proceedings of ISSRE '96: 7th International Symposium on Software Reliability Engineering.

[32]  S. L. Gerhart,et al.  Toward a theory of test data selection , 1975, IEEE Transactions on Software Engineering.

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