When I started learning Testing at that time I was often get confused between these two terms Retesting and Regression testing. So many of you who are new or just started their career in testing field may be going through the same situation.in this article I am going to explain these two terms like when to use them and how to use them. You will get all your answer after reading this article. Let’s start with Retesting.
Some of you may get confuse with the name “Retesting”. You may think testing means testing the software first time and Retesting means Testing same Software for second or multiple times. If you think in this way then you are completely Wrong.
So to understand about Retesting let’s consider one scenario. You are working in a company as a Software Test Engineer and you have to test one software so you wrote say 1000 Test Cases and you executed all. Out of 1000 suppose 50 test cases failed (failed means actual output of the software doesn’t matched with expected output). So you will repost 50 bugs to Team Lead and Team Lead verify it and assign that bugs to developer and developer will resolve all the bugs by making some code fixes.
Once the bug is resolved from developers end then that software again comes to you to verify whether developer really fixed those 50 bugs which you have reported. So how will verify that those 50 bugs really solved by developer? Obviously you will execute all those 50 failed test cases again. This is known as retesting. In other word “Retesting means executing those failed test cases again to verify that the bug is really fixed”.
In short, total 1000 test cases. 950 passed test cases and 50 failed test cases in this situation Retesting means testing those 50 failed test cases again.
REGRESSION TESTING :
There are many occasions where we need to use Regression Testing. Basically when any changes are made in the software we need to perform Regression Testing. So there are many types of changes that can be done in software. Let’s consider one by one and how to perform regression testing in that situation.
Scenario one : take above example. You have 1000 cases and you executed all and out of those 50 failed and 950 passed. When developer fixes the code then you perform Retesting on those failed test cases. But what about those passed 950 test cases? We need to execute those again also to check that there is not any bug arises due to code fixes. What developer do when they get a bugs, they make some adjustment in code change some logic and try to fix bugs. But this can cause a bug in other working functionality. Means any passed test cases may fail due to this code fixes so we need to do regression testing to ensure that there is not any impact of code fixing on the software.Overall: we have 1000 test cases, 50 are failed, on failed test cases we perform retesting after bug fixing, and 950 passed test cases we performs regression testing after bug fixes.
Scenario two : when client want to add new functionality to his pre-developed software, at that time new functionality need to be integrated with the software these may cause any bad impact on the software so we need to perform integration testing on overall software.
Scenario three: as we know client may change his requirement at any given point of time. So to satisfy the new changes made client developer has to change their logic and their code. After developer change the code we need to perform regression testing on all previously passed test cases.
Scenario four: when client want to delete any functionality from his software. So accomplish this developer team have to face many changes like in software many modules are interdepended. Means they are interconnected to each other. If any such interconnected module has to be removed from the software then the module which are depended on it may behave unexpectedly.so after removal of particular feature we need to check whether all remaining features are working fine or not.so we perform regression testing on those modules.
In short: we use Regression Testing in following occasions:-
- Bugs Fixes.
- New Functionality addition.
- Any functionality removal.
- Any Requirement changes.
- Performance enhancement.
On all above situations we need to perform integration testing.
In regression testing we know that we executed all passed test cases but do we execute all the pass test cases? well there are many criteria’s which help to decide the test cases means whether we have to execute all the test cases or we are going to execute the test cases which are related to core functionality or a test cases for a particular modules.
“Retesting means checking affected part and Regression Testing means checking unaffected part affected.”