Skip to main content

Regression Testing

Testing to ensure new changes do not adversely affect existing functionality.

Also Known As

  • Non-Regression Testing
  • Retesting
  • Software Regression Testing

Related

Addresses / Mitigates

Attendant Risks

Used By

  • Scrum: Regression testing is part of the Definition of Done to ensure changes don't break existing functionality.

Description

"Regression testing is a type of software testing that seeks to uncover software regressions: whether previously working software stops working or behaves differently after changes." - Regression testing, Wikipedia

Regression Testing compares outputs from version A and A* to ensure new changes haven't broken existing functionality. However, it's fraught with Hidden Risks: number format differences, ordering changes, schema changes, methodology changes, non-determinism, and human fatigue when reviewing exceptions. While it seems like a big win, the payback is often slight. Automated Testing is usually more effective—it surfaces problems you didn't know existed, and is far easier to debug.

Variations

Regression ApproachDescriptionReference
Full RegressionRe-running the entire test suite after any change.Regression Testing, Wikipedia
Partial RegressionTesting only the areas affected by changes.Regression Testing, Wikipedia
Golden Master TestingComparing outputs against a known-good "golden" baseline.Characterization Test, Wikipedia

Used By

Scrum

Scrum

An Agile framework for managing and completing complex projects.

Why: Regression testing is part of the Definition of Done to ensure changes don't break existing functionality.