A test specifically designed to verify that a previously fixed bug hasn't reappeared.
A regression test exists to catch a defect that was already fixed once and has come back. It is defined by its purpose rather than its mechanics: the same assertion that proves a new featureFeatureProduct SpecificationA product capability or featureView reference → works becomes a regression test the moment its jobJobUserJob To Be Done: what the user is trying to accomplishView reference → shifts to guarding against the reintroduction of a known failure. The tension built into the practice is that every bugBugProduct SpecificationA defect or unexpected behaviourView reference → deserves a test, every test stays forever, and a suite that only ever grows eventually becomes the thing slowing the team down.
The IEEE defines regression testing as the selective retesting of a system or component to verify that modifications have not caused unintended effects and that it still meets its requirements (summarised on Wikipedia). The idea is as old as software maintenance: once teams could change shipped code, they discovered that a fix for one problem routinely broke something nearby, and that old faults re-emerged after being patched.
A durable discipline crystallised around that observationObservationUser ResearchA specific behaviour or statement observedView reference →: add a test for every bug. When a defect is found, you first write a failing test that reproduces it, then fix the code until the test passes, and the test stays in the suite permanently. The reproduction becomes a tripwire. If the same defect is ever reintroduced by a later change, the test fails before the bug reaches a user.
The field also learned the cost. Wikipedia notes that fixes are often fragile, correcting the narrow case first observed while leaving general cases open, which is exactly why the guarding test earns its keep. The counter-pressure is suite bloat: a regression set that accretes a test per bug for years grows slow and noisy, so mature teams treat regression-suite curation, pruning duplicates and merging overlapping cases, as ongoing maintenance.
A payments team ships a discount-code feature. A user reports that stacking two percentage codes produces a negative total. The engineer reproduces it, writes a test asserting that applyDiscounts(["SAVE20","SAVE15"]) floors at zero, watches it fail, then fixes the clamp logic until it passes.
That test now lives in the suite forever. Eight months later, an unrelated refactor of the pricing engine reorders how discounts compound. The negative-total test goes red in CI before the change merges. Nobody remembered the original incidentIncidentDevOps & PlatformA production incidentView reference →, and nobody needed to. The regression test carried the memory of a past failure into a present that had forgotten it.
regression_test_addresses_bugRegression TestaddressesBugcross-domain.In the Unified Product Graph, Regression TestQuality AssuranceA regression test sits in the quality and testing region as a specialised member of a suite. It joins its collection through regression_testTest SuiteincludesRegression Testhierarchy, traces back to its origin defect through test_suite_includes_regression_testRegression TestaddressesBugcross-domain, and connects forward to the ship gate through regression_test_addresses_bugRegression TestguardsReleasecross-domain. That triangle, suite to bug to release, is what makes regression coverage queryable: the graph can show which past defects are still guarded, and which releases ship without that net.regression_test_guards_release
Type-specific fields on BaseNode
regression_scopestringScope of regression coverage (e.g. "checkout flow", "auth module")
automatedbooleanWhether the regression test is automated
last_passstringISO date of last passing run
recent_failuresnumberNumber of failures in recent runs
idstringrequiredUnique identifier (UUID)
typeNodeTyperequiredDiscriminator for the entity type
titlestringrequiredDisplay name
descriptionstringOptional detailed description
statusstringLifecycle status
tagsstring[]Freeform tags for filtering
3 edge types connected to this entity.
test_suite_includes_regression_test