/
🚀 Performance Testing Enhancement Project (GSoC 2025)

🚀 Performance Testing Enhancement Project (GSoC 2025)

Summary

The OpenMRS Performance Test framework enables comprehensive performance testing for the OpenMRS platform. Using Gatling as its foundation, it provides a robust and user-friendly framework for simulating user load and measuring system performance under real-world conditions.

Project Size

Medium

Primary mentor

@Jayasanka Weerasinghe

Backup mentor

TBA

Selected Contributor

TBA
(It is still the application period. If you're reading this, you might be the one filling this spot soon.)

✅ Current Implementation

Repository: openmrs/openmrs-contrib-performance-test

The project currently implements two key personas:

  1. Doctor: Conducts patient visits and related workflows

  2. Clerk: Handles patient registration processes

These scenarios run automatically through GitHub Actions as a daily task, simulating approximately 200 concurrent patients over a 3-hour period. You can view the latest test results at o3-performance.openmrs.org.

For setup instructions and test execution guidelines, refer to our README.

🌟 What You'll Be Creating

These are our main requirements for the project:

1. More Real-World Scenarios

We need to expand our test coverage to include all REST endpoints involved in essential workflows:

  • Identify critical user workflows that require performance testing

  • Implement new Gatling scenarios for these workflows

  • Make sure our testing covers all the important stuff people do daily

  • Review existing scenarios in our scenarios directory

  • Learn more about scenario implementation from our documentation

2. Bring New Characters to Life

Currently, we have just two characters in our story - doctors and clerks. But hospitals are full of amazing healthcare heroes! You'll:

  • Identify additional key personas beyond our current roles (but not many)

  • Define characteristic workflows for each new persona

  • Ensure scenarios accurately reflect real-world usage patterns

  • Learn more about personas from our documentation

3. Data Duplication Management

Current challenges with our test data:

  • We use ~250 pre-populated patients (patient database)

  • Patient UUIDs are stored in patient_uuids.csv

  • Cyclic reuse of these patients during visit scenarios creates duplicate data (e.g., allergies)

  • System responds with 400 errors for duplicate data attempts

  • More details on data generation can be found in our README

Required: Implement a solution to handle or prevent duplicate data creation during test runs.

4. Bonus Mission (if you're up for it!)

  • Deploy OpenMRS on an AWS EC2 instance that enable increased concurrent user simulation

🛠️ What You'll Need

Some Java knowledge (or any objected oriented knowledge)

Interest in performance testing

Curiosity about healthcare tech

Enthusiasm for learning!

📚 Helpful Resources

Everything you need to get started is ready:

🌈 What You'll Gain

This project offers an exceptional opportunity to:

  • Gain Real-World Healthcare Impact: Your work will directly contribute to OpenMRS, a platform used in healthcare facilities across developing countries, helping improve medical care for millions of patients.

  • Master Performance Engineering: Get hands-on experience with Gatling and learn essential performance testing skills that are highly valued in the software industry. You'll learn how to:

    • Design and implement realistic load tests

    • Analyze performance bottlenecks

    • Handle data management challenges at scale

    • Work with production-level performance metrics

  • Develop Healthcare Domain Knowledge: Understand real-world clinical workflows and how different healthcare providers interact with medical record systems – valuable experience for anyone interested in healthcare IT.

  • Work with Modern Technologies:

    • Gatling for performance testing

    • REST APIs and microservices

    • GitHub Actions for CI/CD

    • AWS cloud infrastructure (optional)

    • Database optimization techniques

  • Join an Active Open Source Community: OpenMRS has a vibrant, supportive community of developers and healthcare professionals. You'll get to collaborate with experienced mentors and contribute to meaningful discussions about healthcare software development.

🙋‍♂️ Frequently Asked Questions

What experience do I need to apply?

You should have basic Java programming knowledge and some familiarity with REST APIs. Experience with performance testing or healthcare systems is a plus, but not required. We value enthusiasm and willingness to learn!

Is this project suitable for first-time GSoC applicants?

Yes! While the project involves complex systems, our mentors will guide you through the learning process. The clear project structure and well-defined goals make it an excellent choice for motivated first-time applicants.

How will my work be used?

The performance testing framework you enhance plays a vital role in ensuring OpenMRS delivers reliable healthcare services worldwide. It runs daily to monitor and maintain system performance, helping developers catch issues early and optimize the platform for resource-constrained environments. Your work will directly impact healthcare facilities by ensuring the system remains responsive during busy clinic hours and can handle multiple providers working simultaneously. This testing infrastructure is especially crucial in regions with limited resources, where system performance can directly affect patient care quality. When developers add new features or implementations teams deploy OpenMRS in new locations, your enhanced testing framework will help them validate performance and plan capacity requirements effectively.

How much time should I dedicate?

GSoC is a significant commitment. You should be able to dedicate approximately 20-30 hours per week during the program. However, we understand that you might have other commitments and will work with you to create a balanced schedule.

What if I don't have healthcare experience?

Don't worry! Many successful OpenMRS contributors started without healthcare background. We'll help you understand the necessary medical concepts and workflows. Your technical skills and enthusiasm are more important.

How can I prepare for the application?

  • Review the project documentation

  • Try setting up the performance test environment locally

  • Look at existing scenarios and think about potential improvements

  • Join the OpenMRS Talk forum and introduce yourself

  • Ask questions! We love engaged applicants

Will I get support during the project?

Absolutely! You'll have:

  • Regular meetings with experienced mentors

  • Access to the OpenMRS developer community

  • Technical documentation and resources

  • Clear milestone-based goals

👋 Ready to Make a Difference?

Don't let imposter syndrome hold you back! If you're excited about this project and willing to learn, we want to hear from you. You don't need to know everything already - we'll help you learn along the way!

Sound exciting? We can't wait to see your application! Remember, the best candidates are those who show enthusiasm, curiosity, and a willingness to learn. We value potential and enthusiasm over perfect qualifications.

Got questions? Feel free to reach out to the community. We're here to help you succeed!

Let's make OpenMRS faster and better together!

P.S. Don't forget to check out our current implementation and try running some tests yourself before applying. It's the best way to understand what you'll be working with!