In praise of acceptance criteria

Newcomers to agile-style requirements gathering may think it is all about the user story. But acceptance criteria are the real star of the show.

If you’ve not come across user stories before, they are a way to capture requirements without straying into solutions mode or, worse, just creating a shopping list of functionality.

The typical format is:

As a {role} I want {feature} so that {benefit}.

Representing your requirements in this way means that developers are able to brainstorm solutions to the actual problem rather than merely building a predetermined one. It also helps everyone on the project understand who they are building the product for and what the audience’s motivations are.

Acceptance criteria

For them to be effective, user stories have to be partnered with acceptance criteria. At first glance, it appears that acceptance criteria merely tell the team when the user story is done. As a result, it can be tempting to leave them out because they seem self-evident.

I believe acceptance criteria are the most important part of the user story approach to requirements gathering. Done right, they:

  • give the project team a very straightforward definition of done
  • give the customer necessary clarity on what will be delivered (that the user story itself cannot provide)
  • give the developers clarity on what needs to be built
  • provide a ready-made test plan

Writing acceptance criteria

Although acceptance criteria can be written any way you please, the “Given-Then-When” (GWT) format (from a methodology called behaviour-driven development) applies some helpful formality to them. So, rather than a criterion such as:

User must enter correct email address

we can explain it like so:

GIVEN the user has entered their email address incorrectly
WHEN they submit the login form
THEN the login screen is still displayed
AND an email incorrect message is displayed
AND their email address is still displayed so it can be corrected

So much better!

If you’re new to agile requirements gathering, why not give GWT acceptance criteria a go?