Reducing The Cost And Complexity Of Mutation Testing Using Metadata Versioning Anu Saini , Raghav Bhasin Department of Computer Science,Department of Computer Science, Maharaja Surajmal Institute of Technology,Maharaja Surajmal Institute of Technology, JanakPuri, New Delhi, India.Janakpuri, New Delhi,India. Rajat Markan , Rishav Arora Department of Computer Science,Department of Computer Science, Maharaja Surajmal Institute of Technology,Maharaja Surajmal Institute of Technology, JanakPuri, New Delhi, India.JanakPuri, New Delhi, India. Abstract Mutants which are generated in mutation testing have the same complexity as of the original source code. Thus if the space complexity of the original source code is large, then the cost of mutation testing will also increase due to generation of large number of mutants. In this research paper we have presented the approach to reduce the complexity of mutation testing using metadata versioning. Metadata versioning states that instead of creating a new mutant for the corresponding statement change, we can maintain a copy of original source code and change is incorporated in this copy of source code. Thus we don’t need to maintain all copies of mutants, we only need a copy of original source code and a version table that contains the information regarding which statement has to be changed in the copy of source code and what was the previous changed values in that copy. Thus for every mutant, we can change the statements in the copy of original source code and test this against the test cases. 1. Introduction Mutation testing also known as false based testing is one of the important testing techniques that ensure the robustness of test cases. It means test cases should be robust enough to fail the false code also known as mutant code. There are four steps in mutation testing: Mutants are generated first. Mutants are generated by changing the syntactic elements in the source code. These syntactical changes introduced in the source code are also known as faults. This is how the mutant is generated as shown in Table 1: Table I. How the mutant is generated Original Source Code Mutant If(a<b) Print ”mutation testing” Else Print “testing failed” If(a) Print “mutation testing” Else Print “testing failed” Now the test cases are applied to mutants to test the effectiveness of these test cases. The test cases are applied to original source code as well. The test cases should detect faults in the mutant code. Results are computed and then comparison of original source code and mutant code is performed. Mutant is killed if the output of both the original source code and mutant code is same otherwise mutant is kept alive. This was the brief introduction of mutation testing. Now our aim in this study is to reduce the cost of mutation testing. It is obvious that mutants occupy the same space complexity as that of original source code. Thus if we are generating large number of mutants then cost of mutation testing will be very high. To solve this problem, this study uses the concept of metadata versioning. In metadata versioning, if any change is 809 International Journal of Engineering Research & Technology (IJERT) Vol. 2 Issue 5, May - 2013 ISSN: 2278-0181 www.ijert.org