Regression Testing: Tools and Techniques
A discussion of regression testing and its importance in the SDLC, as well as some tools that testers and developers can use to ease their testing burdens.
Join the DZone community and get the full member experience.Join For Free
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 a 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 the 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 being deprecated. To ensure that this does not have any impact on functionality, testers perform complete regression testing.
When a developer does code optimization or makes performance fixes, then testers also 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 missing any. This is quite expensive as it requires a huge amount of 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
- Prioritization of Test cases - Pprioritize test cases depending on a business impact and frequency of use. 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 merges.
Can Regression Testing Be Done Manually?
Regression testing can be performed manually. But this leads to inefficiency if the application is large and the 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 number 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 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 the 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's 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 the 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 the actiWATE framework and additional modules. Currently, only one module is available – the actiWATE TWA framework, which is a Java-based library. Automated tests use this library for interacting with web applications. actiWATE executes tests without a real Internet browser; instead, the actiWATE framework emulates an Internet browser on its own. actiWATE tests are fully compatible with JUnit and can be run by any JUnit test 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 suits. It also provides integration with various third-party tools, for example:
- ALM tools (TestRail, TFS, Asana)
- Bug Tracking (Jira, BugTracker)
- CI/CD (Jenkins, CircleCI, TravisCI and DevOps support)
- Open API Integration
- Team communication (Slack, SMS, webhooks)
- Version control tools (Github, TFS)
Published at DZone with permission of Charles Taylor, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.