We rely on the contributors, reviewers, core-dev-team/maintainers and community in general for doing quality checks on Bahmni. We heavily focus on test automation to ensure existing features continue to work while we build new ones. 

Typically we focus on functional testing over non-functional testing (see Appendix: Types of Testing in software projects below)  in every release. We mostly rely on the community to provide feedback on usability. Sometimes, when a completely new feature is built, we would also do some non-functional testing especially usability testing. 

How QA fits into our development process

Development process 

We follow the Agile Software development process. We typically do two major releases in a year. This picture below shows the different phases of the Bahmni development process and how we ensure quality before we release a new version to the community. 

During the Planning Phase

QA activities that happen in this phase

  1. Acceptance criteria are added to each story. See example below

During Development Phase

A typical testing pyramid in Bahmni

Note, check the individual modules source codes or repositories for existing test suites. Tests may also be written using different technologies (for example, js or specs). 

During Testing Phase

This internally has two sub-phases

Step One: Regression Testing

Once all stories for the release have completed the development we announce a dev freeze. After this only bug fixes are allowed. Members of the community who have been actively involved/have developed the features in that release would get together and do a round of Regression Testing. The objective of this is to ensure the version is stable before opening up to the community for testing. This typically takes 2 weeks. 

Step Two: Community Testing 

Once we feel reasonably confident that the version is stable, we open up for community testing. This version is called a release candidate The release manager posts a request for contribution in the community channel on talk with instructions on how to contribute. 

During the Release Phase


Appendix - Types of testing in software development

Typical software goes through various types of testing as shown in this diagram below

This article gives a good overview of what each of them means.