= Software regression
A <software regression> is a loss of previously working behavior after a change. The behavior may concern <outputs>, accepted <inputs>, performance, reliability or compatibility. A regression is defined against an intended contract and earlier behavior, rather than every difference from an old implementation.
For example, a parser update can correctly handle a new syntax form while accidentally rejecting an older supported form. A <regression testing>[regression test] records a case and its expected behavior so that the failure is detected on later changes. Another change can leave <outputs> unchanged but make a common workload much slower; that requires a performance criterion and representative workload. Passing an existing suite only supplies evidence for its covered cases and oracles, so fixing a discovered regression often includes adding a focused new test.
Back to article page