Summary
Info |
---|
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
✅ 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.
👋 Ready to Make a Difference?
We're looking for enthusiastic students who want to learn while making a real impact. 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.
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!