Regression Testing:
Software regression is any unwanted change that happens after changes are made to the system. Now the system change can have some software code that is changed in order to implement new feature or to fix certain defects. This decay in the software can be either functional or non-functional.
Regression means the errors that occur due to some action or activities in a system. It is the process of confirming the existing behavior of an application under test while keeping in view the baseline requirements and making sure that the new change to the system has not broken any existing functionality.
In a much simpler terms it can be defined as the addition of a new module as a part of integration testing which might cause problems with the functions that previously worked flawlessly. Hence regression testing is the re-execution of some subset of test cases that have already been conducted to ensure that changes or additions do not create new side effects.
How is it done?
Regression testing can be done either manually or through automating the AUT (Application under test). Automating an application is done by means of some capture/playback tools which enables the software engineer to capture the test cases and their results for subsequent playback and comparisons.
Post release, a software is maintained by developers which involves modifications to code in use, adding new code or deleting existing code. These changes are done based on the change requests by end users and then after the modified software is validated to detect whether any new errors have been introduced into the previously tested software code just to ensure that the modifications are correct.
When is Regression Testing Required?
- It is required when there is a change in requirements and code is modified according to the requirements.
- Whenever a new feature is added to the software.
- It’s required while defect is fixed.
- It’s required while performance issues are fixed.
Regression Techniques:
- Reset all
Need to examine the functionality of all the modules and then retest all those test cases.
- Regression test selection
Need to focus on the functionality that is most likely to get affected by the newly integrated modules.
- Prioritization of test cases
Test only those software components that have changed.
Challenges of Regression Testing:
Though regression testing plays a major role in software testing life cycle, here below are some of its key challenging areas.
- It’s a time consuming process as it involves the process of repeating the same tests again and again which can take a lot of time to complete.
- When the product scope frequently gets updated/ changes are made quite often can increase the complexity causing the list of tests in regression pack to grow to a huge amount.
- It can be a huge challenge while communicating the business value of regression testing to the core business team while making considerable amount of time spent on regression testing to make sure that the existing functionality still works as expected.