Definition of Done
A task (issue) is not done until all of the following are complete:
- All acceptance criteria are met
- Unit test coverage > 70%
- Functional tests passed
- Limitations are documented
- Documentation is updated
- Pull request created
- Peer code review is complete
- Development branch merged
- Issue status set to Closed
All acceptance criteria are met
Acceptance criteria are agreed when preparing to work on a task. This step in the DoD checklist closes the loop.
Unit test coverage > 70%
Unit testing is a quality assurance measure that not only demonstrates that the code works correctly at the end of the task, but can also be run on a regular basis to check that no later changes cause earlier code to fail. The target coverage is 70%+ on the statement coverage definition.
Functional tests passed
As well as automated unit tests, the code should be tested manually to ensure that all functional goals have been achieved. This might involve, for example, running through all the use cases defined at the start of the task to check that the flow of actions is satisfactory.
Limitations are documented
Where a task is complete as planned but there are known limitations or improvements that could be made in later tasks, these should be documented in a transparent way, For code modifications, this might include the use of ToDo comments, or the creation of new, lower-priority tasks in the project backlog.
Documentation is updated
Documentation must be updated following the completion of a task and not left until later. This includes the creation of new documentation and updating existing documentation to reflect changes made during the task.
The next two steps constitute the code review stage
Pull request created
To create a pull request, follow the GitHub instructions
The request will be reviewed and the issue may be reverted for further attention if any problems are discovered.
Peer code review is complete
The code must be approved by another member of the development team to ensure that it follows good practice and agreed standards.
The next two steps are performed by the project manager once the code review is complete
Development branch merged
Merging branches is the responsibility of the product owner or someone with delegated responsibility. If there are no conflicts, GitHub can merge the development branch automatically. However, if conflicts are discovered, they need to be resolved manually. This job may be delegated to a developer.
Issue status set to Closed
Once all development tasks have been completed, the task status should be set to Complete in GitHub.