What is Regression Testing?
Regression means retesting the unchanged parts of the application. Regression Testing is the one in which test cases are re-executed in order to check whether the previous functionality of the application is working fine and the new changes have not introduced any new bugs. This test can be performed on a new build when there is a significant change in the original functionality that too even in a single bug fix.
This is the method of verification. Verifying that the bugs are fixed and the newly added features have not created any problem in the previous working version of the software.
Testers perform functional testing when a new build is available for verification. The intent of this test is to verify the changes made in the existing functionality and the newly added functionality as well. When this test is done, the tester should verify whether the existing functionality is working as expected and the new changes have not introduced any defect in functionality that was working before this change. Regression test should be a part of the release cycle and must be considered in the test estimation. Regression testing is usually performed after verification of changes or a new functionality. But this is not the case always. For the release that is taking months to complete, regression tests must be incorporated in the daily test cycle. For weekly releases, regression tests can be performed when the functional testing is over for the changes.
What You Will Learn:
Regression testing is initiated when a programmer fixes any bug or adds a new code for a new functionality to the system. There can be many dependencies in the newly added and the existing functionality. It is a quality measure to check whether the new code complies with the old code so that the unmodified code is not getting affected. Most of the time testing team has the task to check the last minute changes in the system. In such situation, testing only affected application area is necessary to complete the testing process on time with covering all the major system aspects.
This test is very important when there is a continuous change/improvement added in the application. The new functionality should not negatively affect the existing tested code.
This depends upon the scope of newly added features. If the scope of a fix or feature is too large, then the application area getting affected is also quite large and the testing should be performed thoroughly including all the application test cases. But this can be effectively decided when the tester gets input from a developer about the scope, nature, and the amount of change.
Types of Regression tests
As these are repetitive tests, test cases can be automated so that set of test cases alone can be easily executed on a new build. Regression test cases need to be selected very carefully so that maximum functionality is covered in a minimum set of test cases. 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 need 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 the parts where it can affect the most.
This is a continuous process performed at various stages throughout the software testing lifecycle. 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.
In order to conduct effective testing, regression test plan should be created. This plan should outline the regression testing strategy and the exit criteria. Performance testing is also a part of this test to make sure that the 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 at an early stage rather than finding and fixing those at the end of the release cycle.
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 a new build. This means that we have a 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 is an efficient regression test method. The extent of automation depends upon the number of test cases that are going to remain applicable over the time. If test cases are varying from time to time, the application scope goes on increasing and 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 become obsolete or need to be modified. Re-using the regression testing test cases means GUI test cases are modified according to new GUI. But this task becomes a cumbersome one
if you have a large set of GUI test cases.
Examples of regression testing tools are:
Most of these tools are both functional and regression test tools. Adding and updating regression test cases in an automation test suite is a 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 your valuable comments/suggestions about this article.