I was asked this question in an interview recently. Just wanted to see what your opinions were on this...

  • @Vinod : Completely agreed with you. Both regression testing and re-testing are totally different terminology. Retesting is somewhat planned while regression testing is a generic testing. Regression testing is carried out as soon as there is a change in the applications to check whether the code changed has affected already working modules or not. Commented Aug 30, 2013 at 10:45

14 Answers 14


Regression testing is specifically looking for bugs in functionality that was previously working and has "regressed" to a non-working state. I've never heard "retesting" used except in a common-sense way: Retesting is simply testing something again after it has been previously tested, and is a more general term since retesting doesn't say anything about the state of the software before retesting.

You can retest functionality that has never worked by running tests on it again, but you can't regression test functionality that has never worked properly because only functionality that has worked previously can "regress" to a non-working state.


These definitions will vary from one organization to the next. In the testing jobs I've had, regression testing has meant testing that verifies that features that used to work still work. In that context, a regression is a bug that did not exist in an earlier version of the product. In the testing jobs I've had, regression testing occurs after all new features have been tested, although the timing of regression testing is not essential to its definition.

Re-testing is what it sounds like: testing something again. You could say that regression testing is re-testing with a particular goal (looking for bugs in things that used to work) in the specific context (in a product for which an earlier version exists).


Regression testing is testing if the existing functionality is not broken due to the implementation of new features. For example I would like to test if the existing security of the facebook application is not broken by the implementation of its new feature "X".

Re-testing is the testing done by the tester to check if the application works properly after a bug is fixed. The application should be re-tested after the issues are fixed or got resolved in the later builds.

  • 3
    I think this is a prime example of how the definitions in place in one area/workplace are different from another area/workplace. Neither is wrong, but some will call it different things. That makes it especially difficult during an interview, because you're essentially guessing at what THEY call things.
    – corsiKa
    Commented Jun 21, 2011 at 22:48
  • The meaning of these terminologies don't change. Their interpretation could be slightly different in different workplaces but that shouldn't change what they are supposed to mean. This concept of "overloaded terminology" has been discussed in sqa.stackexchange.com/questions/762/…
    – Aruna
    Commented Jun 21, 2011 at 23:22
  • I am not telling there is a standard well-established definition per se. Regression testing is a widely used term. If you google the term, you will get several definitions. In a company if I tell that these are regression related bugs and these are non-regression related bugs, I hope that people can figure out what I mean. These words have not been invented by us but is a part of the existing vocabulary. There could be several ways of using these terms but that doesn't change it's meaning. If the meaning of the terms are changed in different workplaces it can lead to confusions.
    – Aruna
    Commented Jun 22, 2011 at 6:43

Retesting is basically to execute the test cases which failed in last build. So in other words, Retesting is verifying the fix ONLY.

Regress means to go back to some last unstable or less developed state. When a CHANGE is made in a piece of software then we test the application to see what effect that CHANGE has brought in application. First we verify the fix, then see what areas this change has effected and test to see if that area is working fine i.e. there are no ripples.

Similarly, when a change is made in application then we have to update our test cases for regression testing: 1: Add test cases in test suite to verify the new functionality 2: Remove obsolete test cases which are no longer needed (some old functionality might be longer available after change in code) 3: Update currently existing to accommodate changed code. For instance, change in code might require some tweaking in steps of already existing test cases


Re-testing is just testing the bug fix and regression testing is something when a bug is fixed it doesn't affect the other functionalities in the application.When regression testing is done its like testing the whole application.


Re-testing is just testing whether the bug is fixed or not. Regression means after the bug fixing test the other areas also to see the impact of the change.

  • 1
    Welcome to SQA! How does your answer differ from likitha's answer?
    – dzieciou
    Commented Aug 30, 2013 at 19:13

Retesting: Retesting is the process in which tester verify that defect reported by him is fixed by the development team or not.

Regression Testing: Regression Testing is the process in which tester verify that when the defect is fix by the developer by some code change ,then this code change does not impact the other functionality of the product.


Regression testing - Regression testing is always done to verify that modified code does not break the existing functionality of the application and works within the requirements of the system.

Retesting - The tester re tests the application which was earlier reported as a bug and now fixed by the developer. This bug can be due to functionality issues as well as design issues. Retesting the functionality of a button which was previously not working or testing the alignment issues of a page etc can be listed as examples for retesting.

Example - we have an image uploading field which supports only certain image formats say JPG, PNG etc. Suppose one of the images formats failed (say JPG) and the developer fixed it. Testing the functionality, after fixing this bug is retesting. Here, testing and ensuring whether this new change (fixes) has not altered the working of other fields on that page is regression testing.


Re-testing is used when you test something again - usually because there was a bug, so you have to re-test it again to check if the bug is fixed. Term is general.

Regression testing is used when you check whole application again in order to find a new bug in places or Test Cases you previously passed OK.


I like referring to ISTQB Glossary of Testing Terms :) Just because it allows to refer to already prepared definitions.


Please see the below comments it will useful to know difference between regression and retest

Regression Vs Retest

  • I down voted this because this list from an unknown source is filled with many incorrect assertions. Commented Mar 30, 2014 at 1:18
  • This list appears to be directly taken from other sources without attribution, as well as having a lot of incorrect information.
    – Kate Paulk
    Commented Mar 31, 2014 at 11:14

This is the most frequently asked question by many interviewers. In addition to above answers you can better explain by providing a relevant example that differentiates both terms. For an eg., Say if i'm testing any shopping channel or An order & inventory system based application & after testing most of the relevant modules of orders,customers & products,

  1. I found quantity(stock) shown after product being added is incorrect.Now in such case Once developer resolve the issue i need to retest it whether it saves the product with correct stock or not.
  2. Since products module is connected with orders, i need to check that the same added product has been reflected to the inventory list with same stock or not while making an order. This can be termed as regression testing as it affects to other modules also due to the change in inventory.

Retesting: we execute the one test case on bug fix to make sure that bug is resolved

regression testing: we re execute all or group of test cases on the application after many bug fixes

  • 1
    He got the answer. Your answer does not provide something new :)
    – amazpyel
    Commented Mar 27, 2014 at 16:11

Here is your answer just check out : Re-Testing: After a defect is detected and fixed, the software should be retested to confirm that the original defect has been successfully removed. This is called Confirmation Testing or Re-Testing

Regression testing: Testing your software application when it undergoes a code change to ensure that the new code has not affected other parts of the software.

  • You should not quote without attribution. Please give your sources and explain how this answer improves on the accepted answer.
    – Kate Paulk
    Commented Sep 2, 2016 at 12:16

Not the answer you're looking for? Browse other questions tagged or ask your own question.