What is Regression testing in software?

When any modification or changes are done to the application or even when any small change is done to the code then it can bring unexpected issues. Along with the new changes it becomes very important to test whether the existing functionality is intact or not. This can be achieved by doing the regression testing.

  • The purpose of the regression testing is to find the bugs which may get introduced accidentally because of the new changes or modification.
  • During confirmation testing the defect got fixed and that part of the application started working as intended. But there might be a possibility that the fix may have introduced or uncovered a different defect elsewhere in the software. The way to detect these ‘unexpected side-effects’ of fixes is to do regression testing.
  • This also ensures that the bugs found earlier are NOT creatable.
  • Usually the regression testing is done by automation tools because in order to fix the defect the same test is carried out again and again and it will be very tedious and time consuming to do it manually.
  • During regression testing the test cases are prioritized depending upon the changes done to the feature or module in the application. The feature or module where the changes or modification is done that entire feature is taken into priority for testing.
  • This testing becomes very important when there are continuous modifications or enhancements done in the application or product. These changes or enhancements should NOT introduce new issues in the existing tested code.
  • This helps in maintaining the quality of the product along with the new changes in the application.

Example:

Let’s assume that there is an application which maintains the details of all the students in school. This application has four buttons Add, Save, Delete and Refresh. All the buttons functionalities are working as expected. Recently a new button ‘Update’ is added in the application. This ‘Update’ button functionality is tested and confirmed that it’s working as expected. But at the same time it becomes very important to know that the introduction of this new button should not impact the other existing buttons functionality. Along with the ‘Update’ button all the other buttons functionality are tested in order to find any new issues in the existing code. This process is known as regression testing.

Types of Regression testing techniques:
We have four types of regression testing techniques. They are as follows:

1) Corrective Regression Testing: Corrective regression testing can be used when there is no change in the specifications and test cases can be reused.

2) Progressive Regression Testing: Progressive regression testing is used when the modifications are done in the specifications and new test cases are designed.

3) Retest-All Strategy: The retest-all strategy is very tedious and time consuming because here we reuse all test which results in the execution of unnecessary test cases. When any small modification or change is done to the application then this strategy is not useful.

4) Selective Strategy: In selective strategy we use a subset of the existing test cases to cut down the retesting effort and cost. If any changes are done to the program entities, e.g. functions, variables etc., then a test unit must be rerun. Here the difficult part is to find out the dependencies between a test case and the program entities it covers.

When to use it:

Regression testing is used when:

  • Any new feature is added
  • Any enhancement is done
  • Any bug is fixed
  • Any performance related issue is fixed

Advantages of Regression testing:

  • It helps us to make sure that any changes like bug fixes or any enhancements to the module or application have not impacted the existing tested code.
  • It ensures that the bugs found earlier are NOT creatable.
  • Regression testing can be done by using the automation tools
  • It helps in improving the quality of the product.

Disadvantages of Regression testing:

  • If regression testing is done without using automated tools then it can be very tedious and time consuming because here we execute the same set of test cases again and again.
  • Regression test is required even when a very small change is done in the code because this small modification can bring unexpected issues in the existing functionality.