Performance testing in DHIS2: testing, measurement and evaluation strategies

This abstract has been accepted at the 2024 DHIS2 Annual Conference

Performance testing in DHIS2: testing, measurement and evaluation strategies

In today’s technological landscape, ensuring the reliability and performance of web and mobile applications like DHIS2 has become a critical factor. A proactive approach with performance, load and stress testing will not only increase user confidence but also reduce costs by finding issues before moving to production or publishing new releases. Most of the users are concerned about response times and performance, and testing is an essential practice to evaluate and improve the responsiveness and stability of DHIS2. Performance testing will help developers to find bottlenecks, identifying parts of the system that need improvement, or comparing DHIS2 releases or patches to ensure that they meet improvement expectations. Also performance testing can help system administrators, ensuring that the system can handle expected workloads, giving them important information about how and when the system should scale, or comparing how different hardware specifications, system and database configurations, may affect the overall performance of the system. We would like to share with the community our lessons learned defining performance tests with open-source tools, mainly with Apache JMeter and Locust. First of all, how we create test scenarios, finding API calls that can increase the load of the system or that may present bottlenecks (based on our experience) on user requests. Also we would like to show how we could record navigations to test scenarios that are as real as possible. We will show how the generation of test scenarios is automated as much as possible. Then, once we have testing scenarios, we will show different types of tests to evaluate our systems like: - Load testing, to simulate multiple users accessing DHIS2 simultaneously and evaluate how the system responds under different user loads, increasing or decreasing their simultaneous access. - Performance testing, to measure and analyze performance metrics like response times or network latencies. - Stress testing, with extreme loads to identify the capacity limits of our system. - Scalability testing, to see the behavior of the system by adding or removing resources. - Stability testing, with prolonged tests to detect potential issues like memory leaks, resource leaks, or other failures that may arise over time. These testing methods collectively provide a comprehensive assessment of an application’s performance attributes and we will show how the reports are created and how we can evaluate the results obtained.

Primary Author: Daniel Castelao Suárez

Load testing, Performance testing, Stress testing, Scalability testing, Stability testing, Responsiveness and Reliability