I was asked this question in an interview recently. Just wanted to see what your opinions were on this...
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.
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
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.
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,
- 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.
- 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.
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.