Q15 of 38 · Manual & exploratory
Explain the difference between retesting and regression testing with an example.
Short answer
Short answer: Retesting verifies a specific bug fix works — re-run the failing test on the fixed build. Regression testing verifies the fix didn't break anything else — re-run a broader suite around the affected area.
Detail
Retesting is targeted at the bug. The bug had a failing reproduction; the developer claims a fix; the tester re-runs the exact reproduction on the new build to confirm it now passes. Single test, single purpose.
Regression testing is targeted at the surroundings. The fix changed code; that change might have unintended side effects; you run a broader suite (or impacted-area subset) to catch any side effects.
A worked example: a checkout bug — applying a coupon for a free item still charged shipping. Retesting: enter the same scenario, verify shipping is now zero. Regression: re-run checkout flows for paid items (was shipping logic broken for everyone?), other coupon types (did the fix affect them?), tax calculation (sometimes wired into the shipping logic), and order totals at boundary cases.
Two practical points worth raising: retesting is non-negotiable; regression scope is a judgement call. You always retest; you scope regression based on the change's blast radius. And a passing retest doesn't mean the bug is fixed for good — only that this specific reproduction passes. Regression often catches "fixed in path A, still broken in path B."
Most teams automate regression and let manual testers focus retest effort on the specific defect. CI's job is to make regression cheap so the human can spend time on retest plus exploratory.