QA & Testing · Guide

Manual Testing

The testing a script cannot do — structured exploration, and keeping regression coverage from swallowing the schedule.

— min read QA & Testing

What Automation Cannot See

An automated test asserts what you already thought to assert. It will happily pass on a page where the layout is broken, the copy is nonsense and the flow makes no sense — because none of that was in the assertion.

Manual testing is not the cheap version of automation. It is the part that requires judgement: whether this feels wrong, whether the error message helps, whether a real person would give up here. Automation covers repetition; humans cover surprise.

Exploratory Testing

Exploratory testing is not clicking around. It is simultaneous learning, test design and execution: you form a theory about where the software is weak, probe it, and let what you find decide the next probe.

StructureWhat it does
CharterA written mission: explore X using Y to discover Z
Time-box60–90 minutes, so it ends with findings rather than drifting
Session notesWhat you tried, what you saw, what you did not get to
DebriefTurns notes into bugs, new cases and areas to revisit

Heuristics give a session traction. Follow the data through the system and back. Interrupt things — refresh mid-submit, hit back, lose the network, open two tabs. Push the boundaries the spec left vague: the empty state, the enormous input, the duplicate click, the stale session.

The best bugs come from combinations: a valid action in an unusual order, or a state the designer never drew. That is exactly the space a scripted test never enters, because a script only walks the path it was given.

Regression Testing

Regression testing answers one question — did this change break something that used to work — and it is where manual effort quietly balloons. Every release adds cases; nobody removes any; eventually the suite cannot be run in the time available.

TacticEffect
Risk-based selectionTest what changed and what depends on it, not everything
Automate the stable coreThe cases that never change are the cheapest to hand over
Keep a smoke setTen minutes that decide whether a build is worth testing
Retire dead casesA case for a removed feature is pure cost
Add a case per bugThe cheapest way to stop the same defect returning

Automation earns its place here more than anywhere else: a regression pack is repetitive, well specified and run constantly — which is precisely what machines are good at and people are bad at. Reserve human time for the exploration that only a person can do.

Interview Questions

Why keep manual testing when you have automation?

Automated tests only assert what someone already anticipated. Judgement calls — is this confusing, does this error message help, would a real user give up — need a person.

What makes exploratory testing structured?

A charter stating what to explore and what to look for, a time-box, session notes, and a debrief that turns findings into bugs and new cases. Without those it is just clicking around.

How do you stop a regression suite becoming unrunnable?

Select by risk rather than running everything, automate the stable core, keep a short smoke set, retire cases for removed features, and add a case for each bug found.

Which tests are the best automation candidates?

Repetitive, well-specified, frequently run and stable — the regression core. Anything requiring judgement about feel or clarity stays with a person.

Where do the interesting bugs usually come from?

Combinations and interruptions: a valid action in an unusual order, a refresh mid-submit, two tabs, a lost connection, a stale session — states nobody designed for.

What goes in session notes?

What you tried, what happened, what looked suspicious, and what you did not get to. It makes an exploratory session reviewable and repeatable rather than personal knowledge.

Quick Quiz

1. Exploratory testing is best described as…
2. A charter defines…
3. The best automation candidates are…
4. A smoke test set exists to…
5. After fixing a bug you should…