1. Purpose

We are intending to baseline the performance of the Bahmni app for clinics. The test will be extended to check the maximum number of clinics can be supported with current infrastructure without scaling up.

2. Introduction

As part of Bahmni NEXT, the solution should meet the acceptance criteria in both functional and cross functional areas. The purpose of this document is to provide an outline for the performance test where baselining & capacity of the system will be covered.

Following will be covered in this document:

3. Entry criteria

4. Exit criteria

The testing activity will be completed when:

5. Load Tool Selection & approach

Gatling will be used as the load generation tool as the team has earlier experience of working with it. Gatling is good at creating and emulating a large number of users compared to Jmeter without adding more hardware. Comparatively Gatling is less resource intensive, hence it makes a good choice compared to Jmeter.

The key challenge with Gatling would be Scala as the programming language.

6. Environment requirement

The performance test will be executed in an new environment which is exclusive for these tests. A stable version of the Bahmni build will be deployed for it. The build number will be the same for all the tests unless any major issue is uncovered.

Server Configuration:

RAM: 16 GB

Hard Drive: 100 GB

8 vCPUs

The server will be instrumented with Pothemeus & Grafana which will help to collect server metrics during the testing.

7. Baseline test approach

Baseline tests will be performed for a single clinic. It won’t have any pre-existing data except for the users preconfigured. The script will perform the following operations:

The test script will include an one hour test of:

Following are the numbers associated with a clinic’s operation. Below numbers are the maximum per clinic.

The tests will be designed according to the above data. Different users will be created for each operation; i.e registration, doctors. SInce, billing is not part of Bahmni, billing will not be considered for performance test scenarios.

Key observations

Admin operation includes report pull during off-peak hours. For this we need to pre-populate the data as mentioned above.

As per the test, the admin user needs to perform the following operations at once:

Key observations

8. Capacity Test approach

As per this requirement, the BAU operation and admin test will be performed; however, the emulation of clinic numbers will be multiplied by multiplying the count of users and operations. We will take the odd multiplier approach. So it will be x, 3x, 5x and so on. Data accumulated during the tests will work as existing clinics. If needed, we can import synthetic data. This test will be done for 30 mins and both client & server side observations will be noted. The increment will continue until we notice errors on the client side which are usually timeouts or server response errors. Also we will stop incrementing when the CPU, memory, disk space are exhausted. Once we reach this breaking point, we need to reduce the number of clinics to the next below number where the system is stable. That number will be our capacity for the system. To confirm the same, we may need to perform a soak test with that number of clinics.

 AWS costing will be based on this number.

9. Test execution activities

The following tasks need to be performed to complete the performance test.

10. Risk Factors

Following might affect the execution of the test plan/timelines.

Task details & other information: https://docs.google.com/spreadsheets/d/1WfgTU_rYxb7UWAwYEMJex4xOB6xQUngQH8LVOMexWzw/edit?usp=sharing