Acceptance Criteria, also called "Conditions of Satisfaction", are items that a user story must meet in order to deliver the functionality agreed to by the Product Owner. They provide the necessary details to define the boundaries of a user story, but in contrast to Definition of Done, Acceptance Criteria are unique and specific to each story.
Acceptance Criteria provide the outline for developers and testers to understand functional and nonfunctional aspects of a user story. They aid in estimation and evaluation of whether a story is completed and working as intended.
Acceptance Criteria can be written in many different formats and teams may prefer one format over the other. The key here is to agree as a team what makes the most sense based on the type of requirements, so that the Acceptance Criteria result in mutual understanding between the Product Owner and development team.
Verification Checklists
Given-When-Then
Truth Tables
When writing Acceptance Criteria, it is important to take different team members’ opinions into account to gain a more well-rounded view of the story. Therefore, we suggest writing Acceptance Criteria as an entire Delivery Team, so all parties interpret the story similarly and there are no surprises. As an alternative, one member of the team could write a draft of the Acceptance Criteria, and then hold a meeting with the PO and the rest of the development team (using the Three Amigos Concept) to groom, review, and finalize the Acceptance Criteria for the story together. In either case, the PO must give the final approval.
It’s important that Acceptance Criteria are written, agreed upon, and finalized with the Product Owner before estimation and story pointing occur. Acceptance Criteria give the team insight into what the story requires, allowing developers to consider dependencies and risks to give more accurate levels of story pointing.
Changes to Acceptance Criteria after a sprint begins should be minimized as much as possible. Generally, if the update to the Acceptance Criteria is large and would change the originally pointed scope, the team should develop the original story as planned and create a new story to capture the additional requirements. The new story can then be prioritized and added to a future Sprint without putting the current Sprint’s goal at risk. Alternatively, if the new requirements are absolutely necessary, the entire story can be pulled from the Sprint and brought into a future Sprint that has enough capacity to complete it.