Regression testing vs. Retesting?

Is there a difference at all? Is regression testing a subset of re-testing? Quite a few times, testing teams use these two terms interchangeably. However, there is a vast difference between these two types of testing. Let us have a look –

Regression Testing

Definition:

Regression testing is a type of software testing which is carried out to ensure that the defect fixes or enhancements to the application have not affected the other parts of the application.

Purpose:

The purpose of regression testing is to ensure that the new code changes do not adversely affect the existing functionalities of the application.

When:

Regression testing is carried out in one or any of the following circumstances:

Whenever there is a modification in the code based on the change in requirements.

A new feature is added to the application.

Defects are fixed in the application.

Major performance issues are fixed in the application.

Regression testing can be carried out in parallel with re-testing. It is, in many cases, seen as generic testing.

Testing Techniques:

Regression Testing can be carried out with one of the following four techniques-

Re-execute all the test cases in the suite. Select a part of the test cases which need to be executed with every regression cycle and execute only those. Based on the business impact, feature criticality, and timelines, select the priority test cases and execute only those. Select a sub-set of test cases based on frequent defects, visible functionality, integration test cases, complexity of test cases, sample of successful and failure test cases and then execute only such sub-set.

Test Cases:

Regression test cases are derived from the functional specifications, user manuals, tutorials, and defect reports related to the fixed defects.

Regression testing can include the test cases which have passed earlier.



Regression testing also checks for unexpected side-effects.

Role of automation:

Automation plays a very crucial role in regression testing because manual testing can be very time consuming and expensive.

Re-testing

Definition:

Retesting is a type of software testing which is carried out to make sure that the tests cases which failed in the previous execution pass after the defects against those failures are fixed.

Purpose:

The purpose of re-testing is to ensure that the previously identified bugs are fixed.

When:

Whenever a defect in the software is fixed, re-testing needs to be carried out. The test cases related to the defect are executed again to confirm that the defect has indeed been fixed. This type of testing is also referred to as confirmation testing.

Re-testing has to be carried out prior to regression testing.

Re-testing is a planned testing.

Testing Techniques:

Re-testing needs to ensure that the testing is executed in the same way as it was done the first time – using the same environment, inputs, and data.

Test Cases:

No separate test cases are prepared for Re-testing. In Re-testing, only the failed test cases are re-executed.

Re-testing does not include the test cases which have passed earlier.



Re-testing only checks for failed test cases and ensures that originally reported defects are corrected.

Role of automation:

There is no way to automate only the re-testing since it depends on the defects found during the initial testing.