Thank you for visiting. We will be back soon!!!
One of the critical phases in the software development life cycle is the maintenance phase. In this phase, the development team will be maintaining the software which is already delivered. Software maintenances results for the reasons like error corrections, enhancement of capabilities, deletion of capabilities and optimization. Now the changed or modified software needs testing known as regression testing.
Regression testing is defined as the process of retesting the modified parts of the software and ensuring that no new errors have been introduced into previously tested code.
In other words, it’s a type of software testing that ensures previously developed and tested software still performs the same way after it is changed or interfaced with other software. Changes may include software enhancements, patches, configuration changes, etc. During regression testing, new software bugs or regressions may be uncovered. Sometimes a software change-impact analysis is performed to determine which areas could be affected by the proposed changes. These areas may include functional and non-functional areas of the system.
The purpose of regression testing is to ensure that the changes such as the new enhancements, patches, configuration changes have not introduced new faults. One of the main reasons for regression testing is to determine whether a change in one part of the software affects other parts of the software.
There are various regression testing techniques
1. Retest all
2. Regression Test Selection
3. Test Case Prioritization
Retest All: This is one of the methods for Regression Testing in which all the tests in the existing test bucket or suite should be re-executed. This is very expensive as it requires huge time and resources.
Regression Test Selection
Instead of re-executing the entire test suite, it is better to select part of test suite to be run
Test cases selected can be categorized as 1) Reusable Test Cases 2) Obsolete Test Cases.
Re-usable Test cases can be used in succeeding regression cycles.
Obsolete Test Cases can't be used in succeeding cycles.
Prioritization of Test cases
Prioritize the test cases depending on business impact, critical & frequently used functionalities. Selection of test cases based on priority will greatly reduce the regression test suite.
It was found from industry data that good number of the defects reported by customers were due to last minute bug fixes creating side effects and hence selecting the test case for regression testing is an art and not that easy. Effective Regression Tests can be done by selecting following test cases
Test cases which have frequent defects
Functionalities which are more visible to the users
Test cases which verify core features of the product
Test cases of Functionalities which has undergone more and recent changes
All Integration Test Cases
All Complex Test Cases
Boundary value test cases
Sample of Successful test cases
Sample of Failure test cases
The regression test suite can be build and maintain by considering the above factors.
To Plan an Effective Regression Testing One Should Determine First:
• What test-cases must be executed;
• What must be improved and changed in the test-cases;
• When it is necessary to execute regression testing of the system;
• What and how should be automated;
• What is needed to perform the automated testing;
• How to analyze the outcomes of the regression testing?
Common methods of regression testing include re-running previously completed tests and checking whether program behavior has changed and whether previously fixed faults have re-emerged. Regression testing can be performed to test a system efficiently by systematically selecting the appropriate minimum set of tests needed to adequately cover a particular change.
Automation of regression test cases is the smart choice in such cases.
Extent of automation depends on the number of test cases that remain re-usable for successive regression cycles.
Following are most important tools used for both functional and regression testing:
Selenium: This is an open source tool used for automating web applications. Selenium can be used for browser based regression testing.
Quick Test Professional (QTP): HP Quick Test Professional is automated software designed to automate functional and regression test cases. It uses VBScript language for automation. It is a Data driven, Keyword based tool.
Rational Functional Tester (RFT): IBM's rational functional tester is a Java tool used to automate the test cases of software applications. This is primarily used for automating regression test cases and it also integrates with Rational Test Manager.
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.
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.
Regression testing increases our chances of detecting bugs caused by changes to a software and application- either enhancements or defect fixes. Regression testing also detects undesirable side caused always by changing the operating environment.