Loading

Regression Testing


What is Regression Testing?

regression meaning


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

regression meaning

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.

What is Regression Testing with Example?

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.

Regression Testing Example

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

regression testing example

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.

Steps 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.”

Are Regression Testing and Retesting 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 and retesting" to find out the exact differences between these two.

Types of Regression Testing

  1. Functional Regression Testing/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 Regression Testing/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 Tests.
  • Complete Regression Tests.

How to do 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 "regression test suite" would require large amount of time, money and resources.
  2. Retesting test suite

  3. 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

  4. 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.


ThinkSys Advertisement


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.


regression testing infographics


“Regression testing is just not a testing technique but an inherited and integrated part of the software 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 some more regression testing related articles here; "smoke testing vs regression testing" , "development testing vs regression testing" and "functional testing vs regression testing", "Regression Test Selection".


ThinkSys Advertisement
ThinkSys Advertisement



Get New Content Update
Popular Posts
Dec 07, 2020
Dec 07, 2020
Dec 07, 2020

Advertisement:

ThinkSys Advertisement


LP

App development ad thinksys

Devops