See RegressionTesting.
Tests that forbid regression in software projects.
Regression is when an old bug shows up again.
Regression is also when a functionality that was not yet implemented and was later implemented, is missing because a bug was introduced. It is implied that getting that functionality to work again will take a lot of time and effort.
A simple way to achieve RegressionTests for bugs is to CaptureBugsWithTests. A simple way to achieve RegressionTests for functionality is to write AcceptanceTests for every functionality. AcceptanceTests are now called CustomerTests and were once called FunctionalTests by ExtremeProgramming.
AcceptanceTests can be captured by the customer using a simple tool like FitNesse.
See UnitTests, AcceptanceTests.