In Agile software development user stories are used as a tool to define requirements. The user story describes the role of the user, what they want and why. User stories may follow several templates. An example of a popular user-story template is the following format: “As you user, I want to be able to … to accomplish “benefit”.
Acceptance Criteria for users stories help to ensure Quality. The acronym INVEST is a mnemonic to help remember a checklist of acceptance criteria to assess the quality of a user story. If a user story doesn’t meet one of these criteria, the Agile team should consider a rewrite. A good user story should be:
"I" ndependent (of all others. It should be self-contained, in a way that there is no inherent dependency on another user story)
"N" egotiable (not a specific contract for features. A user story can always be changed and rewritten up until they are part of a sprint)
"V" aluable (A user story must deliver value to the stakeholders.)
"E" stimable (The team must be able to estimate the size of a user story)
"S" mall (so the user story can fit within a sprint)
"T" estable (the user story must provide the necessary information to make test development possible)
Doneness Criteria help to ensure quality of the implemented user story at end of sprint. The Definition of Done (DoD) is a list of criteria that must be met before the user story or product increment is considered completed. Many teams work toward a potentially shippable increment (PSI) of the product.
Example DoD criteria or questions include
- Is the code fully tested (unit, functional, performance, etc)
- Has the code been reviewed and documented in a static analysis?
- Does the code work in an integrated environment? Does it break anything else?
- Is it fully specified and documented?
- Does it comply with standards and regulatory requirements?
Iterative Product Development
Iterative Product Development is a fundamental concept in Agile that also ensure quality. Incremental development reduces the risk of late discovery of coding defects or bad design decisions. An iterative approach reduces the cost of quality because the later you find defects the more expensive. Quality is focused on the regular iteration assessments that provide continuous insight into the product development.
In summary, Agile uses three concepts with a strong focus on quality assurance. Agile professionals are taking to heart what quality professionals have been saying for decades. For that reason, the role of quality professionals needs to evolve to reflect this new reality.