User story is one of the primary development artifact for the XP project teams. A user story contains just enough information so that development team can reasonably give estimate about completing, tester can discuss how it will validated and customer can see its value.
One of the common question that we hear most of the time is, how user stories are different from use cases. User stories are much simpler than use cases. User stories are very easy to create, discuss and develop. They also do not contain any technical details.
Typically good user stories are defined in the following format
As a <role> I would like to do <action> so that <purpose>
While discussing User Stories, you should make sure that they are not very big. A big user story leaves the chances of ambiguity and absence of clarity in the mind of development team. Ideally, you should be able to break user stories so that it can be finished by two person in a week’s time.
If you are working as a tester in a agile project and see any story taking longer to finish, consider this as an opportunity to ask question and see if this can be broken by functionality or platform or in any other way.
Once a story is broken to the last level, this story is assigned some points based on how long it will take a pair of programmer to finish it. These user stories are than broken down in tasks and assigned to appropriate developers. Typically in the start of project, you create a deck of user stories and for each iteration or sprint you choose stories based on their priority and time it would take to complete them.
User stories are often written on the paper medium like index cards or post-its. This also ensures that there is no unnecessary details on the user stories. Once development team decides on the stories that will be developed in a sprint, it is further divided into tasks and resources are allocated accordingly.
Most of the time, these user stories are defined only in acceptance term. For example,
As a user I should be able to register with the site so that I can receive newsletter is a good example of user story. As a tester, it should be your job to find out negative scenarios and assumptions in this story. For example, what information user should provide to register? Are there any distinction between optional and required information? Should we validate email address of user before registering?.. and many more.
Remember, one of the main reason for using user stories is to have an invitation to further conversation. According to Ron Jeffries, every user story in XP have three components – Cards (Physical Medium) , Conversation (Discussion Surrounding them) and Confirmation ( tests that verify them). One of the widely used acronym for good user stories is called INVEST. Getting right user stories is essential for the success of any agile project and hence this acronym INVEST is used to justify the investment that you make in creating user stories.
According to this acronym,
* I stands for independent
* N for negotiable
* V for valuable
* E for Estimable
* S for small and
* T for testable
As a tester in agile projects, it is very important for you to make sure that every story you work on conforms to the characteristics defined by these terms. There are good reasons for doing this.
Stories should be independent so that it is easier to plan them. Consider the situation where in you need to decide stories to be included in the Sprint and most of the stories are dependent on each other.
Stories should be negotiable, user stories are not contract with the customer they are a platform to clear understanding between everyone involved. Any one should be able to challenge its intention as well as implementation.
User stories should be valuable to some one. You will have situation where in your stories will not bring direct value to your customer, but it should bring value to some one, it could be developer or tester. For example As a tester I should be able to access application below UI layer so that Automation is not dependent on the UI. As oppose to We should have functionality of accessing application with out UI.
Stories should be estimable, remember we are not saying accurate estimate, but it should be
reasonable estimate. Since stories are negotiable, these estimates can change but initially it should be possible to estimate reasonable on how much time it would take to complete a story.
Most of the characteristics defined above make sure that user stories are clear and small. This is very important, most of time big stories are also vague. It is also possible to keep team moving with smaller stories as it gives a sense of accomplishing or finishing something. Typically, you should try to complete at least 2 stories per sprint (two programmers and one tester for two week).
Since user stories are requirements which drives the development you should make sure that these stories are testable. You can find this by looking for some characteristics like ambiguity, clarity etc which you might have used in verifying requirement in traditional development model.
Remember, user stories are the crux of agile software development methodology and as a tester you should make sure that your team INVEST in user stories.