Software regression

ID: 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 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.

New to topics? Read the docs here!