Regression Testing Regression Testing is the re-running of test cases to ensure that the software still passes all of the tests it used to pass. This serves to increase our confidence that we have not introduced any new defects, but does not prove it. As part of the development process, we incorporate tests for new features into the standard regression test set. In addition, new tests are designed specifically to detect known problems that the regression tests did not catch. Wherever possible, the regression test set is fully automated, so it can be run and rerun at any time, since a seemingly innocuous change has the potential to introduce a new defect in what was thought to be an unrelated section of the code.
Regression tests consist of a combination of black box and white box tests.
Written according to the specification without knowledge of the implementation. Tests the externally visible interface. Do not need to be recoded if the implementation changes as long as the spec stays the same. Black box tests also have the advantage that they are portable across different implementations of the same API on different platforms. Written using 'insider' knowledge of the implementation in order to test known special cases, boundary cases, code paths, and limitations.