An Optimal Hybrid Regression Testing Approach Based on Code Path Pruning

An Optimal Hybrid Regression Testing Approach Based on Code Path Pruning

Varun Gupta (Amity University, India)
Copyright: © 2018 |Pages: 22
DOI: 10.4018/978-1-5225-5951-1.ch013


Hybrid regression testing approaches involve the combinations of test suite selections, prioritizations, and minimizations. The hybrid approaches must reduce size of test suite to minimal level and enhance fault detection rate. The chapter proposes a new hybrid regression testing approach that reduces the number of test cases by reducing the paths of source code on the basis of the dependency between the statements and the changes. The proposed technique is evaluated to be better than the existing hybrid approach in terms of percentage savings in test cases and fault detection rate.
Chapter Preview

1. Introduction

Regression testing is aimed at the execution of new versions of software, in order to find errors in newly added or modified parts of software and also to ensure that no new errors have been introduced in previously tested code. Software testers execute software against the test cases and match the output obtained with the expected outcome. The number of test cases could be so large that the testing activity may take very long time and effort, making this task itself infeasible. Also, due to the limited resources available, it is not feasible to execute all the test cases. The tester must select most influential test cases which are representatives of all the errors in the software.

In software industry, various approaches are adopted to conduct regression testing, such as test cases selection, prioritization and minimization. Selections results in reduction in size of test suites by selecting test cases that executes the modified parts of the code (S. Biswas, R. M., M. Satpathy & S. Sukumaran, 2011). Thus, regression testing by test cases selection is a modification aware testing that selects only those test cases that are associated with changed parts (Yoo & Harman, 2007). Regression prioritization creates the order of test cases being arranged in order of decreasing priorities, while minimization deletes non-influential test cases from larger test case array. Research had shown that the test case prioritizations also improves fault detection rate. Rothermel et al., (1999) had measured efficiency of nine test case prioritization techniques in terms of fault detection rate. As fault detection metric, average of the percentage of faults detected (APFD) was employed. Value of APFD was found high for every prioritization technique although relative APFD for various techniques varied.

In recent years, hybrid approaches (Aggarwal, Singh & Kaur, 2004; Gupta & Chauhan 2011a), with a combination of selection and prioritization methods have been proposed. Selected test cases are prioritized and executed for testing purpose. Aggarwal, Singh and Kaur (2004) presented hybrid regression testing approach which prioritizes test cases on the basis of number of lines of code covered by each test case. Authors have hypothesized that; larger the coverage of test case, greater is its priority. Process of prioritization continues until all lines of code are covered by selected test cases. The work was extended by Malhotra, Kaur and Singh (2010). Proposed technique selected test cases from test suite containing prioritized test cases. Selected test cases were further prioritized. According to the authors, test case of higher priority is used first till resources are available or confidence about correctness is build up to a considerable good extend.

Singh, Kaur and Suri (2010) presented hybrid regression testing technique that employs various levels of selections and prioritization. This technique first selects the test cases that execute the changed variables or variables computed from these changed variables. Prioritization is again performed depending on the value of dependency count of variables.

All these techniques suffer from several drawbacks like non-coverage of unaffected parts and incomplete handling of control dependencies. Further, the techniques have not been tested on complex live system with larger data set of test cases.

Path pruning can be used as one of the steps toward reducing test suite size. Path pruning involves identifying the path that involves statements containing variables that are directly or indirectly influenced by the evolution of software and thus ignoring the path not involving such variables. This leads to the rejection of test cases associated with the ignored paths. Heuristics can be applied on test cases identified for pruned paths by considering some parameters like number of times the statement is used. Further improvements in terms of reduction in testing efforts can be attributable to parallelization of testing technique.

Complete Chapter List

Search this Book: