Although object-oriented features such as encapsulation, inheritance, and polymorphism provide powerful features, they introduce new kinds of faults, some of which are difficult to detect, diagnose, and correct. Many research have been made on the object-oriented program testing, but there is little research handling object-oriented features well. This thesis presents a mutation testing technique aiming at detecting faults in the use of object-oriented features. The effectiveness of mutation testing depends heavily on mutation operators. However, previously developed operators are insufficient to test the object-oriented language features. Therefore, we developed a comprehensive set of class mutation operators first. Our mutation operators are based on all possible usage patterns of the object-oriented features, and can be used to detect faults involving inheritance, polymorphism, and dynamic binding, thus are useful for inter-class testing.
The cost of mutation testing has traditionally been so high, thus the mutation testing without tool support is almost impossible. We developed an automated mutation tool that supports whole mutation process and graphical user interface for ease of use. Also, to reduce execution cost of mutation testing, we devised a cost reduction method, which uses two key technologies, Mutant Schemata Generation (MSG) and bytecode translation. This method adapts the existing MSG method for mutants that change the program behavior and uses bytecode translation for mutants that change the program structure. A key advantage is in performance: only two compilations are required and both the compilation and execution time for each is greatly reduced. Experimental results show that our cost reduction method is about five times faster than separate compilation.