Regression testing is a type of software testing which is performed on the previous working functionality, to find out any issues that may have got introduced by newly adding or updating the application code base. i.e. Regression testing ensures any enhancements or bug fixes or new additions in the software code, has not introduced any side effects into the previously working software.
In today’s applications, development team continuously change the code base for adding new features, updating existing features and fixing identified defects. As these code changes are very frequent, the Regression testing needs to be continuously performed to identify any side effects or issues in the previous working functionalities.
Example: Assume that you are testing a login functionality of any web application say facebook.com and you have verified that all the options like Username, Password, and Login Button are working fine. Later when a new change request to add ‘Forgot Password?’ functionality for login has come, the developers have changed the existing code to accommodate this new feature. When the functionality having this new ‘Forgot Password?’ is provided for testing, the testers should verify the working of new ‘Forgot Password?’ functionality and also perform a round of regression testing on the older login functionality having Username, Password and Login options, to check if there are any side effects in the older functionality after the ‘Forgot Password?’ functionality got implemented.
Regression testing is generally needed when the below things are done:
- Addition of new feature
- Enhancement of existing features
- Bug fixes (Functional / Performance Bug fixes)
As these Regression tests need to be repeated multiple times on each and every code change, it consumes lots of time and resource count for testing. As a result, the testers end up in performing regression testing through the day, instead of testing the working of newly introduced functionalities in the application. To overcome this problem, regression tests need to be automated using any automated testing tools like UFT or Selenium.
If a huge list of regression tests are required to be executed, we can prioritize the important tests and execute them based on Risk-based approach. Instead of re-executing the entire test suite, it’s better to select the test cases for regression testing from the day one of the projects. Using the following parameters, we can select the tests:
- Test cases which fail often
- Test cases related to functionalities which are more visible and used in the application
- Test cases related to core functionalities of the application
- Test cases of the functionalities which have been changed recently in the application
- Regression testing plays a major role in the project following Agile Development model
- Regression testing is performed to verify that the new code changes have not introduced any side effects in working functionalities
- Regression testing is different from Retesting. Retesting is a type of testing in which the failed tests are executed again to ensure their passing after the defects are fixed.
Please leave your questions/comments/feedback below.
Happy Learning 🙂
Arun Motoori (www.QAFox.com)