4 Definition of Done
John Anderson edited this page 2022-10-17 15:09:32 -04:00

With software, writing the code is only the first part. There's a lot more involved than just fixing a bug or adding a feature. For example, every bug fix should also have a regression test, or new features must have unit tests and documentation. The definition of done is how we encapsulate these associated requirements.

Definition of Done is a shared understanding of what it means for work to be completed. The following definitions of done have been established for the Nautobot project.

User Stories

User stories represent the work. This includes bugs. Bugs only differ in that they are typically unplanned, where as user stories are planned work.

For a user story to be done, the following criteria must be satisfied:

  • Produced code for required functionality
  • Assumptions of the User Story met
  • Project builds without errors
  • Unit tests written and passing; for bugs a regression test(s) must be added
  • Integration tests written and passing; for bugs, if applicable, a regression test(s) must be added
  • Documentation updated with what functionality exists, how is it accessed and used and built documentation has been proof-read
    • Any configuration settings or build changes documented
    • Developer documentation has been updated
    • User-facing documentation has been updated
  • Refactoring, if any, has been completed
  • Peer Code Review performed and at least one approval captured (other than the code author)
  • For feature work
    • Feature ok-ed by Product Owner
    • Feature is tested against acceptance criteria

Sprints

Assert if all the implemented features fulfill their documented criteria and if all the required conditions were met:

  • DoD of each single User Story in the Sprint are met
  • All "to do" items have been resolved
  • All unit, integration, functional, and documentation tests are passing
  • Product backlog has been updated
  • Project deployed on the test environment identical to production platform
  • Tests on devices/browsers listed in documentation passed
  • Tests of backward compatibility passed
  • All outstanding bugs in the Sprint are fixed
  • Sprint marked as ready for the production deployment by the Product Owner

Releases

Assert that everything is wrapped prior to releasing if the following conditions are met:

  • All stories and bugs have been completed
  • All unit, integration, functional, and documentation tests are passing
  • All acceptance criterias are met
  • All "to do" items have been resolved
  • Assert that no unintegrated work in progress has been left in any development or staging environment.
  • All CI/CD pipelines are functioning and passing
  • Sign off from the team: Core developers, contributors, stakeholders, product owner, etc.