Load Testing
Kalil de lima
kalil@rootstrap.com - github.com/kaozdl


What can we do with this tool?
- Simulates how an application performs on a regular day
- Get insights about the general user experience
- Identify areas that need improvements
Oh, Like a stress test!
NO
- The goal is simulating user experience
- Is not trying to break the app
- Tested with normal workload
Load Test vs Stress Test
- The goal is finding the breakpoint
- Does not handle daily scenarios
- Not tested with normal workload
How Antel lines will perform at Christmas Midnight?
Examples:
How PedidosYa will perform on a Friday Night?
How can we perform such tests?
First we need a reality model
- How many users do we have?
- Are we dealing with rush/peak hours?
- How do users use the app?
We need information like:
Some considerations
- Several user bases are useful.
- User ramp-up is distributed across time.
- App will not be tested extensively.
- Runs against production-like infrastructure.
- Focus on performance and degradation, not bugs.
- Does not replace unit and integration tests.
Tools
- Postman on steroids
- Open Source
- Pre-define user flows
- Run user flows concurrently
- Distribute flows on timespan
What is Jmeter

New Relic
- Server monitoring tool
- Available on Heroku as addon
- Tracks errors and slow queries
- Integrates with Rails, Django, Node, PHP and Java among others
Our case study:
LOIL
JMeter Graphs, What can we read here?


Taking a closer look
Evaluating how the app scales

Result Tables
Error Rates


Conclusion
- Allows to simulate our user experience
- Identify bottlenecks
- Optimize smartly
- Gives insights to plan scaling
Our Toolbox
- Jmeter
- New Relic
- Logs
Load Testing with Jmeter
By Kalil De Lima
Load Testing with Jmeter
- 323