🚀 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 |
✅ Current Implementation
Repository: openmrs/openmrs-contrib-performance-test
The project currently implements two key personas:
Doctor: Conducts patient visits and related workflows
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:
Community Discussion Thread: Contains project evolution and key decisions
🌈 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!