When a tested software undergoes a minor fix(or a fix that doesn't affect the whole application) then it is not advisable to conduct thorough testing of all the modules of the application. Instead, after a fix in a previously tested and working software, we only run a limited number of test cases while also ensuring proper test coverage. This type of testing is known as Regression testing.
Regression testing is the type of testing that is performed to ensure that a fix or change hasn't affected the previously working functionality.
Some features of regression testing
- Regression test cases are usually automated as there are huge number of regression tests and executing them manually would very time consuming.
- The effectiveness of regression testing depends on the test cases choosen as regression tests, which in turn depends on the area of impact of a release along with the criticality of the component.
- In regression testing, we have to deal with reducing the test cases(for reducing test execution time) and at the same time maintaining the test coverage.
Advantages of regression testing
- It ensures that a fix doesn't adversely affect the working functionality.
- Regression tests can be automated hence, save a lot of time(if automated).
- These tests are particularly helpful in case of performance optimization release as these release doesn't change any business scenario. So, checking the already working functionality suffices the testing need.
- Regression testing is also helpful in implementing Continuous Integration setup in which whenever a developer pushes some code, a build gets triggered and after that regression tests are run automatically to ensure that new change doesn't affect any existing functionality.