Regression testing is a type of testing that is carried out to make sure that any code modifications to the software product didn’t result in any additional defects (side-effects) in the existing functionality that was working perfectly fine earlier. In other words – to identify the defects in related functionality that creep in after the code changes to an already tested functionality.

Many organizations verify critical functionality once, and then assume it continues to work unless they intentionally modify it. However, even routine and minor code changes can have unexpected side effects that might break previously-verified functionality.

The purpose of regression testing is to detect unexpected faults – especially those that occur because an inheriting developer did not fully understand the internal code correlations when modifying or extending existing code. Every time code is modified or used in a new environment, regression testing should be used to check the code’s integrity.

Regression testing should be tightly linked to functional testing, and be built from the successful test cases developed and used in functional testing. These test cases, which verified an application’s behavior or functionality, are then rerun regularly as regression tests and become the means for verifying that the application continues to work correctly as new code is being added.

During regression testing, specified test cases are run and current outcomes are compared to previously-recorded outcomes. This forms the basis of the reports that are used to illustrate software defects or deviation from use-cases.