In quality assurance, these bugs are called software regression, defects that appear on the development path and can stop your entire software solution or its individual features from working as intended.

What Is Regression Testing?

Regression Testing is a type of testing that is done to verify that a code change in the software does not impact the existing functionality of the product. This is to make sure the product works fine with new functionality, bug fixes or any change in the existing feature. Previously executed test cases are re-executed in order to verify the impact of change.

Regression Testing Techniques

Retest all involves rerunning all of your existing tests on the new codebase, retesting your entire software solution to reveal the regressions. This technique is used when the software undergoes significant functional and non-functional changes. QA teams usually perform it at the final stages of product delivery or before major releases. This practice is most suitable for small and very well designed projects while in a large project it can be very lengthy and resource-intensive. It is also quite infeasible and time-consuming to perform such a massive total of tests manually, thus, this technique usually implies automated testing using various tools and test-driven development practices.

Regression Test selection is a less resource-intensive alternative to retest all. It takes a good strategy and a risk-based approach to perform regression test selection and yield good results. Using this technique, the QA team doesn’t write a whole new regression test suite but rather revises all the existing test suites. The team takes the affected by recent changes part of code and selects the most relevant test cases that have repeatedly found bugs. This technique takes a lot less time and effort to perform, can be effectively performed manually and helps the QA team discard obsolete test cases, which makes it a great choice for iterative development.

Test Case Prioritization is a technique that focuses on scheduling a limited set of test cases in a way that the test cases deemed most critical are executed ahead of the ones that have a smaller impact. It is used to increase a test suite’s rate of fault detection. There are two types of 

Test Case Prioritization: general prioritization (targets all subsequent versions) and version-specific prioritization (targets a particular version).

The Hybrid Technique is a combination of regression test selection and test case prioritization. Using this technique, QA teams first rerun the test cases of highest priority and then run all the remaining tests from the selected part of the test suite to make sure no obscure bug makes it through in-between versions.

Perform Regression Testing

The most common reason to run regression tests is the introduction of new functionality. It is hard for developers to follow every thread in the code when modifying it, and there’s always a risk of compatibility issues with the existing code. Regression testing can save developers a lot of time with timely detection of bugs that would otherwise cause the project a lot of pain in the long run. 

Therefore, if testing can be done manually then Regression Testing can be too. The use of a tool is not necessary. However, as time goes on applications get piled on with more and more functionality which keeps increasing the scope of regression.

Advantages

  1. It improves the quality of the Product.
  2. It ensures that any bug fix or enhancement that is done does not impact the existing functionality of the Product.
  3. Automation tools can be used for this testing.
  4. It makes sure that issues that are already fixed do not occur again.

Disadvantages

  1. It has to be done for a small change in the code as well because even a small change in the code can create issues in the existing functionality.
  2. If automation is not used in the Project for this testing, it will be a time consuming and tedious task to execute the test cases again and again.