Lesson 10 — Testing Types

Regression Testing

Regression testing re-runs previously passing tests after a code change, confirming that existing functionality hasn't been accidentally broken by new work.

Why Regressions Happen

A "regression" is a defect introduced into functionality that previously worked correctly, usually as an unintended side effect of a seemingly unrelated code change. As a codebase grows, the number of ways a small change can ripple outward and break something distant increases significantly.

Building a Regression Suite

A regression suite is a curated set of tests, typically automated, covering the application's core functionality, run after every meaningful change to catch regressions immediately rather than discovering them after release.

Common Mistakes

  • Skipping regression testing for "small" changes, which are often exactly the changes that produce unexpected side effects.
  • Letting a regression suite grow stale, never adding new tests as new features and edge cases are discovered.
  • Running regression tests manually every time when automation would make them far faster and more consistent to execute.
  • Removing a regression test simply because it's inconvenient, rather than fixing the underlying issue it's catching.

Professional Tip

Whenever a real bug is found and fixed, add a regression test specifically covering that exact scenario. This ensures the same bug can never silently reappear in a future change without immediately being caught.

Your Turn

Describe a scenario where changing one small piece of code (like a shared utility function) could realistically cause a regression in an unrelated part of an application.

Mini Quiz

What is a "regression" in software testing?