Article Preview
TopIntroduction
As software testing is known to be an expensive process, open-source software is usually released with several bugs; e.g., at the early releases of Mozilla and Eclipse, about 170 and 120 bugs respectively were reported daily (Abeer Hamdy & El-Laithy, 2020; Abeer Hamdy & Ellaithy, 2020; Abeer Hamdy & Ezzat, 2020). It is essential to design a cost-effective test plan that detects as many defects as possible before the release of the open-source software to ensure the quality of the delivered software. Especially, during the maintenance phase, enhancements and modifications are made to the software, which necessitates the development and execution of new test cases to test the modifications; in addition to the re-execution of the earlier test cases, to test the software stability after enhancements (Catal & Mishra, 2013). Testing the behavior of the whole system under test (SUT) before release and after each modification is called regression testing (Leung & White, 1989; Rosero, Gómez, & Rodríguez, 2016). The cost of regression testing increases over time due to the increase in the test suite size. So, it is important to find the smallest representative subset of the test suite without compromising the fault-detection capability of the original test suite (Gotlieb & Marijan, 2014; Nadeem & Awais, 2006). This problem is known as test suite reduction problem (TSR). One way to assess the capabilities of the reduced test suite, in discovering bugs, is through the utilization of a fault-based testing technique called mutation testing. Mutation testing calculates a score for the test suite which indicates its capabilities on discovering bugs in the SUT (Jia & Harman, 2010). The TSR problem is known to be a combinational optimization problem that can be described as a set covering problem which is known to be NP-complete (Gary & Johnson, 1979). In practice, there is no efficient solution for NP-complete problems. However, suboptimal solutions could be found using search-based optimization (SBO) algorithms (Chen & Lau, 1998). Bat algorithm (BA) is a recent and efficient SBO algorithm, which mimics the echolocation behavior of bats to find a global optimal solution (Yang, 2010). The performance of the BA was reported in the literature to be superior to other SBO algorithms such as the particle swarm optimization (PSO) (Eberhart & Kennedy, 1995; A Hamdy & Mohamed, 2019) and Genetic algorithms (GA) (Abeer Hamdy, 2014), over the majority of benchmark functions and real applications.