The most embarrassing bugs I’ve shipped all had one thing in common: the test suite was green. The code did exactly what the spec said — the spec just didn’t match what people actually needed. User acceptance testing exists for that gap. It’s where real users sit down with the software before launch and answer the one question unit tests and QA can’t: does this actually work for the people who’ll use it?
Why I can’t test my own features#
By the time a feature is ready, I’ve walked its happy path a few hundred times. I know which button to press because I built the button. That familiarity makes me the worst possible test user, and it makes QA only half a solution — QA still tests against the spec. UAT is the one stage where the question changes from “does it work as designed?” to “was it designed right?”
How a round actually goes#
Plan first: scope, timeline, who’s taking part, and what “pass” means. Vague success criteria are how UAT rounds drag on for weeks.
Then pick people who resemble your real users. Colleagues who had nothing to do with the build work well; a small group of friendly external stakeholders who understand what the product is for works even better. Write the scenarios around daily routines rather than edge cases — QA has already hammered the edges. A good UAT scenario reads like a normal Tuesday, not a stress test.
During the round, users work through the scenarios and anything that doesn’t match what they expected gets logged as a defect, including things that are technically “working as intended”. Afterwards, collect the feedback, fix what needs fixing, and if the changes were substantial, run another round rather than assuming they landed well. Then get a real sign-off against the criteria you agreed at the start.
What it buys you#
Mostly, it catches problems while they’re still cheap — before launch, instead of a patch and an apology after. There are quieter wins too. Training and support get easier, because the flows match how people actually work. And stakeholders who took part in the testing sign off faster, because by that point it’s partly their product.
At work I’ve noticed the releases that got a proper UAT round tend to be the calm ones. It’s tempting to treat UAT as a checkbox at the end of a sprint. It’s better treated as the last gate: the final moment before launch where someone who isn’t you tries to use the thing.

