Vol.12 (2022) No. 6 ISSN: 2088-5334 Optimization of Mutation Testing Challenges to Fixing Faults Sasa Ani Arnomo a,* , Noraini Binti Ibrahim b, Anggia Dasa Putri c , Ellbert Hutabri c a Department of Information System, Universitas Putera Batam, Batam, Indonesia b Faculty Sciences Computer and Technology Information, Universiti Tun Hussein Onn Malaysia (UTHM), Johor, Malaysia c Department of Informatics Engineering, Universitas Putera Batam, Batam, Indonesia Corresponding author: * sasa@puterabatam.ac.id Abstract— One of the challenges of mutation testing is fixing faults. In the debugging phase, all live mutants were repaired. Programs need high mutation scores to be declared reliable program codes. Each mutation test can allow the identification of multiple mutants. This is what confuses the faults fixing process. The objective of this research is to get the shortest route so that it can help in sorting the mutant types during application improvement after testing. The optimization is needed considering the number of mutants in each mutation testing. The problems related to optimization are very complex. It takes a suitable method to find the shortest path by paying attention to each point. There are 30 projects chosen randomly. The operator mutations that are often killed when testing mutations are AOIU and COI. The proposed optimization for mutant repair sequence is the ant colony system (ACS). The route selection using the Ant Colony System algorithm resulted in route optimization of 1.528254. Meanwhile, if the genetic algorithm is used, the score is 1.767643. Optimization results are very helpful for developers in improving code in mutation testing. Research states the best order for handling mutants using ACS. This research can be further developed with the addition of class-level mutant cases which are produced using class mutation operators. Class mutation operators have different characteristics from traditional mutation operators. In particular, it requires changes to the program structure, such as the definition of class variables. Keywords— Fixing faults; mutation testing; optimization; ACS. Manuscript received 19 Feb. 2021; revised 31 Jul. 2021; accepted 8 Sep. 2021. Date of publication 31 Dec. 2022. IJASEIT is licensed under a Creative Commons Attribution-Share Alike 4.0 International License. I. INTRODUCTION Software testing is essential in creating high-quality software [1]–[3]. There are many types of testing software which include mutation testing. Mutation testing is a white box software testing technique based on faults [4], [5], which is used to assess the quality of a program's code. A number of mutants will be generated when testing a source code. Each mutant appears based on the manipulation of the original program through a transformed mutation operator [6], [7]. Mutation testing executes the mutants from the imitation program and determines whether the mutants can be killed. The test case generates a different set of tests that can be run to detect faults [8]. The results of the execution of an imitation program get a different value from the results of the original program execution, so it can be stated that the mutant status is killed [9], [10]. If the execution value is the same, the mutant is declared alive. Live mutants need to be evaluated where the original program with the imitation program has the same execution value even though they both have different codes. After testing, the mutation score can be calculated based on the number of live mutants and dead mutants. The mutation score is used in the research discussion. Mutation testing has problems with computational costs[11]. This makes it possible to generate a large number of mutants upon execution on a test suite. The cost of creating the mutants and repairing the program is expensive. Researchers have proposed many techniques to reduce their costs[12], such as weak mutation testing [13], selective mutation testing, high mutation testing, mutant relationship redundancy[14], Model-based testing (MBT)[15], classification, clustering, and the advantage of high fault localization accuracy[16]. However, the cost of the mutation process remains high. This study proposes how to optimize the repair sequence of the mutants that have been detected. The data was recapitulated based on the mutation score for each mutant. The mutant selection process is needed to measure the representation of the important selected mutants. In selective mutation testing, the selected mutants should represent all mutants that appear in the test series[17]. It gave effectiveness in testing capabilities that reveal the error code. Selecting 2438