Regression testing is performed to verify that a code change executed in the software does not impact the existing functionality of the product. By regression testing you are making sure that the product works fine with new functionality, any bug fixes or changes with existing features. Previously executed test cases are re-executed in order to verify the impact of change has not adversely affected existing functionality.
When approaching regression testing you ultimately need a robust set of reusable tests, this is key to addressing the old dilemma of cost, speed and quality. Providing a framework of carefully chosen tests to run on demand and ensuring existing functionality is not disturbed by newly introduced changes to the software platform.
As software is updated or changed on a product or application, the arrival of new faults or the re-introduction of old issues is quite common. This happens because a fix can get lost through poor source control practices. Often, a fix for a problem in one area will inadvertently cause a software bug in another area.
To mitigate any faults and issues, regression testing must include both functional and non-functional testing. Functional regression tests ensure that the software works as intended. Non-functional software tests evaluate whether changes lead to performance degradation or security issues.
Before you plan your regression testing phase you should ensure that you fully understand the goals of the regression testing. What kind of coverage do you need to prove existing software works as expected and what testing techniques will be used to execute and maintain the tests? Additional items like what type/sized environments will we needed and how will you report progress, status and outcome of the regression test phase.
Once you have a clear plan then you must firstly select which test cases should be included into the test suite and which ones are suitable for automation, how long each test will take to build and run and finally always look at the output of the test execution to ensure that constant refinements are made to ensure maximum optimisation. A return on investment exercise is also recommended to ensure that effort involved in creating the regression test pack stacks up against your business objectives.
Adding new tests to the regression test pack after each release cycle is essential to creating greater coverage and adding to the assurances of delivering software into production. There is a cost to regression testing even when set up, but this cost is largely negated by all the benefits it brings in reducing the time to market and the overall quality of the product being deployed.
If you work in an Agile development environment, there are many iterations of change and therefore regression testing becomes more relevant as continuous changes to the application need to be verified and proven; because of this automation of regression tests becomes essential to protect the integrity of the original functionality.
If transitioning to Agile from a Waterfall methodology you must ensure you have a strategy to build a regression suite of tests, ideally from the outset of software development and then keep building upon the core set of tests as the sprints add up. Once tests are executed and proven, then you can start to automate them to reduce the time to execute and thus reduce the overall time to test within a sprint.
The overall benefits of regression testing do outweigh the risks of not doing it. Regression testing promotes the improvement of the product quality, and it verifies that any modifications that have been done do not impact the core functions already tested and proven. Regression testing can be performed both manually and by test automation and is performed by re-executing a subset of complete and full test cases.
When doing the analysis and design of your tests mark tests that should be used for regression right at the start, this way you can simply get the automated test scripted immediately and ready to execute at the next test execution cycle.
Test automation greatly increases the speed of the testing process and shortens the testing life cycle. Automation never sleeps, so you can run scripts at any time of the day or night, along with running automation around a range of machines and platforms at the same time.
Once your test automation test suite is up and running as and when you want, you can utilise your test resources more effectively and apply their skills where they are needed most when they are needed. Automated tests be can executed unattended with results being published at the end of the regression test, allowing test resources to have a broader remit.
By fully regression testing your application you give assurances that you will avoid issues in production.