Regression testing

The evident exception is the GUIs regression testing, which normally must be executed manually.

In most software development situations, it is considered good coding practice, when a bug is located and fixed, to record a test that exposes the bug and re-run that test regularly after subsequent changes to the program.

[7] Common strategies are to run such a system after every successful compile (for small projects), every night, or once a week.

Regression testing is an integral part of the extreme programming software development method.

Though it is expensive as it needs to re-run all the cases, it ensures that there are no errors because of the modified code.

[10] In a software development environment which tends to use black box components from a third party, performing regression testing can be tricky, as any change in the third-party component may interfere with the rest of the system (and performing regression testing on a third-party component is difficult, because it is an unknown entity).

Unit tests exercise individual functions, subroutines, or object methods.

A functional test may be a scripted series of program inputs, possibly even involving an automated mechanism for controlling mouse movements and clicks.