Regression Testing
Also Known As
- Non-Regression Testing
- Retesting
- Software Regression Testing
Related
Addresses / Mitigates
- Implementation Risk: Detects and prevents regressions in the software.
- Reliability Risk: Regression testing helps prevent reliability breaks caused by software change.
Attendant Risks
- Schedule Risk: Can be time-consuming and introduce delays.
- Reliability Risk: Requires a stable testing environment, creating dependencies.
- Complexity Risk: Managing extensive regression tests can add complexity.
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 Approach | Description | Reference |
|---|---|---|
| Full Regression | Re-running the entire test suite after any change. | Regression Testing, Wikipedia |
| Partial Regression | Testing only the areas affected by changes. | Regression Testing, Wikipedia |
| Golden Master Testing | Comparing outputs against a known-good "golden" baseline. | Characterization Test, Wikipedia |
Used By
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.