Regression Testing is precisely the repeated testing of an already-tested program after a modification, to catch new defects introduced or previously masked defects uncovered due to the change — in that component or in related/unrelated ones. ReTesting (often called confirmation testing) verifies that a specific previously-failed test now passes after a fix, a narrower scope than regression. Confirmation Testing is essentially the same narrower concept as retesting. Negative Testing checks that the system correctly handles invalid inputs, unrelated to change-impact verification.