What is Regression Testing?
Regression means retesting the unchanged parts of the application. Test cases are re-executed in order to check whether previous functionality of application is working fine and new changes have not introduced any new bugs. This test can be performed on a new build when there is significant change in original functionality or even a single bug fix.
This is the method of verification. Verifying that the bugs are fixed and the newly added features have not created in problem in previous working version of software.
Testers perform functional testing when new build is available for verification. The intend of this test is to verify the changes made in the existing functionality and newly added functionality. When this test is done tester should verify if the existing functionality is working as expected and new changes have not introduced any defect in functionality that was working before this change. Regression test should be the part of release cycle and must be considered in test estimation. Regression testing is usually performed after verification of changes or new functionality. But this is not the case always. For the release taking months to complete, regression tests must be incorporated in the daily test cycle. For weekly releases regression tests can be performed when functional testing is over for the changes.
Why Regression Test?
Regression testing is initiated when programmer fix any bug or add new code for new functionality to the system. There can be many dependencies in newly added and existing functionality. It is a quality measure to check that new code complies with old code and unmodified code is not getting affected. Most of the time testing team has task to check the last minute changes in the system. In such situation testing only affected application area in necessary to complete the testing process in time with covering all major system aspects.
This test is very important when there is continuous change/improvements added in the application. The new functionality should not negatively affect existing tested code.
How Much Regression Testing?
This depends on the scope of newly added feature. If the scope of the fix or feature is large then the application area getting affected is quite large and testing should be performed thoroughly including all the application test cases. But this can be effectively decided when tester gets input from developer about the scope, nature and amount of change.
Types of Regression tests: As these are repetitive tests, test cases can be automated so that set of test cases can be easily executed on new build. Regression test cases needs to be selected very carefully so that in minimum set of test cases maximum functionality is covered. These set of test cases need continuous improvements for newly added functionality. It becomes very difficult when the application scope is very huge and there are continuous increments or patches to the system. In such cases selective tests needs to be executed in order to save testing cost and time. These selective test cases are picked based on the enhancements done to the system and parts where it can affect the most.
What We Do in Regression Test?
- Rerunning the previously conducted tests
- Comparing current results with previously executed test results
This is a continuous process performed at various stages throughout the software testing life cycle. A best practice is to conduct regression test after the sanity or smoke testing and at the end of functional testing for a short release.
To conduct effective testing, regression test plan should to be created. This plan should outline the regression testing strategy and exit criteria. Performance testing is also the part of this test to make sure system performance is not affected due to the changes made in the system components.
Regression testing best practices: Run automated test cases every day in the evening so that any regression side effects can be fixed in next days build. This way it reduces the release risk by covering almost all regression defects in early stages rather than finding and fixing those at the end of the release cycle.
Regression Testing Tools
Automated Regression Testing is the testing area where we can automate most of the testing efforts. We run all the previously executed test cases on new build. This means we have test case set available and running these test cases manually is time consuming. We know the expected results so automating these test cases is time saving and efficient regression test method. Extent of automation depends on the number of test cases that are going to remain applicable over the time. If test cases are varying time to time as application scope goes on increasing then automation of regression procedure will be the waste of time.
Most of the regression test tools are record and playback type. You will record the test cases by navigating through the AUT (application under test) and verify whether expected results are coming or not.
Regression Of GUI application:
It is difficult to perform GUI (Graphical User Interface) regression test when GUI structure is modified. The test cases written on old GUI either becomes obsolete or need to modify. Reusing the regression testing test cases means GUI test cases are modified according to new GUI. But this task becomes cumbersome if you have large set of GUI test cases.
Example regression testing tools are:
- AdventNet QEngine
- Regression Tester
- Rational Functional Tester
Most of these tools are both functional and regression test tools. Adding and updating regression test cases in automation test suite is cumbersome task. While selecting automation tool for regression tests, you should check if the tool allows you to add or update the test cases easily. In most cases we need to update automated regression test cases frequently due to frequent changes in the system.
Hope this explains the regression testing concept and best practices. Let us know how you conduct this test in your organization?