Injustice - Developers Among Us (SciFiDevCon 2024)
JMeter - Performance testing your webapp
1. JMeter (http://jakarta.apache.org/jmeter/)
A tool for performance testing your webapp
Amit Solanki
http://amitsolanki.com
amit@vinsol.com
2. Testing - Performance/Load/Stress
• Performance testing
• how fast an app performs under a particular workload
• validation, verification of quality attributes (scalability, reliability, resource
usage)
• demonstrates that the system meets performance criteria
• Load Testing
• modeling the expected usage by simulating multiple users accessing the web
services concurrently
• raised beyond normal usage - stress testing
• Stress Testing
• determination of stability of an application
• tries to break the app by overwhelming its resources
3. Before starting
• What is our anticipated average number of users (normal load) ?
• What is our anticipated peak number of users ?
• When is a good time to load-test our application (i.e. off-hours or week-ends),
bearing in mind that this may very well crash one or more of our servers ?
• What is the testing intended to achieve?
• Sequential
• functional (low-volume)
• benchmark (the average number of users)
• load-test (the maximum number of users)
• test destructively (what is our hard limit?)
4. JMeter - Introduction
• Features
• 100% pure java, open source desktop application
• originally developed by Stefano Mazzocchi
• designed for functional/load/performance/stress testing
• Extensible… write your own test
• Simulate heavy load (application, server and network)
• Gives instant visual feedback
• distributed testing
• various protocols - HTTP, FTP, JDBC, JMS, LDAP, SOAP
• multi-platform
• Full multithreading framework
• Caching and offline analysis/replaying of test results.
5. Application Overview
• GUI, command line interface
• Tests can be run and analyzed interactively, or run in batch
mode and analyzed offline
• Test plans consist of
• Thread groups: organize threads of execution
• Samplers: sends requests to a server
• Logical controllers : control flow of test plan (loops, conditionals,
ordering, etc.)
• Listeners: record, summarize and display record and response data
• Timers: introduce delays in test plan
• Assertions: assert facts about responses, for functional testing
• Configuration elements
• Pre-processors and post-processors
6. Testing Process
Create Thread Create Test
Plan Test Group Script
Run Test Plan Analyze Result
Test Plan Thread Group Samplers Listeners
Scheduler Timers
7. Elements of test plan
Thread group
Logic Controllers
Samplers
Configuration Elements
Pre-Processor Elements
Post-Processor Elements
Timers
Assertions Listeners
10. Distributed Testing (contd...)
Check : -
• firewalls turned off
• jmeter & jmeter -servers on same subnet
• jmeter can access all jmeter -servers
• same version of jmeter on all systems
11. Drawbacks
• Complex terminology
• Manual distributed execution
• Graphic representation quite confusing
• Difficult to build for beginners