Definition of Done – How to ensure quality in a product
ByAgile requires a change in our mindset in regards to quality. We all have given lip service to quality but are we really ready to make a commitment to quality. As usual Agile concepts are simple but hard to implement.
Quality starts first of all with the backlog. The customer’s highest priority user story is what is developed first. A quality product must first meet the customer’s expectation of what is important.
We will make the assumption that we have chosen the top priority user stories for a sprint. How do we decide when we have finished the user story and it is ready to presented to the “world”.
There are three major areas of acceptance:
1. Code quality
2. Functionality
3. Presentation (usability)
1. Code quality
a) Is the design reasonable?
b) Is the user story testable?
c) Is the code well written?
d) Have we followed a consistent data model?
e) Are we following the best practices?
2. Functionality
a) Is the code unit tested?
b) Is the test data available?
c) Have we worked on creating test fixtures?
d) Does it meet the data requirements?
e) Does it meet the logic requirements?
f) Have we automated our testing?
3. Presentation (usability)
a) Is the layout correct?
b) Are all of the UI assets in place?
c) Are all of the interaction components working properly?
d) Is the data displayed correctly?
e) Are the screens being displayed in the correct order?
f) Is there valid wording all text fields?
Who is responsible for “signing” off on these acceptance criteria:
1. Product Owner
2. Quality assurance developer
3. User interface designer
4. The team
We all work together as a team to build the unit tests, automation tests and making sure the presentation in correct. The product owner creates high level acceptance tests. The quality assurance developer assures the story in testable and creates the function test tasks. The software engineers work with the QA developers when creating the unit tests and automation tests. All during the process the team is working together to make sure the user story is acceptable at all levels.
We should not wait until the end of the sprint to have the quality assurance developers begin their testing. Once a section of code has been develop the QA developer should be consulted to make sure software engineers are meeting the requirements. Once a UI component is finished the user interface designer should be consulted to make sure it meets the requirements.
When all of these acceptance criteria are meet the story is done. It is very important the team does not over commit to the number of user stories that can be completed in the sprint.
The goal is a quality product that we are proud of and an our customers are very pleased with.