The Business of IT Blog

What is Regression Testing? Regression Testing Explained

Stephen Watts
by Stephen Watts
3 minute read

When making changes to a system, application, or component, you may find that the error or new feature you addressed is functioning – but now several other issues exist. This is a common issue in software development.

There are many ways to test software, but one test focuses on post-modification testing to ensure the fix doesn’t cause harm or errors elsewhere. This is called regression testing.

Types of Software Testing

To understand where regression testing fits into your software testing, let’s briefly look at how software testing works. In general, software testing is divided into two types:

  • Whitebox testing takes into account the internal mechanisms of the software. This testing is often used for verification.
  • Blackbox testing, on the other hand, ignores the system’s mechanism, instead focusing on the generated output. This can sometimes be known as functional testing. Unlike whitebox testing, blackbox testing is used for validation.

Regression testing falls into the category of blackbox testing.

Defining Regression Testing

Regression testing, as the name implies, tests for any regressions in software. A software regression includes any bug that stops a feature from functioning after a certain event occurs, such as a code modification or enhancement, patching, or upgrade.

The purpose of regression testing is two-fold:

– To ensure that new changes to code don’t introduce new bugs or errors.

– To determine whether a change in one software module will affect other modules.

Note that regression testing is not ensuring that the fix actually does what is intended. Instead, non-regression testing verifies whether introducing or updating code actually accomplishes the intended functions.

Because regression testing can uncover new bugs, regression testing occurs after the code has been modified, but before it is deployed to users. Exactly when the testing occurs depends on the type of regression testing necessary.

Regression testing may sometimes seem superfluous, especially with only slight changes or additions to the code. Indeed, some developers even believe that as long as essential functions are tested and deliver as designed, that is sufficient. But, regression testing advocates point out how fruitful small testing now can be down the road – ensuring current functionality and that there are no larger, unforeseen ramifications as future iterations are introduced.

Types of Regression Testing

At its core, regression testing is performed by repeatedly executing units of code. But, there are different techniques on executing this testing.

Regression testing can be done in phases, often based on what the new code may affect. Here are the most common types of regression testing:

  • In a unit regression, the new or modified code is tested as a single unit prior to integration. This narrow approach temporarily blocks complex interactions and dependencies that extend beyond the code under this review.
  • In a partial regression, the single unit of code that was tested in the unit regression is now integrated with old, pre-existing code. This determines whether the code modifications will allow the software module to function correctly.
  • In a complete regression, the code is integrated with pre-existing code and is tested to provide a comprehensive view of the system. This is often necessary when new or modified code will have an affect deep into the code roots, or if there are many, not just a single, change in the code.

Common methods in regression testing, no matter the type, can include:

– Re-running previously completed tests

– Checking whether behavior in other modules have changed

– Determining whether previously fixed faults (from prior iterations) have returned

How to Perform Regression Testing

Once your new or modified code is written, follow these steps to begin your regression testing:

  1. Perform the smoke and sanity test. This confirms that the system is stable prior to beginning the regression testing. The goal is not to find bugs or errors.
  2. Analyze the code requirements. Users report bugs that are often, upon inspection, the result of last-minute alterations to code. To easily avoid this, analyze the new build in accordance with the customers’ requirements before adding it to the existing code.
  3. Review test cases. This determines which regression to perform: a unit, partial, or complete.
  4. Schedule and perform. Schedule the test for least downtime and test the code aggressively.

Once your tests are complete and results are satisfactory, you can fully integrate the code and deploy it to users. And, consider that if the build hasn’t been altered for some time, a final complete regression is good practice before deploying to end users.

Introducing Cognitive Service Management

Cognitive Service Management is the cutting-edge of ITSM. This innovative approach helps businesses keep up with the pace of emerging technologies and diverse environments. Download the whitepaper to learn more.
Download Whitepaper ›

These postings are my own and do not necessarily represent BMC's position, strategies, or opinion.

About the author

Stephen Watts

Stephen Watts

Stephen is based in Birmingham, AL and began working at BMC Software in 2012. Stephen holds a degree in Philosophy from Auburn University and is currently enrolled in the MS in Information Systems - Enterprise Technology Management program at University of Colorado Denver.

Stephen contributes to a variety of publications including, Search Engine Journal, ITSM.Tools, IT Chronicles, DZone, and CompTIA.