Define done before you build.
Good acceptance criteria are specific enough that a developer, a tester and a customer would all agree on whether they're met.
Given · When · Then
Given a customer is logged into the portal, When they request a voicemail PIN reset, Then a new PIN arrives by SMS within a minute, and the old PIN stops working.
Testable
A clear yes or no. No “should work well”.
Specific
Numbers, states and messages, not adjectives.
Covers the unhappy path
Wrong number? Expired session? SMS fails?
Written together
PM, developer and tester agree before building.
Source: Martin Fowler ↗
If you can’t test it, it isn’t done.