Regression Testing: A Sign-Off Before Product Release
Let’s understand the term first
What is Regression? Regress means returning to the former or less developed state. Regression Testing involves a similar concept; it includes testing of previous functionality, to ensure a bug that could have been introduced by any enhancement added to the previous version. A test engineer checks the desired functionality and ensures that new bugs if introduced, are also caught.
The importance of regression testing lies in the life-cycle of a project when there are quick enhancements in the product or application. It is very common these days that applications are being frequently updated. Hence, regression testing plays a key role in the successful journey of a product during its entire lifespan.
How much a Regression Test Suite should cover?
Complete testing of an application/product requires exhaustive testing of numerous modules with a large number of test cases execution, although while doing regression, testers focus only the test scenarios which are of strictly critical nature to the business. Additionally, a scope of any testing depends on the number of features implemented; in the case of regression testing, inputs from the development team are also essential to be included in current release’s scope, since they are the ones who had implemented those changes. With these inputs, testing team can make a Regression Suite consisting of existing critical test scenarios and new critical test scenarios.
Picking test cases to execute in regression testing depends on the business impact, frequency of use, and criticality of the functionality. Taking these steps into consideration can significantly reduce the testing efforts and yield better results.
An Example- A tester working on a web page is divided into two parts. Now the current requirement demands to split it into three, keeping existing parts intact. The page is responsive and will adjust to newly available dimensions. The case for regression is now to test the new part and check the existing parts for their accurate working. Cases in regression suite will include all the test cases of the new module along with the existing test cases of old modules.
Regression testing is carried out in two steps:
- Running old cases(of Regression Suite) to ensure no new bug has been introduced
- Running new test cases(of Regression Suite) to ensure new functionality/bug fix has been implemented as per the requirements
When we run old cases, we compare the results of current execution with the previous execution results to check for the introduction of new bugs.
Regression test plan with the testing strategies should be outlined beforehand to have efficient regression testing. Include some performance tests other than functionality and UI tests to ensure the performance is also seamless.
A right approach for regression testing is to do it after smoke/sanity testing and at the end of functional testing for a short release.
In the case of projects with frequent releases, with updated functionalities and newly implemented features, creating automated test suites and running them daily or at fixed intervals reduces the risk considerably by detecting defects in early stage than in the later release cycles.
An important point in regression testing is that test cases should be changed and updated. Running the same tests in the same order will not yield perfect test results.
Tools for Regression Testing
Since a major part of regression testing involves running the same cases; there is a lot of scope for automation that will reduce the manual effort. The extent of automation depends on the number of test cases, which will remain the same.
Some tools commonly used for regression testing include Selenium, QTP, Winrunner (now known as LoadRunner), SilkTest, etc. When selecting a tool for automation, it is important to know that the tool allows for an easy modification of test cases.
Please note in cases where most of the test cases change with every regression testing cycle, automation is not an effective choice.
With continuous integration and improvements, one cannot take chances with the quality of the product. Assuming that your website will work just since only a few changes have been made is a big, big mistake. You can prevent such bug leakages if only you perform regression testing religiously before any product release.
So I have the following scenario:
We are about to release a new version of an application, which has some new features and bug fixes and so on.
At the regression testing phase, my thoughts are that I only need to test the features that were available in the previous release and not the new features (those should have been tested during functional testing of the new features)…Sure, I first need to check impact and so on as well…
What are your thoughts?
Nice read Aayush.