Skip to content

Development and testing processes

Andrew Post edited this page May 12, 2017 · 10 revisions

Progression of our software through development and testing

  • Develop code in the code editor of your choice, following the Development guidelines and requirements. Write unit tests for your code, and make sure all of the tests pass.
  • Conduct system tests of the specific project being changed, using synthetic data. The development environment is entirely free of actual patient data. Make at least some of the system tests automated, and all tests must pass. For Java code, for some tests you can launch the project in embedded tomcat to test manually.
  • Submit a pull request containing your changes. The pull request should briefly describe the changes, especially any public API changes.
  • Project owner reviews your pull request, and either asks for changes or approves it. When changes are made, update the description of the pull request as needed.
  • Once approved, project owner merges your pull request.
  • Project owner creates an alpha or beta release. Depending on team needs, the project owner does not necessarily have to release after every merge.
  • Project owner announces release to project team on the aiwdev mailing list. The announcement should summarize the change description(s) provided in the pull requests.
  • Project owners of any dependent projects update and re-release their projects if they depend on the newly released project.
  • Provisioning owner updates the current development branch of the provisioning project to depend on the new release(s).
  • Provisioning owner releases a new alpha or beta version of provisioning.
  • Vagrant owner updates the current development branch of the vagrant project to depend on the new provisioning release.
  • Build VMs to conduct an initial round of integration testing and validation of the new changes.
  • Provisioning owner provisions the changes to our QA environment, which supports testing with real data. Conduct integration testing and validation with real data.

Clone this wiki locally