<!-- Free part of the ihumane QA and testing module, generated from pro/qa-testing/ by scripts/build-free.js. Edit pro/qa-testing/, not this file. -->

# 2 · Explore: use it the way a person would

Exploratory testing means using the thing for real, as a person would, and
following what you notice, instead of only running cases written in
advance. It finds the bugs nobody thought to write a test for. You need a
running app and a browser or a terminal; if you can't get either, say so
in your report (H2) rather than skipping to the automated tests.

People don't use software the way it was built. They paste, they hurry,
they press back, they lose signal on a train. Spend your time there.

---

### E1 · Do the whole job as the person, before you read the tests
**Rule:** Open the real app and do the job from the plan (T1) end to end, as
the person would: from where they'd start (the home page, the email link,
the menu), through every step, to the result they came for. Use the
interface, not the API or the database. Look at what you see at each step,
not only whether it errors.
**Why:** Unit tests check pieces. People use the whole. The bug is often in
the joins: the button that isn't on the page, the link from the email that
404s, the success message that appears but the list that doesn't update.
**Agent trap:** calling the endpoint with `curl`, seeing a `200`, and
reporting the feature works. On the page, the form never sends that request,
because the submit button is outside the `<form>`.
**Check:** can you describe each screen you saw, from the first to the
result, with a screenshot or the page text as evidence? If you couldn't run
the app, that's a "couldn't test" line in your report, not a pass.

> **In ihumane Pro** (https://ihumane.ai/#pricing):
> - E2 · Type what people type

### E3 · Test at the edges of every limit
**Rule:** Where there's a limit, test just below it, exactly on it, and just
above it: 0, 1 and the maximum, the 100th and 101st character, the last day
of the month, the 29th of February, midnight, the moment a trial or coupon
expires, a time zone the developer isn't in. Also test none, one and many:
an empty list, a single item, more items than fit on one page.
**Why:** Bugs gather at edges, because that's where a `<` should have been a
`<=`. A person whose booking falls on the last day of the month, or whose
basket has exactly the free-delivery amount, hits it every time.
**Agent trap:** free delivery is "over £50". You test £20 and £80 and both
are right. At exactly £50.00 the person is charged delivery, and the
banner told them they'd get it free.
**Check:** for each limit in the plan, name the three values you tried
(below, on, above) and what happened at each.

### E4 · Interrupt it: back, refresh, two tabs, twice
**Rule:** In every flow, do what people do in the middle of things: press
the browser's back button, refresh the page, open the same page in a second
tab and change something in each, double-click the submit button, leave a
form half filled and come back, and open a deep link (a link straight to an
inner page) while signed out.
**Why:** People don't move in straight lines. A double-click that charges
twice, a refresh that loses a long form, or a back button that resubmits an
order costs a real person money or an hour of work.
**Agent trap:** testing checkout once, start to finish, in one tab. It
works. Pressing back on the confirmation page sends the order again, and two
tabs with different baskets show the wrong total in one of them.
**Check:** for the main flow, record what happened after back, refresh, a
second tab and a double-click. Anything that loses work, repeats an action
or shows stale data is a bug (D2 rates it).

> **In ihumane Pro** (https://ihumane.ai/#pricing):
> - E5 · Make it slow, then make it fail
> - E6 · Try it on a phone, with the keyboard, and as someone else
> - E7 · Retest the neighbours

## Summary checklist

- [ ] Did the whole job in the real app, as the person, and saw each screen.
- [ ] Tried long, accented, pasted, empty and wrong input in every field touched.
- [ ] Tested below, on and above each limit; tried none, one and many.
- [ ] Pressed back, refreshed, used two tabs and double-clicked in the main flow.
- [ ] Tried it slow, offline and with the server failing.
- [ ] Did the main job at 375 pixels, keyboard only, and as a new or limited user.
- [ ] Retested the neighbours after the last change.
