Article Preview
Top1. Introduction
Software testing is laborious and costly activity. It claims nearly 50% of the total cost of software projects (Myers, 1979). Automation of software testing processes could reduce the time and cost of development of software (Miller, & Spooner, 1976). Many of the software testing problems require solutions which satisfies conflicting objectives such as minimum set of test data which achieves maximum coverage criteria. Reformulating software engineering tasks as an optimization problem is referred as search based software engineering (Harman, & Jones, 2001).
Bio inspired computational intelligence algorithms are gaining its popularity by the fact that these algorithms performed well on various parameters and give the converged optimized solution. Here it will be worth noting that many conventional methods such as newton’s method or gradient descent method, simplex method requires lot of assumption in order to model the problem and thus unable to model the real world problem correctly and precisely. Linear programming methods are also unable to model the real world problem because many of the real world problems had been proved as a nonlinear problem.
Software Test data generation problem is a non- linear problem, refers to the generation of valid input data that satisfy the certain testing goal. Test data generation problem can be reformulated as an optimization problem where search space is the values of input variables and fitness function is designed for test adequacy criteria such as code coverage. Test suite optimization refers to optimize test data either in structural software testing or in regression testing.
Automatic software testing and test data optimization has been the area of interest in the research community since last four decades. Previously two approaches of the problem emerged. The first one came to be known as symbolic execution (King, 1976) and the second method that reformulated the problem as an optimization problem, which latter known as search based approach (Harman et al., 2003).
There exist various optimization algorithms which are used to optimize software test data. The application of evolutionary algorithms to test data generation is called as evolutionary testing in the literature (Xanthakis et al., 1992). Search based software engineering (Harman et al., 2003) reformulated the software engineering problems as an optimization problem. In this area of research various software metrics are taken as a fitness function. The major area research in SBSE is in the field of software testing.
Test suite optimization is required in various software applications including cloud computing and smart cities. Search based software testing is also used with hadoop for generating test data using genetic algorithm (Geronimo, Ferrucci, Murolo, & Sarro, 2012). Strong mutation testing using hill climbing of C programs yield better performance than random search according to recent paper (Souza, Papadakis, Le Traon, & Delamaro, 2016). Considering the broader aspect of search based software engineering (SBSE), many applications and models have been proposed still enhancement of quality of test cases and measuring the efficiency of test cases is yet to achieve the best results.
The principal reason of such scope of results is due to the presence of different set of constraints during the output phase for different software applications. Evolutionary methods as mentioned earlier could be a major motivation due to its heuristic properties of search towards different test cases.
Firefly algorithms are swarm intelligence based meta-heuristics so it has all the advantages of other swarm algorithms. Firefly algorithms can save around 78% computational cost when compared to Genetic Algorithms and 67% computational cost when compared to PSO (Xin-She Yang, & Xingshi He., 2013). Parameters can be tuned to control the randomness as iteration proceed. This speed up the convergence process.