Top 3 Regression Testing Types & How to Execute

Regression Testing Overview: Various Types & How to Execute

Forbes magazine recently reported that there has been a bug lying around in Google, which was ignored over the past two years! Despite having a more-or-less iron-clad image when it comes to bug-fixing, Google let this one go because it was only causing nuisance and not actual security concerns. However, it is now being actively exploited by tech-support scammers.

The thing about finding bugs ages after the code has gone live is that it needs to be backdated and fixed, such that it falls back into its place seamlessly. Regression testing needs to be done to ensure that there are as little of these after-release shocks as possible.

What is Regression Testing?

Regression testing is a black box testing technique performed by executing units of code repeatedly to ensure that the on-going code modifications do not impact the systems functionality. Alterations to the application can occur in various forms, be it new functionality, bug fixes, integrations, functionality enhancements, interfaces, patches, etc. Many software development engineers would insist that as long as essential functions are tested and are able to deliver results as per requirement, it would suffice. While this may be practical, regression testing can prove to be a real blessing at a later stage, because rather than just guaranteeing the functionality being tested for, it ensures that there are no other nasty surprises.

Even seemingly irrelevant modifications can result in complete breaking down of existing functionality. This is why regression testing is crucial: to ascertain that modified code has not impacted ANY part of the system.

It is advisable for regression tests to be executed as often as possible throughout the software development life cycle.

Types of Regression Testing

Often, regression testing is done through several phases of testing. It is for this reason, that there are several types of regression testing. A few have been mentioned below:

  • Unit regression — Unit regression testing, executed during the unit testing phase, tests the code as a single unit. It has a narrow and focused approach, where complex interactions and dependencies outside the unit of code in question are temporarily blocked.
  • Partial regression — Partial regression is performed after impact analysis. In this testing process, the new addition of the code as a unit is made to interact with other parts of older existing code, in order to determine that even with code modification, the system functions in silos as desired.
  • Complete regression — Complete regression testing is often carried out when the code changes for modification or the software updates seep way back into the roots. It is also carried out in case there are multiple changes to the existing code. It gives a comprehensive view of the system as a whole and weeds out any unforeseen problems. A sort of a “final” regression testing is implemented to certify that the build (new lines of code) has not been altered for a period of time. This final version is then deployed to end-users.

How do we go about Regression Testing?

A comprehensive regression testing is not so much about the number of test cases, as it is about covering the critical conditions. These conditions assure that the functionality remains, that the bug-fixing has been successfully done, and a particular functional area is capable of handling unexpected behavior. Purely undertaking regression testing by the number of cases is not very easy, nor is it practical. For example, while one case may cover many conditions, it could also cover only one such condition. Hence, there is no proper estimate to the amount of detail that needs to be taken into consideration while executing the regression test cases.

A sequence of steps is given below in order to understand how exactly we can go about Regression testing:

  1. Smoke/Sanity Test — Primarily done to check that the system is stable, this check is done to confirm that the system works as desired under ‘normal’ conditions. Rather than finding bugs, the purpose here is to ensure that the system is stable even before the rest of the testing process is initiated.
  2. Requirements Analysis — Requirements of the modifications or additions of code must be thoroughly analyzed. Often users report bugs that, when analyzed, are found to be a result of last-minute alterations. Mandatory requirements of the customers must hence be carefully assessed, and test cases for regression are prepared such that the core features of the product remain firmly intact.
  3. Test Cases for Critical Functions — Of the various test cases designed for regression testing, the most critical for customers and development teams alike are the Sanity test cases that check the basic functionality of the system. Ordinary setup related test cases are then checked on priority. The test cases that are designed for regression testing as the software life cycle progresses are then executed, as per bandwidth and need. Integration test cases, in particular, are highly important and there needs to be a series of regression test cases especially while performing integration testing. A sudden fix at the last moment, for example, can break the integration between multiple modules, even in an already tested application.
  4. Selection of Test Cases — After the prioritization of the test cases, they can then be selected for execution. The selection of these test cases is done primarily based on the area of frequent defects and based on the features and their criticality. Tests are run aggressively for those units of code that have undergone multiple changes repeatedly.

Regression tests are the ideal cases of automation that result in better Return On Investment (ROI) [Source link]

  1. Select the Tests for Regression
  2. Choose the apt tool and automate the Regression Tests
  3. Verify applications with Checkpoints
  4. Manage Regression Tests/update when required
  5. Schedule the tests
  6. Integrate with the builds
  7. Analyze the results

Conclusion

Cigniti Technologies ensures that its testing solutions for regression testing enable the desired outcome post code enhancements. The demand of end-users to modify or upgrade functionality is only dynamically increasing. Software development teams undergo several iterations of coding when modifications are being made to the existing features. Cigniti’s QA engineers understand and perform impact analysis of the changes made to the test environment.

Cigniti uses a systematic and well defined regression test approach to perform effective regression testing. Our approach includes:

  • Detailed traceability matrix: Outlines of the requirements vs. test cases
  • Dependency analysis: Performed between test cases and requirements
  • Change reports: Issues between the current release and previous release
  • Release specific regression test pack
  • Risk-based analysis: Pareto analysis, FMEA, Output from code coverage report etc.
  • Continuous pruning: Regression test packs are continuously pruned by removing the test cases that are no longer needed & add additional ones.

To know more about Cigniti Technologies, visit our website www.cigniti.com and get in touch with our QA experts.


Originally published at www.cigniti.com on November 15, 2016.