Problem – How does regression testing differ from retesting?
Solution – We define regression testing, highlighting its importance and the challenges that follow regression testing. Best practices are also included, bringing attention to the difference between regression testing and retesting.
Read Time – 5 Minutes
Regression testing refers to the process of testing a changed or updated computer program to make sure the older software features – which were previously developed and tested – still perform as intended. One way to think about software regression is to think about somebody who implements a new air conditioning system in their home only to find that while their new air conditioning system works as expected, the lights no longer work.
Regression testing will often involve running existing tests against the modified code to make sure that the new code did not break anything that worked before the update. Regression testing can eliminate much of the risk associated with software updates. In addition to running existing tests, testers might tweak existing tests by introducing different secondary conditions as variables.
The Importance of Regression Testing
With the increased popularity of the Agile development methodology, regression testing has taken on added importance. Many companies today adopt an iterative, Agile approach to software development. For example, the great many software as a service (SaaS) providers will regularly update their features or add new functionality to their offerings with each software update. To ensure their core product remains unaffected by new feature additions, these companies will perform regression testing.
The Challenges of Regression Testing
While regression testing is a vital element of the QA process, there are a number of challenges it brings.
- Time Consuming: Regression testing can take a lot of time to complete. Regression testing often involves running existing tests again so testers might not be overly enthused at having to re-run tests.
- Complex: Another thing to consider here is that as products get updated, they can grow quite complex, causing the lists of tests in your regression pack to grow to a huge amount.
- Communicating Business Value: Regression testing ensures existing product features are still in working order. Communicating the value of regression testing to non-technical leaders within your business can be a difficult task. Executives want to see the product move forward and making a considerable time investment in regression testing to ensure existing functionality is working can be a hard sell.
Regression Testing Best Practices:
As you and your team perform regression testing, there are some best practices to bear in mind.
- Regularly Update Your Regression Pack: A regression pack is a collection of test cases that are performed as each new software update is completed. The scripted tests included in a regression pack are created with the requirement specifications of older versions of the software in mind. Random or ad-hoc tests may also be included in the pack. It is a good idea to keep your regression pack up to date. Regression testing can be time-consuming, the last thing you need is to include tests that check whether an older feature which has been removed is still working.
- Focus on Highly-Trafficked Paths: Highly-trafficked paths are the most frequent use cases for your application. They will include the basic functionality of your application and most popular features. You should know your core group of users and the typical features and interactions they are most reliant on. Your regression pack must include tests that ensure this core functionality is working as it should.
- Re-Run Successful Test Cases: Tests that have previously identified bugs and defects are also worth including in your regression pack. Alternatively, tests that the program passes consistently are good candidates for archival.
What is the Difference Between Regression Testing and Retesting?
Regression testing should not be confused with retesting. Regression testing is performed to ensure updated code has not caused any existing functionality to break. Retesting, on the other hand, refers to tests that are performed when a test case has identified some defects. Once the defects have been fixed, the tests are performed again to ensure the issues have been resolved.
Retesting is a higher priority than regression testing because issues have already been identified. Regression testing is focused on identifying potential issues.