Regression Testing

Regression testing is a form of software testing that ensures that code that was previously known to be tested and bug free, is still functioning normally.

The motivation for regression testing is that bugs can be introduced or exposed in a software system as software developers refactor or write new code. Regression testing guarantees that previously developed code still works as programmers update or create new parts of the system.
As is true for other testing methodologies, regression testing builds upon finer grained testing strategies. This means that it is necessary to include [unit tests], suites of unit tests, [integration tests], and system tests as part of your regression testing strategy. 
In particular, as developers refactor or write new code, they should run their regression tests before version control checkin. This process can also be done automatically as part of the version control check in process. Moreover, it is possible to set up cron jobs to regularly run regression tests on the code base.