Article Preview
Top1. Introduction
Increased reuse of software artifacts at different levels of software projects and evolutionary software development have made it necessary to maintain software for increasing return on investment, and so the need of regression testing. No software product can be released without adequate testing. It has been observed that finding bugs after release is hundred times costlier than during development or maintenance phase (Leung & White, 1989). Effective software testing approaches are always required as testing of software becomes very expensive with software evolution.
Regression testing is one such activity that ensures the absence of any adverse effect of modifications performed on the previously working version of software (Reid, 2005). Re-execution of complete test suite is however simplest but costliest approach to ensure software quality. Hence, optimizing testing effort is necessary and various techniques have been proposed to achieve this. Previous literatures revealed that test effort might be reduced by selecting test cases that demonstrate a better fault revealing ability from the existing test suite (Gregg Rothermel & Harrold, 1997a)(M.J. Harrold & Souffa, 1988)(Binkley, 1997b)(Shin Yoo & Harman, 2007)(Graves, Harrold, Kim, Porters, et al., 2001) (Xu et al., n.d.)(Mirarab et al., 2012)(Loiola & Maia, 2009). Regression test case selection (RTS) techniques attempt to find some test cases from previously executed test suite for software under test (SUT) that maximize fault detection ability while minimizing cost. Selection of test cases therefore becomes a challenging task and helps in maintaining cost effectiveness during regression testing (Kazmi et al., 2017). However identification of modification traversing test cases itself is a challenging task. Test case prioritization and test suite minimization are other two approaches for test suite optimization (S Yoo & Harman, 2007). These approaches have their own limitations such as prioritization techniques don’t reduce the test suite to re-execute and minimization techniques permanently remove test cases from test suite that makes it unusable for previous releases.
We confront a number of optimization problems in every walk of our life from morning till evening so principle of optimality is natural for us as human beings (Smith & Kapfhammer, 2009). Optimization is nothing but finding an equilibrium between goals and constraints as we always want to minimize cost and maximize benefit (Rao & Kumar, 2015). Search based software testing is an area of research that applies artificial intelligence techniques to solve such complex testing problems by formulating them as search problem (Li et al., 2007). Humans are trying to learn from natural phenomena to solve these problems and are exploring nature inspired algorithms since last three and a half decades. Literature reveals that metaheuristic algorithms have shown a greater impact in optimizing testing effort and have been utilized to optimize various testing techniques successfully (Girgis, 2005)(Mann et al., 2018).