Software Maintenance · Software Engineering

Regression Testing

Watch lectures

Regression Testing

Definition

Regression Testing is the process of re-running existing test cases after a change (bug fix, enhancement, or modification) has been made to the software, to verify that the change hasn't introduced new defects or broken previously working functionality.

Why Regression Testing Is Needed

Any code change — even a small one — carries the risk of unintentionally affecting other, seemingly unrelated parts of the system (especially if coupling is high). Regression testing catches these unintended side effects.

When Regression Testing Is Performed

  • After bug fixes (verify the fix works AND didn't break anything else)
  • After adding new features (verify existing features still work)
  • After code refactoring (verify behavior is unchanged)
  • As part of every maintenance change (see Maintenance Process)
  • Frequently, as part of CI/CD pipelines (automated regression suite runs on every commit)

Types of Regression Testing

1. Complete Regression Testing

Re-run the entire existing test suite — most thorough but time-consuming

2. Selective (Partial) Regression Testing

Re-run only the test cases related to the changed area (based on impact analysis) — faster, but risk of missing an indirect effect

3. Regression Test Selection Techniques

  • Retest-All — run every test case
  • Regression Test Selection (RTS) — select a subset based on code change analysis
  • Test Case Prioritization — run the most important/likely-to-fail tests first

Relationship to Other Testing Concepts

  • Regression Testing reuses existing test cases — it's not about designing new tests, but re-executing old ones
  • Heavily reliant on test automation — manually re-running large test suites for every change is impractical

Advantages

  • Provides confidence that changes are safe
  • Catches unintended side effects before they reach production

Disadvantages

  • Can be time-consuming if done as full/complete regression on a large test suite
  • Requires maintaining a well-organized, automated test suite to be practical at scale

Exam tip: Clarify that Regression Testing uses existing test cases (not new ones) and is triggered by any change to the system — a commonly confused point is thinking it's a new testing technique rather than a re-execution strategy.

Budget AppAndroid App

Pocketly on Android

Log daily food, travel, and hostel expenses instantly. Set monthly spending limits and see where your money goes without complex spreadsheets.

← All Software Engineering modules