User stories for usability
User stories aren't just for discovering requirements and bugs.
User stories can be a great jumping off point for testing. If you don't already use user stories for feature discovery they're really good for that too. But what actually is a user story?
A user story is the description of an action that a user might take in an application to achieve a result. They're generally phrases in the sense of "As a type of user I will be able to do a thing in order to reason for doing the thing." For example;
"As a reader of the website I will be able to view an article in order to read it."
"As an editor I will be able to create a new article in order to add new content to the website"
"As an administrator I will be able to delete an article in order to remove old content from the website"
User stories go a long way to listing the features that a website will include. This is because everything that a website affords the user should be something that the user can do for a specific reason. There are other things that will need to be tested, but as a starting point they're great. User stories are analoguous to features.
I find that I have to expand user stories to include test cases for things that the user won't want to do - a test to make sure an error message is displayed for a failing file upload is necessary, but you won't find a user story for that.
After you've expanded a user story in to a set of tests you can run through them quickly to find whether or not a feature works according to what the user needs to do. This is a good formal test of a feature, but you can also use user stories for more informal tests.
User stories can form the basis of an unguided testing session to check a user can do all the things that they need to do in an application. These unguided testing sessions give some additional insight in to the application that wouldn't necessarily be discovered in a more formal environment.
- Without a test script the user needs to work out what to do from documentation and their own intuition. If a user can't achieve the result necessary for the test to pass this is a useful indicator of UX problems.
- By recording the user and the session it is possible to test for points where the user gets frustrated by usability problems.
- A record of the route the user takes around the application can be used to discover potention improvements by adding shortcuts around commonly used paths.
- Additional testing can be undertaken by intentionally disregarding the accepted use of a feature and trying to abuse it.
Although there isn't a formal plan, it's still important to record what was tested and when. Without a record tests will be repeated, which is wasteful.
Tests from user stories are rarely enough to assert that a feature is complete even if they're all passing. However, user story tests are very useful in the sense that they inform the rest of the software development process - they highlight areas of the application where there needs to be additional work.