Softwares undergo changes throughout their lifecycle. When a tested software undergoes a minor fix or a fix that doesn’t affect the whole application then it is not advisable to conduct thorough testing of all the modules of the application. Instead, after a fix in a previously tested and working software, we only run a limited number of test cases. This type of testing is known as Regression Testing.
In this article, we are going to learn everything, one needs to know about regression testing in detail.
What is Regression testing?
Regression testing is a type of testing that is done to ensure that a bug-fix or code change has not adversely affected the existing working functionalities.
So basically, we will only run all or a limited number of test cases to make sure that the previously working features work fine even after the code change.
Need of Regression testing
There are various reasons why despite being a lengthy and tiresome method, regression testing is a crucial part of the software testing cycle.
- The need for it might arise when the code in the system is changed. The modified code might lead to unwanted changes in the software. This makes testing every unit an important process.
- It is also necessary when any feature is either added or deleted. These modifications affect the other part of the software as well. To ensure smooth working despite changes is what regression testing aims at.
Features of Regression testing
- Regression test cases are usually automated as there is a huge number of regression tests and executing them manually would very time-consuming.
- The effectiveness of regression testing depends on the test cases chosen, which in turn depends on the area of impact of a release along with the criticality of the component.
- In regression testing, we have to deal with reducing the test cases(for reducing test execution time) and at the same time maintaining the test coverage.
Advantages of Regression testing
- It ensures that a fix doesn’t adversely affect working functionality.
- Regression tests can be automated hence, save a lot of time(if automated).
- These tests are particularly helpful in case of performance optimization release as these releases don’t change any business scenario. So, checking the already working functionality suffices the testing needs.
- It is also helpful in implementing Continuous Integration setup in which whenever a developer pushes some code, a build gets triggered and after that regression tests are run automatically to ensure that new change doesn’t affect any existing functionality.
Regression testing techniques
- Retest all – The name itself suggests, all the units are tested all over again, thus ensuring the software is bug-free.
- Regression test selection – In this, some selective test cases are re-executed from the test suite. This prevents running the whole suite again. Thus saving time and ensuring bug-free software simultaneously.
- Test Case prioritization – In this, the test cases are first sorted under high, medium, and low priorities. Following it, test cases are executed, first high, then medium, and low ones at the last. The prioritization is based on how often the particular feature is run, its impact on the system, and its criticality.
- Hybrid – The mix of regression test selection and test case prioritization is the hybrid technique. The test cases are selected from the suite and then run based on their priority.
Regression testing tools
Since regression test cases are ideally suited for automated testing. So automated tools are used for carrying out this type of testing. Following is the list of some of the popular automation tools that we can use-
- Selenium – With its features like open-source, multiple programming language support and multiple browser support, Selenium is one of the widely used tools.
- Katalon Studio – It is an all-in-one automation testing tool for websites, web services and mobile applications. It also supports multiple devices, browsers, and environments.
- TestComplete – This tool is ideal for running regression tests parallely. The tests created on it are stable even under GUI changes.
- IBM rational function tester – It supports a variety of apps, including web-based like Java, NET, SAP, Ajax, Adobe. It eases visualisation and test-editing with its recording screenshots feature. This is why it is one of the most commercially used applications.
How to select test cases for regression testing?
Before conducting regression testing it is important to select test cases accordingly. This saves a tester from the last-minute hassle and saves time as well. Following are some of the many criteria on which test cases can be selected.
- Test cases with recent changes and additions- firstly select all test cases that have codes gone under recent changes. This is because there are high chances of finding defects here.
- Test cases that map software requirement specifications- the test cases should be selected in a way that they meet the client’s requirements and specifications. The software functionality should meet users’ and client’s expectations.
- Test cases with frequently used functionalities- most of the test cases selected should include functionalities that are most visible and used by the user. This ensures there aren’t any major bugs.
- Test cases with prioritization- to reduce time and efforts test cases need to be prioritized depending upon high to low priority. This makes the test suite smaller and makes the testing process easier.
- Test cases based on criticality- test cases also need to be sorted by criticality. This means if the impact of the bugs is low these test cases might not be selected or might get executed in the end.
Regression testing in Agile
Before understanding the involvement of regression testing in Agile methodology, we’ll first understand the concept of agile methodology.
Agile methodology is an iterative and incremental approach to software development. In Agile, we have small incremental builds presented in multiple iterations to the end-user and other stakeholders for their feedback.
Based on the feedback, changes are incorporated in the next iterations of the build on the basis of their priority.
Now coming to regression testing in Agile, due to the iterative approach, the testers can concentrate on new functionality. With the addition of each new phase, regression testing keeps the functionality of the previously working module in check.
Difference between Regression testing and Retesting
|Performed after code changes to ensure previously working features work fine.||Performed to check if the bug-fix is valid or not.|
|It involves executing either all the test cases or the limited set of test cases that cover all the features (regression tests).||It involves executing only the failed tests that are fixed by the developers.|
|We can say that it has a lower priority than retesting. Since, we are just making sure that the test cases that passed previously, still get passed.||Retesting can be considered as of higher priority than regression because we need to make sure that the previously failed tests got fixed or not after the bug fixes.|
In conclusion, regression testing is looking for new defects that arise due to code changes. Whereas retesting is validating the bug fixes.
Kuldeep is the founder and lead author of ArtOfTesting. He is skilled in test automation, performance testing, big data, and CI-CD. He brings his decade of experience to his current role where he is dedicated to educating the QA professionals. You can connect with him on LinkedIn.