BA Playbook 03
Acceptance Criteria Playbook
How to write acceptance criteria people can actually build and test.
Surya · August 8, 2026 · 4 min read · 10 practices
For Business Analysts, QA professionals reviewing requirements before sprint, Developers who inherit ambiguous tickets and Product Owners writing their own stories.
"System should process the trade correctly." Reads fine on a first pass. Then development asks what "correctly" means, and QA asks how they're supposed to prove it, and the sentence stops sounding fine at all — it sounds like something three people are about to interpret three different ways. Acceptance criteria exist to remove exactly that kind of interpretation. Not to describe intent nicely. To describe behaviour precisely enough that two engineers, working alone, would build the same thing from the same sentence.
01Fix 01
Say what should be observable, not what should be true
"Correctly" is not a behaviour. It's a feeling everyone happens to share until they don't.
Fix 01
Say what should be observable, not what should be true
"Correctly" is not a behaviour. It's a feeling everyone happens to share until they don't.
The shift
Why it helps
The rewrite doesn't say more. It says something a person can actually check — pass or fail, no discussion required.
02Fix 02
Given / When / Then is a discipline, not a formatting rule
Each part is doing a specific job. Skip one and the criterion stops being testable.
Fix 02
Given / When / Then is a discipline, not a formatting rule
Each part is doing a specific job. Skip one and the criterion stops being testable.
The flow
Why it helps
Most vague acceptance criteria are missing one of these three, usually the "Given." Without a starting condition, "when X happens, then Y" could mean almost anything.
03Fix 03
Write the negative scenario, not only the happy one
A criterion that only describes success hasn't told anyone what failure looks like.
Fix 03
Write the negative scenario, not only the happy one
A criterion that only describes success hasn't told anyone what failure looks like.
The shift
Why it helps
"Proper error message" is not a message. Someone still has to invent the actual wording during testing, which is the wrong time to be inventing it.
04Fix 04
Boundary conditions are where the bugs actually live
Nobody breaks software in the middle of a range. They break it at the edge.
Fix 04
Boundary conditions are where the bugs actually live
Nobody breaks software in the middle of a range. They break it at the edge.
At a glance
- What happens exactly at the limit?
- What happens one unit above it?
- What happens one unit below it?
- What happens at zero, or empty, or none?
Why it helps
"Orders above $1M need approval" sounds complete until someone asks about an order of exactly $1,000,000.00. That question should come from you, not from a defect ticket.
05Fix 05
Define the error behaviour, not just the existence of an error
"Show error if invalid" describes that something happens. It doesn't describe what.
Fix 05
Define the error behaviour, not just the existence of an error
"Show error if invalid" describes that something happens. It doesn't describe what.
The shift
Why it helps
Four different systems — UI, API, logging, audit — all need to agree on what "invalid" actually does. One vague line leaves all four guessing separately.
06Fix 06
A business rule and an acceptance criterion are not the same sentence
One describes how the business works. The other describes how the system proves it.
Fix 06
A business rule and an acceptance criterion are not the same sentence
One describes how the business works. The other describes how the system proves it.
The shift
Why it helps
Blending the two makes both harder to maintain. When the threshold changes next year, you want to update one rule — not go hunting through test scripts for every sentence that mentioned it.
07Fix 07
Vague adjectives are where ambiguity hides in plain sight
Every one of these sounds specific enough to pass review. None of them are testable as written.
Fix 07
Vague adjectives are where ambiguity hides in plain sight
Every one of these sounds specific enough to pass review. None of them are testable as written.
"The page should load quickly" is the classic case. A measurable performance target is fine when a real one exists — but bolting a number onto every sentence just to sound precise is its own kind of vagueness. Only add a target where someone can say why that number, specifically.
At a glance
- correctly
- properly
- quickly
- appropriately
- normally
- efficiently
- user-friendly
Why it helps
Each of these gets re-decided by whoever is testing it, under time pressure, usually differently from what the business actually meant.
08Fix 08
Leave the implementation to the people implementing it
A criterion that specifies technology has usually stopped specifying business behaviour.
Fix 08
Leave the implementation to the people implementing it
A criterion that specifies technology has usually stopped specifying business behaviour.
The shift
Why it helps
The 5-minute rule is the business's decision. Redis is not. Naming the technology in the criterion just means it's wrong the day engineering picks a different one.
09Fix 09
One criterion, one behaviour
A criterion that tries to prove four things at once can't fail cleanly when one of them breaks.
Fix 09
One criterion, one behaviour
A criterion that tries to prove four things at once can't fail cleanly when one of them breaks.
The shift
Why it helps
When AC1 through AC3 exist separately, a test failure points at exactly one of them. The sprawling version just tells you something, somewhere, went wrong.
10Fix 10
Get QA into the conversation while you're still writing these
The person who has to prove a criterion false is the best judge of whether it can be.
Fix 10
Get QA into the conversation while you're still writing these
The person who has to prove a criterion false is the best judge of whether it can be.
Why it helps
A criterion that survives a QA read-through before the sprint starts is a criterion that won't come back as a clarification question mid-sprint, when it costs more to answer.
Pro tip — If QA reads a criterion and can't describe how they'd fail it, that's not a QA problem — it's an unfinished criterion.
"Correctly" is not a requirement.
It's a placeholder for one.
Every acceptance criterion should survive one test: could two engineers, working alone, build the same thing from it? If the answer depends on both of them guessing the same way, it isn't finished yet.
Take this with you
Acceptance Criteria Quality Checklist
ACCEPTANCE CRITERIA QUALITY CHECKLIST [ ] Observable [ ] Testable [ ] Specific [ ] Business rule understood [ ] Happy path covered [ ] Negative path covered [ ] Boundary conditions considered [ ] Error behaviour defined [ ] Data expectations clear [ ] No vague adjectives [ ] No hidden assumptions
Get new playbooks first.