The Definition of Done is an agreed upon set of items that must be completed before a project, user story, test case, deployment steps etc. can be considered complete. It is applied consistently and serves as an official gate separating things from being “in progress” to “done.”
- Code have to be written by following defined code formatting.
- Comments have to be added to explain complex solutions.
- Implementation have to be complete within defined code complexity levels
- Any other third party solution(Library, Framework etc.) which endangers CDP, should not be used in implementation.
- Before committing implementation, written code/solution have to be reviewed by at least other one developer.
- If implementation needs integration with another module and the module has not implemented during implementation, mock data or mock module should be used to test implementation.
- Unit tests have to be written by developer.
- All edge cases have to be tested by the developers.
- If it is needed, to keep CI/CD pipeline alive, necessary updates have to be done on CI/CD configuration for tests.
- Implementation has to be tested by the testers before deployment.
- Before deployment, tester has to complete all regression tests to be sure that implementation is not effects any other modules.
- Before deployment, all automated tests have to be run. If test coverage below defined coverage percentage, implementation have to be rolled back.
- If implementation uses third party solutions/app, the packages should be added for deployment environment(Docker or Yocto scripts)
Definition of Done may not be covered all items which is listed above. Project members have to select necessary items for their and customer needs. The items can be extended and teams can add their own custom rules to team’s definition of done list. The most important rule is, each team member has to be beware of the definition of done and follow the rules.