Regression testing is the testing of the existing functionality of the product to ensure that it is working fine with the new changes going into the system. A software product goes through several enhancements and modifications. After the base version, there can be some bugs or issues which come up while working on the product. Or the business may want to add new features to the functionalities. Hence, these changes into the product come as new builds or releases.
With these new changes getting into the product, the QA team should verify that the original functionality of the product works as expected and no new defects are introduced into it. Therefore, they do regression testing to ensure that the existing functionality is working properly with new changes into the system.
Regression testing is the testing of a previously tested component or system following modification to ensure that defects have not been introduced or have been uncovered in unchanged areas of the software, as a result of the changes made.
Why do Regression Testing
When there are new code changes in a working system in the form of a build or release, regression testing should be done. A working software system needs maintenance and modification as per the business needs. Also, there can be bugs or issues or change requests which call for the changes into some of the modules. After unit and integration testing the code changes, testers perform regression testing to
- ensure that the existing functionality is working fine
- ensure no new bugs or defects got introduced due to new code changes
When to do Regression Testing
We need to perform regression testing when
- When there is an enhancement to the product
- When there is any change in the product
- Bug fixes
How to do Regression Testing
Regression testing is planned with well-defined phases
- Unit Testing and Integration Testing of the new changed modules
- Regression Test suite
- Testing environment
- Bug tracking tool
QA testers develop the regression test suite, the first time they are doing the testing. Thereafter, with minor modifications, the same test suite serves for the forthcoming releases.
- Business and Functional Requirement analysis
- Test plan development
- Test case development
- Environment setup for the testing
- Test data setup
- Decide exit criteria
- Execute the test cases
- Register the test results and decide on pass and failure
- Report the Bugs in the bug reporting tool
- Reverify the bug fixes
- Test report preparation
- Evaluation of exit criteria
- Test phase closure
How to select Regression Test cases
The test cases in the regression test suite should be able to verify the current functionality of the product properly. Following points are of consideration while selecting test cases for regression suite
- Test cases to verify the product’s functionality effectively
- High priority test cases
- High-risk areas of the product which have frequent defects
- Functionalities with recent changes in the past
- Test cases covering complex areas of the product
- Functionalities with current changes
- All boundary value conditions
Tools for regression testing
Most of the regression test cases are repetitive in nature that is we are repeated every time regression testing is done. Hence, automation is the perfectly suitable solution to save time and effort of regression testing. There are several tools available in the market which help with automation of regression test suites.
- HP QTP(UFT): It is HP licensed tool which can automate functional and regression testing of web and desktop applications both.
- TestComplete: It is an open test platform that helps create automated tests across desktop, web, mobile, and multiple devices easily and effectively.
- Robotium: It is a famous automation testing framework for Android. It works on native and hybrid applications and helps writing automated functional test cases.
Advantages of Regression Testing
- Regression testing ensures that no new defects are getting into the system due to new changes.
- Due to the repetitive nature of testing, it is good to automate the regression test suite.
- Automation helps to speed up the regression testing process and testers can verify the system easily.
Challenges of regression testing
Although regression testing offers several advantages, there are challenges in implementing it at various levels:
- If the product has frequent changes, regression testing has to be done again and again. Thereby escalating the cost of it significantly.
- Most of the test cases are repetitive so automation can be done to save on time and effort on manual testing. Implementing automation for regression has its own cost involved.
- With time, regression test suites become quite huge and it becomes practically difficult to cover all the scenarios. Hence, then test cases selection strategy is crucial to get the best testing outcome in the least efforts.
Re-testing versus Regression testing
Retesting and regression testing are confusing terms in the software testing world. But both actually refer to two different types of testing. When a defect is found during any type of testing, it requires code changes or any other change to fix it. Re-testing is the verification of whether or not the defect is fixed with the code changes. Thus, retesting is the term used for the testing to ensure that bugs and issues are fixed with the code changes. Whereas, regression testing is the testing of the existing functionality of the product after some change is made to the product.
To summarise, regression testing ensures no new bugs or defects are getting into the system with the updates. As the same test suite is used for the builds, the testing is easy to implement and execute. Regression testing is an end to end system testing. It is also wise to automate the regression testing which can considerably reduce the time and effort for it.