Software regression 2026-11-05
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.
Version control Created 2026-10-20 Updated 2026-11-05
Version control records identifiable revisions of files and their history, making it possible to inspect an earlier state and determine what changed. A version-control commit records a revision; a version-control branch permits a line of development to proceed alongside another; version-control merging combines changes and exposes conflicts requiring a decision. These operations make collaboration and investigation of software regressions practical.[ref]
Suppose a numerical simulation produced an unexpected result after a formula changed. Recording the version-control commit with the result identifies the exact source revision, so the old and new formulas can be compared and rerun with the same inputs. Reproducing the full calculation also requires the relevant data, software dependencies and execution settings: file history is one part of that record.