Lesson 3 — Foundations

Manual vs Automated Testing

Manual testing relies on a human executing test steps by hand, while automated testing uses scripts and tools to run tests repeatedly and consistently without human intervention.

Manual Testing

A person follows a set of test steps, observing and judging the results directly. Manual testing is well-suited to exploratory testing, usability evaluation, and situations where human judgement about "does this feel right" is genuinely needed.

Automated Testing

Automated tests are scripts that execute test steps and check results programmatically, without a human clicking through each step. They excel at repetitive, well-defined checks that need to run frequently — like confirming a login form still works after every code change.

When to Use Each

Neither approach replaces the other entirely. A healthy testing strategy usually combines both: automation for stable, repetitive checks (regression testing), and manual testing for exploratory work, usability, and newly built features still likely to change.

Common Mistakes

  • Trying to automate every single test case, including ones that change frequently or need genuine human judgement.
  • Assuming automation eliminates the need for any manual testing entirely.
  • Underinvesting in automation for stable, repetitive regression checks, wasting tester time re-running the same manual steps release after release.
  • Writing automated tests that are too brittle, breaking on trivial UI changes unrelated to actual functionality.

Professional Tip

A useful rule of thumb: automate tests that are repetitive, stable, and run often (regression suites); keep exploratory testing, usability checks, and rapidly changing new features in the manual testing bucket, at least until they stabilise.

Your Turn

List three test scenarios for a login form that would be good candidates for automation, and three that would be better suited to manual, exploratory testing.

Mini Quiz

Which type of testing is generally best suited to a stable feature that needs to be re-checked after every code change?