Regression Testing

Written by Aleks

What Is Regression Testing?

Regression testing is testing previously-tested software to find defects that may have been introduced by changes to the software. Changes that may have been done to the software may include software functional enhancements, bug fixes, changes in configuration, integration with other components or system changes such as an Operating System or DBMS change.

As an example, assume there is an application with 2 buttons ADD and DELETE and both buttons function as expected. If a third button UPDATE is introduced, then not only should the new button be tested for defects but the already existing buttons should be re-tested for defects to ensure their functionality has not been impacted by the changes to the software. This process is called Regression Testing.

What is its purpose?

Regression testing is performed because changes to software may result in the introduction of new defects in already-tested software.

How Is It Executed?

After software has been changed, a test plan is created which would include a risk analysis to determine the regression tests that need to be performed. The regression tests may test either functional characteristics of the software or nonfunctional requirements such as speed, memory usage, load capacity etc. Regression tests are called CORRECTIVE when the specifications have not changed and the test cases can be re-used. Or they can be PROGRESSIVE if the specifications have changed and new test cases need to be created.

Consequences of Inadequate Regression Testing

The result of poorly planned and executed regression tests may include finding defects later in the testing and development life-cycle which would cause greater cost to the stakeholders. Finding defects as early as possible in the life-cycle is key to cost-effective and timely testing. Delays in finding defects would negatively impact all subsequent test levels that rely on the Regression tests such as Integration tests.