Regression Testing is the process of testing the modified parts of the code and the parts that might get affected due to the modifications to ensure that no new errors have been introduced in the software after the modifications have been made. Regression means return of something and in the software field, it refers to the return of a bug.
When to do regression testing?
- When a new functionality is added to the system and the code has been modified to absorb and integrate that functionality with the existing code.
- When some defect has been identified in the software and the code is debugged to fix it.
- When the code is modified to optimize its working.
Process of Regression testing:
Firstly, whenever we make some changes to the source code for any reasons like adding new functionality, optimization, etc. then our program when executed fails in the previously designed test suite for obvious reasons. After the failure, the source code is debugged in order to identify the bugs in the program. After identification of the bugs in the source code, appropriate modifications are made. Then appropriate test cases are selected from the already existing test suite which covers all the modified and affected parts of the source code. We can add new test cases if required. In the end regression testing is performed using the selected test cases.
Techniques for the selection of Test cases for Regression Testing:
- Select all test cases: In this technique, all the test cases are selected from the already existing test suite. It is the most simple and safest technique but not much efficient.
- Select test cases randomly: In this technique, test cases are selected randomly from the existing test-suite but it is only useful if all the test cases are equally good in their fault detection capability which is very rare. Hence, it is not used in most of the cases.
- Select modification traversing test cases: In this technique, only those test cases are selected which covers and tests the modified portions of the source code the parts which are affected by these modifications.
- Select higher priority test cases: In this technique, priority codes are assigned to each test case of the test suite based upon their bug detection capability, customer requirements, etc. After assigning the priority codes, test cases with highest priorities are selected for the process of regression testing.
Test case with highest priority has highest rank. For example, test case with priority code 2 is less important than test case with priority code 1.
Tools for regression testing: In regression testing, we generally select the test cases form the existing test suite itself and hence, we need not to compute their expected output and it can be easily automated due to this reason. Automating the process of regression testing will be very much effective and time saving.
Most commonly used tools for regression testing are:
- WATIR (Web Application Testing In Ruby)
- QTP (Quick Test Professional)
- RFT (Rational Functional Tester)
Advantages of Regression Testing:
- It ensures that no new bugs has been introduced after adding new functionalities to the system.
- As most of the test cases used in Regression Testing are selected from the existing test suite and we already know their expected outputs. Hence, it can be easily automated by the automated tools.
- It helps to maintain the quality of the source code.
Disadvantages of Regression Testing:
- It can be time and resource consuming if automated tools are not used.
- It is required even after very small changes in the code.
- Software Engineering | Comparison between Regression Testing and Re-Testing
- Software Engineering | Differences between Sanity Testing and Smoke Testing
- Software Engineering | White box Testing
- Software Engineering | Black box testing
- Software Engineering | Program Testing
- Software Engineering | Automated Testing
- Software Engineering | Integration Testing
- Software Engineering | Statistical Testing
- Software Engineering | Testing Guidelines
- Software Engineering | Cleanroom Testing
- Software Engineering | Differences between Manual and Automation Testing
- Software Engineering | Seven Principles of software testing
- Software Engineering | Requirements Engineering Process
- Software Testing | Use Case Testing
- Software Testing | Non-functional Testing
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.