Skip to main content

User story

A User story is a small piece of valuable functionality used for planning and prioritising work on an agile team.

A good User story should:

  • Deliver a demonstrable piece of functionality
  • Have testable acceptance criteria

and be

  • Independent
  • Negotiable
  • Valuable
  • Estimatible
  • Small
  • Testable

Story format​

A good User Story should describe the Who (<actor>), What (<feature>) and Why (<benefit>).

As an <actor>
I want a <feature>
So that <benefit>

Example:

As an mobile bank customer
I want to see balance on my accounts
So that I can make better informed decisions about my spending

Acceptance criteria using Cucumber language​

Acceptance Criteria are conditions that a (software) product must satisfy to be accepted by a user, customer or other stakeholder.

These are best written using the Cucumber language and Gherkin syntax.

Feature: Some important feature

Scenario: Get something
Given I have something
When I do something
Then I get something else

Scenario: Get something different
Given I have something
And I have also some other thing
When I do something different
Then I get something different

… etc., with more scenarios as required.

Example:

Feature: Some important feature

Scenario: Do not show balance if not logged in
Given I am not logged on to the mobile banking app
When I open the mobile banking app
Then I can see a login page
And I do not see account balance

Scenario: Show balance on the accounts page after logging in
Given I have just logged on to the mobile banking app
When I load the accounts page
Then I can see account balance for each of my accounts

Further reading​