What is the difference between Regression Testing Vs Retesting

Difference between Regression Testing and Retesting

Regression testing is a type of software testing that verifies that software that was previously developed and tested still performs correctly after it was changed or interfaced with other software. Changes may include software enhancements, patches, configuration changes, etc.(courtesy wikipedia)

Retesting is done to make sure that the scenarios that failed in last execution are passing after the defects against those failures are fixed.

Re-testing - Testing the fixed defect:
In this case, you should make sure that the defect is fixed and you are not able to login to the application when trying with incorrect user name and correct password.
Regression testing - Testing for side-effects:
Because of the code changes made for fixing the defect, there may be chances of other test cases in this module failing. So you should be testing the remaining test cases (1, 3 and 4) again to make sure that there are no side-effects due to the fixed defect.

Retesting: Suppose you have reported a bug in the software...it goes to the developers..they fix it...it comes back to you...this is retesting.
In this scenario you will just RE- TEST the same defect you reported earlier..if it is fixed then you close the defect and if it is not...then re- open and assign it to the developer again.

Regression Testing: Now suppose that the defect as mentioned above comes to you after the developer has fixed it....this time...instead of JUST testing and verifying that the defect is fixed or not....you start looking for issues which might have come up due to the code changes done to fix this defect...like checking the related or dependent modules or features. This is called REGRESSION TESTING.

Here you don't limit yourself to test and close the bug you reported....but broaden your scope and look for what might have been broken while fixing this bug by the developers !!!

assume that your entire application has only 4 features. You tested the application and found that feature A, B and D are working fine but there is a bug in feature C.

You report the bug and next day the bug got fixed. In this situation – you have to essentially do 2 things.

  1. Check that feature C is now working fine. You will do that by rerunning the same test again where you found the bug. This is called Retest
  2. But, since you are a good tester – you also would want to make sure that the featured A,B and D are ‘still’ working fine after the changes have been made. So you will run the previously passed test cases (or at least a subset of them) also. It is called Regression

Also – regression testing is done when a new feature E is added to the application just to make sure that other features are still working.