The motive of regression testing is to make sure that any change, such as a bug fix, should not introduce any new bug. Regression testing can be used for effective testing of a system by selecting minimum number of tests needed to test the affected change. Most common methods of regression testing include re-running of previously run tests and then verifying whether the program behavior has undergone any changes as well as identifying if any previously fixed faults have re-emerged or not. The main reason for carrying out regression testing is that it gets difficult for a programmer or a developer to identify how a modification in one part of the software affects other parts of the software. This is addressed by doing a comparison of results of previous tests with the results of the current tests being run.
In every software development company, regression testing is one of a quality control measure to ensure that the currently modified code is still in accordance with its specified requirements and is not at all affecting the unmodified code brought by any changes done to the software. Minimum amount of time must be spent when conducting regression tests, focusing on adequate coverage of the software to detect new failures in the previously tested code.
Any change or even a slight modification in software can break the existing functionality of an application. It has been observed that a software fix can lead to occurrence of other bugs which in turn can deeply affect the quality and reliability of the system.
Every custom software development organization follows different strategies for regression testing.
Some strategies and factors to consider during this process include the following:
* Test fixed bugs promptly.
* Keep an eye on what all can be the side effects of bug fixes. It may be possible that a bug itself might be fixed but that fix might cause occurrence of other bugs.
* Write a regression test for every bug fixed.
* If in case, any two or more tests are identical, try to figure out which test is less effective and get rid of the same.
* Figure out the tests that the program consistently faces and archive them.
* Rather than focusing on design or cosmetic issues, focus on functional issues of an application.
The ideal process would be to create an extensive set of test cases and run it after each and every change. Unfortunately, for many projects this is just impossible because of multiple reasons such as the test cases are too large, changes keep coming in rapidly, or testing must be done on various hardware and OS platforms.
With each change in the software, Regression Testing could become more and more expensive. To make the Regression Testing cost effective and yet ensure good coverage, following techniques can be applied:
* Test Automation: Regression testing can be automated. Testing is done using scripts after each change is introduced in the system. It helps eliminate human errors and result in faster and cheaper execution of Test cases. However, there is cost involved in building the scripts.
* Selective Testing: Another method is to execute the test cases selectively. All the test cases are not executed during the Regression Testing. The only part that seems relevant is tested. This helps reduce the testing time and effort.