Example User Stories
User Story 1
TITLE
Save to Invenias Inbox - Add Refresh Button
DESCRIPTION
UX:
https:/somepage.com/userstory1_designs
AS A User
I WANT to be able to refresh the list of emails in my Invenias Inbox
SO THAT I can see an up to date list of emails without having to leave the page or having to refresh the browser, thereby saving me time and retaining my email checkbox selections
IN SCOPE:
New "Refresh" button (as per InVision) - Right aligned - This should refresh the inbox list
OUT OF SCOPE:
Filter Button - we currently don't have plans to implement this
ACCEPTANCE CRITERIA
If an email is selected before refresh, ensure the same email is selected after refresh
If the selected email is no longer in the list after a refresh, no email should be selected
Persist the checked state of the "ALL" checkbox before and after refresh
Persist the checkled state of all emails before and after refresh
If new emails are added to the list as a result of the refresh, their checked state should be the same as the checked state of the "ALL" checkbox
Comments on Above User Story
This is a simple user story with a User Experience / User Interface design. The design has an element that may cause confusion (a filter button in this case), so I've added the In-Scope and Out-of-Scope contexts here for clarity. You may not need them for most stories as just listing what is needed will usually be enough. Although not done so here, the Aceptance Criteria could be written using BDD Given.. When.. Then.. scenarios (see below for an example).
My Perspective:
Note that this story doesn't have images. This is to improve clarity and allow the team to focus on the requirements. Where images would add clarity, then it's fine to include them in a work item. Often adding a link to them or adding them as an attachement is better though, as it allows the team to really focus on the story's requirements.
Example BDD Scenario Acceptance Criteria
ACCEPTANCE CRITERIA
GIVEN Email X is selected
AND Email X has not been removed from the Company Inbox by another process
WHEN the new refresh Buttion is pressed
THEN Email X should be in the list
AND Email X should still be selected
GIVEN Email X is selected
AND Email X has been removed from the Company Inbox by another process
WHEN the new refresh Buttion is pressed
THEN Email X should not be in the list
AND no email should be selected
GIVEN the ALL checkbox is selected
WHEN the new refresh button is pressed
THEN the ALL checkbox should be selected
GIVEN the ALL checkbox is not selected
WHEN the new refresh button is pressed
THEN the ALL checkbox should not be selected
GIVEN one or more emails are checked
WHEN the new refresh button is pressed
THEN the same emails should have the same checked state as before
GIVEN the ALL checkbox is selected
WHEN the new refresh buttoin is pressed
THEN any new emails added to the list are checked too
GIVEN the ALL checkbox is not selected
WHEN the new refresh buttoin is pressed
THEN any new emails added to the list are not checked
When writing as BDD, you may have spotted that there are, in fact, seven acceptance criteria, whereas before there were only five. Why did I add two extra acceptance criteria? BDD is a structure that gets you to define the preconditions, the action or trigger that occurs and the results. By using this structure, some of the compound acceptance criteria (3 and 5 in our case) have to be expanded to be unambiguous. Its exactly this process of removing ambiguity that makes BDD such a powerful tool for both developing and testing work items.