Regression Testing, by its definition, is a type of software testing to confirm that a recent program or code change has not adversely affected existing features.
It is done to make sure that the existing application is intact with the newly added features and nothing is broken. In order to achieve that, the existing test cases are executed selectively or sometimes completely. Regression testing ensures that the old code still works once the new code changes are done.
Why is it required?
Regression testing is carried out in many cases-
- Changes in the requirement of an existing feature.
- Addition of new feature
- Bug fixes
- Technology change/upgrade
- Performance Fixes
- Code optimization
Regression testing ensures that the changes have not introduced new bugs in the existing features which were working fine before. Sometimes there is a change in requirements of the existing feature itself which may impact other features of the application. In this case, regression testing is carried out for other features.
Regression testing is also required in cases where the underlying technology is changed or upgraded due to old libraries are deprecated. To ensure that this does not have any impact on functionality, testers perform complete regression testing.
When a developer does code optimization or performance fixes then also testers perform regression testing.
Re-testing and Regression Testing- There is a difference between re-testing and regression testing. Retesting is to test the software/ application when a defect is fixed to ensure that the original defect is completely removed while regression testing is performed to make sure that no new defects are introduced when a new feature is developed or existing feature is changed.
Regression Testing Techniques- Usually testers include regression testing in their test plan for each release. As defined, it should be performed to ensure that new features do not have any impact on existing features, it must be included in each release plan. As most of the organizations follow agile methodology where releases are frequent, regression testing is achieved by continuous testing and automation. There are various techniques of regression testing-
- Retest All- This is the technique where test engineers execute all the existing test cases without any miss. This is quite expensive as it requires huge time and resources.
- Regression Test Selection- In this technique, test engineers select a subset of test cases based on the impact analysis. Test chosen cases categorized as
- Reusable Test cases
- Obsolete Test cases
Reusable Test cases used in succeeding Regression cycles. Obsolete Test cases not used in succeeding cycles.
- Prioritization of Test cases- To prioritize test cases depending on a business impact, critical and frequency used functionalists. Selection of test cases based on priority will significantly reduce the regression test suite.
Types of Regression Testing-
- Selective – Selective regression testing is a type of regression testing where testers select test cases from previously run test suites and test coverage identification. To perform this, test engineers use a sub-set of already run test cases to reduce the cost and effort required in re-testing.
- Complete – Complete regression testing is used when there are changes in the root code of the software. It is also performed when there are multiple changes that have been done to the existing code.
- Corrective – It is performed when there are no changes in the existing software/application. The already existing test cases can be re-used to perform this type of regression testing.
- Partial – This type of regression testing is performed after impact analysis. Test engineers do selective test case execution based on the modules which get impacted due to new code merge.
Can regression testing be done Manually?
Regression testing can be performed manually. But this leads to inefficiency if the application is large and impact is big. Also, it is very boring to execute repetitive test cases again and again for a test engineer.
To perform regression testing, the tester needs to identify the test cases which must be executed.If the no. is big, testers need to find out the best combination and optimize them.
Regression testing Tools- Regression test cases can be automated and executed on a scheduled basis. There are many tools that are reliable and scalable. Let’s have a look some of the most popular tools-
- Winrunner – HP WinRunner software was an automated functional GUI testing tool that allowed a user to record and playback user interface (UI) interactions as test scripts. As a functional test suite, it worked with HP QuickTest Professional and supported enterprise quality assurance.
- QTP – QTP is an automation testing tool by HP which is now called as HPE Unified Functional Testing software. It supports VB scripting language to specify the test procedure and also provides a GUI. To perform more intensive actions the user may need to modify the underlying script.
- Watir – According to Watir website, Watir stands for Web Application Testing In Ruby. It facilitates the writing of automated tests by mimicking the behavior of a user interacting with a website. It supports multiple browsers like Internet Explorer, Chrome, Firefox, Opera and Safari.
Its latest version is watir webdriver which is based on selenium API.
- Selenium – Selenium is a set of tools used to automate web applications across platforms. It supports many third party libraries to facilitate a complete framework for automation. It also supports multiple programming languages. Selenium has the support of some of the largest browser vendors who have taken (or are taking) steps to make Selenium a native part of their browser. It is also the core technology in countless other browser automation tools, APIs and frameworks.
- actiWate – actiWATE is a Java-based software platform intended to make the test automation process simple and cost-effective for automation of regression testing of web applications. It consists of actiWATE Framework and additional modules. Currently, only one module is released – actiWATE TWA Framework which is a Java-based library. Automated tests use this library for interacting with web applications. actiWATE executes tests without real Internet browser; instead actiWATE Framework emulates Internet browser on its own. actiWATE tests are fully compatible with JUnit and can be run by any JUnit tests runner.
- Rational Functional Tester – Rational Functional Tester is a tool for automated testing of software applications from the Rational Software division of IBM. It allows users to create tests that mimic the actions and assessments of a human tester. It is primarily used by Software Quality Assurance teams to perform automated regression testing.
- SilkTest –Silk Test is a tool for automated function and regression testing of enterprise applications. It was originally developed by Segue Software which was acquired by Borland in 2006. Borland was acquired by Micro Focus International in 2009.
- TimeShiftX –TimeShiftX is a date and time shift testing software that lets you time travel software into the future or past for temporal testing all date and time-sensitive functionality and code such as end of year-month, daylight savings time, leap year, billing, rates, policies, etc. Perform time travel testing without changing system clocks, editing code, or isolating servers.
- CloudQA- CloudQA provides a unified platform for various testing requirements. They have a record and playback tool with integrated reporting which is quite easy to use for creating and scheduling regression testing suit. It also provides integration with various third-party tools for eg-
- ALM tools (TestRail, TFS, Asana)
- Bug Tracking (Jira, BugTracker)
- CI/CD (Jenkins, CircleCI, TravisCI & DevOps support)
- Open API Integration
- Team communication (Slack, SMS, webhooks)
- Version control tools (Github, TFS)