Loading

Regression Testing


What does the term Regression defines?

regression meaning


"Regression defines the act of returning to a former or a previously existed state."

regression meaning

What is Regression Testing?

Regression Testing: A variant of software testing that seeks to detect and unravel new software bugs or issues in existing functional and non-functional areas of a system in the event of upgrade, patches, configuration changes and any minor or major change(s) introduced in the system during bug-fixation. Basically, regression tests are being executed after each modification or change brought into software application to ensure that these new changes have no side-effects or impact on the existing older & core functionalities.

regression meaning

The scope of regression testing depends upon the amount of change introduced in the code. If the change is small, a set of minimal test cases would be sufficient to perform regression tests whereas for the large amount of change, selective test cases based on the developer's input in respect to modification done may prove to be time and money saving solution.

Regression Testing Necessity

Many a times, while upgrading an operating system, a software regression can wreck havoc with its intended functioning. A software regression is a software bug which makes a feature stop functioning according to its targeted utility due to minor or major configuration changes such as a system patch.

This is often caused by encompassed bug fixes included in the system patch itself. A properly designed test plan can prevent this possibility before releasing any software. This is where Regression testing as a viable solution comes into picture and the beauty of it is that it can be done manually or in an automated manner.

Below, given figure or example clearly defines the necessity and working of the regression testing.

regression testing necessity

We have a software application with functionality:A+B. On testing the application, a bug gets identified and detected. Patches & bug-fixation process including changes in the code is being carried out to remove or resolve the identified bug. However, in the process of bug-removal, the existing functionality of the application also gets affected:B-A. Thus, regression testing is carried out to evaluate whether existing functionalities has been impaired or not along with the occurrence of any new bug or issue in the event of changes and bug-fixation.

Further, we can also see that during upgrade or addition of new feature; C, the existing functionalities of the application; A+B has been impacted with the change in the functionality; A*B. Here, also regression tests are executed over software application to find out whether existing functionalities has been affected or not.

When to Perform Regression Testing?

Regression tests are frequently executed throughout the software testing life cycle at each different level; unit, integration, system and acceptance. However, it is recommended to perform regression testing on the occurrence of following events:

  • After the fixation of identified and detected bug(s).
  • Modification of code based on needs and requirements.
  • Addition of any new feature and functionality or upgrade.
  • Patches and changes in configuration.

How to Conduct Regression Testing?

A basic approach to carry out regression testing comprises of following actions:

  • Re-execution of already conducted tests.
  • Comparison of older test and fresh test results.

“It is pertinent to mention here that no new test cases are designed for the purpose of regression testing instead already existing & executed test cases are brought into use to perform the task of regression testing.”

So, Regression Testing and Re-testing are similar terms?

No, regression testing and re-testing are not similar testing methodologies. They are quite different to each other. In fact, regression testing is much more than the re-testing. Regression testing ensures no side effects to the application in the event of bug fixation or any major and minor changes whereas re-testing is performed to ensure that all the previously identified and detected have been fixed or resolved. Read our article regression testing vs. retesting to find out the exact differences between these two.

Types of Regression Tests:

1. Functional Tests

These tests exercise the complete program with various inputs. The test may be a scripted series of program inputs, possibly even involving an automated mechanism for controlling mouse movements and clicks.

2. Unit Tests

They exercise individual functions, subroutines, or object methods. The test may be a set of separate functions within the code itself or a driver layer that links to the code without altering the code being tested.


Apart from the functional and unit tests, regression tests may be sub-categorized into two more types as detailed below:

  • Partial Regression
  • Complete Regression

Techniques to perform Regression Testing:

Regression testing may be performed, using following approaches:

1. Strategy of Re-testing all

This approach simply involves the re-execution of all the existing and available test cases or suites. But, it is pertinent to mention that considering & executing the whole test suite would require large amount of time, money and resources.

Retesting complete suite

2. Selective Test Cases

Re-testing all the test cases, may not seems to be feasible. An alternative approach, may be the selection of limited number of test cases, based on the needs and requirements. Further, this selection, may further be considered under two categories

  • Re-usable test cases
  • Obsolete test cases

Retesting complete suite

3. Test Cases Prioritization

Priority wise execution of the test cases based on the business requirements, essential and often used functionalities significantly reduces the regression test suite. Read more about the prioritization of test case in our article test prioritization.

Regression Test Plan:

The plan of attack employs a Triangular approach pinpointing the areas of focus, priority and strategy for test execution. The chief inputs come from the client and the lead developer. The client highlights the features most visible and critical to the benefit of the end user. The lead developer informs about the areas of application most impacted by the code changes.

Regression Testing Tools:

As the process of regression is all about repeatedly testing the original functionality of the software product after each modification/enhancement in the code, automation of regression tests is preferable to ease the task of testing. Below given, are some of the well known testing tools, with the help of which regression testing may be performed in an effortless manner.

  • QTP
  • Winrunner
  • SilkTest
  • Watir
  • Selenium
  • Rational Functional Tester
  • Regression Tester
  • AdventNet QEngine
  • actiWate
“Regression testing is just not a testing technique but an inherited and integrated part of the testing life cycle which not only validates the veracity of the existing functionalities after each change but also improves the quality of the software application.”

You may also like to visit and read our some more regression testing related articles here; smoke testing vs regression testing , development testing vs regression testing and functional testing vs regression testing.