Retesting confirms that a SPECIFIC defect has been fixed by re-executing the failed test case on the new build; Regression testing checks that recent changes have NOT broken existing, previously-working functionality.
RETESTING (confirmation testing) re-runs the exact failed test(s) with the same data to verify the reported defect is now resolved — it's planned and targets known fixes. REGRESSION testing re-runs a broader set of existing tests around the changed area (and beyond) to ensure the fix/new feature didn't introduce side-effect defects — it's often automated because it repeats every release. Key differences: retesting is for confirmed fixes (same test, same data); regression is for unintended side effects (existing tests). You cannot automate retesting of an unfixed defect. Both run after changes; confusing them is a classic interview trap.
After a login fix: RETESTING re-runs the exact failed 'invalid password' case to confirm the fix; REGRESSION re-runs the whole authentication + session suite to ensure the fix didn't break signup or logout.
After a developer fixes a defect, what's the difference between retesting and regression testing, and do you do both?