Regression Risk
Part Of
Reduced By Practices
- Automated Testing: Detects regressions early in the development cycle.
- Integration Testing: Detects regressions early in the integration phase.
- Regression Testing: Detects and prevents regressions in the software.
- Version Control: Maintains a history of changes, allowing rollback to previous versions if needed.
Attendant To Practices
- Coding: Changes in code can introduce new bugs and regressions.
- Refactoring: Done carelessly, refactoring can introduce new issues into the codebase
Delivering new features can delight your customers, but breaking existing ones will annoy them!
Regression Risk is the risk of breaking existing features in your software when you add new ones. As with other feature risks, the eventual result is the same: customers don't have the features they expect.
Regression Risks increase as your code-base gains Complexity. That's because it becomes impossible to keep a complete Internal Model of the whole thing in your head, and also your software gains "corner cases" or "edge conditions" which don't get tested very often.
As shown in the above diagram, you can address Regression Risk with specification (defining clearly what the expected behaviour is) and testing (both manual and automated), but this takes time and will add extra complexity to your project (either in the form of code for automated tests, written specifications or a more elaborate process for releases).
Regression Risk is something we'll come back to in Operational Risk.