What is Regression Testing?
Regression testing is done after receiving a new build that has some bug fixes which was identified during the initial round of testing. It is a type of black-box testing. It is performed to ensure that changes in the codebase ( new code or modified code) do not disrupt the existing functionality thereby introducing defects. It also checks for the performance of the application after adding a new feature.
When a build is received after the bug fixes are done in the existing software, some test scenarios need to be executed, to verify the bug fixes. In addition to these the impacted areas also need to be tested based on the code changes.
In regression testing, all those test scenarios will have to be executed, to take care of related functionalities. Regression test cases are mostly automated
Example of Regression Testing
Suppose a new feature “apply coupon/discount” is added to the application where users can apply for discounts while booking tickets. Now with this feature added, it is needed to ensure that the other functionalities are not affected and work as expected. Thus, a regression suite is prepared which will test all the functionalities and check the integration of all modules and modifications or enhancements made has not led to code break.
When to perform Regression Testing
- When a change request (CR) is raised by the client, which leads to change in the codebase.
- When a new feature is added to the application
- When there is a change in the testing environment.
- After some bug fixes are incorporated into the build.
- When performance issues and crashes are fixed by the developers.
- The UI of the application is changed for a better user experience.
Regression Test Cases Selection Technique:
Software maintenance activity includes enhancements, bug fixes, code optimization, and modification of existing features. These could lead to a system performing unexpected behavior. Therefore, Regression Testing is done which ensures there is no side effect of these modifications into the system. Regression test cases are selected using the below techniques:
Test All Cases: This is a very simple technique where test cases are selected from an already existing test suite. It is the most expensive technique as it requires immense time and resources.
Random selection of Tests: In this technique, test cases are selected randomly from the existing test-suite. Basically, a few test cases are selected from each feature. This is not a very efficient technique and is used only in some cases.
Select Affected Tests: In this technique, only those test cases are selected which has an impact of changing the source code.
Select Priority Tests: In this technique, high priority test cases are selected based on the business impact, critical & frequently used functionalities.
Tips for selecting Regression Test Cases:
- Select test cases that verify the business requirements.
- Select all complex test cases
- Select test cases from areas which have frequent bugs/defects
- Select all integration test cases
- Select test cases of high priority features and functionalities
- Select test cases of areas which have undergone through code change many times
- Select a few boundary value test cases.
Advantages of Regression Testing:
- It ensures that no new defect has been introduced into the system due to code change.
- Regression test cases can be easily automated with the help of an automated testing tool.
- It helps in maintaining product quality.
- It reduces test execution time while maintaining quality.
Disadvantage of Regression Testing:
- It is a time-consuming process if the testing has to be done manually and not by using automated tools.
- It needs to be run even after making a small change in code.