Entry criteria, exit criteria and the definition of done
The conditions under which testing may start, and the conditions under which it may stop. Agreed in advance they are protection; invented at the end they are an argument you lose. A short topic, and the part of a test plan that does the most real work.
Entry criteria are the conditions that must be true before testing starts. Exit criteria are the conditions that must be true before testing can be called finished.
Both are agreed in advance, usually in the test plan, and both are short. A typical set is four or five lines each.
Two related terms turn up in the same conversation. Suspension criteria say when you stop testing because continuing is pointless, for example when the environment is broken. Resumption criteria say what must be fixed before you start again.
The value is entirely in the timing. Agreed before the release, these are protection for everybody. Invented on the final afternoon, they are an argument you will lose.
The terms you will hear
- Entry criteria. Conditions for starting. Feature complete, pipeline green, data seeded.
- Exit criteria. Conditions for stopping. All criteria checked, no open critical defects, pack run.
- Suspension criteria. When to stop early, such as a blocker that makes further testing meaningless.
- Resumption criteria. What must be true to restart after a suspension.
- Definition of done. The team-wide version, applied per story rather than per release.
- Quality gate. Any automated version of the same idea, usually enforced by the pipeline.
Why it matters
Because without them, "is testing finished" is answered by whoever is most senior and most impatient.
For example, testing starts on a build that is not feature complete. Half the cases are blocked, the tester re-runs them three times as code lands piecemeal, and two days vanish. An entry criterion saying "all stories marked feature complete" would have turned that into a short conversation on Monday.
Exit criteria do the same job at the other end. They convert "we think it is fine" into a checkable list, and they let you say yes with evidence rather than with a feeling.
How to write a set that holds
- Keep each list to four or five lines. Long lists get waived, and a waived criterion is worse than none.
- Make every line checkable today. "Pipeline green on the release branch" is checkable. "Code quality is good" is not. The same test as a testable acceptance criterion.
- Write exit criteria you would genuinely hold. If you would ship with two open medium defects, write that, and say who accepts them.
- Include a stop rule. For example: if the environment is unusable for more than two hours, testing suspends and the release date is reviewed.
- Name who accepts an exception. Almost every release has one. A named person turns it into a decision with a paper trail.
- Report against them at the end. The summary report exists to answer these lines one by one, which makes writing it quick.
- Review them once a quarter. A criterion nobody has met for six months is either wrong or being ignored, and both need saying out loud.
An exit criterion you would waive under pressure is not a criterion. It is a wish, and everybody learns that within two releases.
A worked set
For example, here is the set for one release, taken from the plan and then reported against.
RELEASE gift cards, 4 September
ENTRY CRITERIA (all must be true before testing starts)
1 all gift-card stories marked feature complete on the release branch
2 pipeline green on that branch (unit, API, browser)
3 test data seeded and verified: 4 customers, 3 cards, 1 spent card
4 no open critical defects carried over from the previous release
5 staging frozen, with a named owner for the freeze (Dan)
status on 1 September: 4 of 5 met. data seeding late by half a day.
decision: started on the 4 that were ready, logged the delay.
EXIT CRITERIA (all must be true before testing is called finished)
1 every story's acceptance criteria checked and recorded
2 zero open critical or high defects in gift-card scope
3 the money maths charter completed with no unexplained discrepancy
4 regression pack run, with failures either fixed or accepted in
writing by Sam
5 known gaps written into the release note
SUSPENSION CRITERIA
staging unusable for more than 2 hours, or a critical defect in the
payment path. Testing stops and the date is reviewed with Sam.
RESUMPTION
environment verified by the smoke test, and the blocking defect fixed
and deployed as a new candidate.
REPORTED AT THE END (3 September)
1 met 2 met 3 met 4 met (2 accepted by Sam) 5 met
suspension not triggered. Recommendation: ship.The entry section is the interesting one. One criterion was not met, so the decision was explicit and recorded rather than absorbed silently. That is the whole point of writing them down.
How to show you know it
- A set of five and five for a real release, in the plan rather than invented afterwards.
- A criterion that was not met, with the decision. It proves the list is real and not decorative.
- A suspension rule. Most teams have never written one, and it is the line that protects a wasted week.
- A report answering each line. Being able to say "criterion four was met with two accepted defects" is what senior sign-off sounds like. It also makes the regression cycle log worth keeping.
Questions
Is this not just the definition of done?
Related, different scope. Definition of done applies to every story alike. Entry and exit criteria apply to a testing phase or a release, and usually include environment and data conditions a story would not mention.
What if nobody will agree criteria with me?
Write them anyway, put them in the plan, and circulate it. Unopposed and written beats agreed and verbal. When somebody disagrees later, you now have a document rather than a memory.
Should exit criteria demand zero open defects?
Almost never, because you will waive it and then nobody trusts the list. Say zero critical and high, and name who can accept anything else in writing.
Who owns the decision when a criterion is not met?
The release owner, usually product. Your job is to state clearly which line is unmet and what the risk is, then record the decision. It is the same split that sits behind release sign-off.