Performance Testing: Jmeter 2.6
Performance Testing: Jmeter 2.6
Jmeter 2.6
The load testing tool
By Bhojan Rajan
What is Performance testing?
Load testing is the simplest form of performance testing. A load test is usually
conducted to understand the behavior of the system under a specific expected load.
This load can be the expected concurrent number of users on the application
performing a specific number of transactions within the set duration. This test will give
out the response times of all the important business critical transactions. If the
database, application server, etc. are also monitored, then this simple test can itself
point towards any bottlenecks in the application software
Bottle neck
Your web application can consist of several modules used to process request. If one
of them has technical limitation, it limits the performance of the whole system
Bottleneck in the application can be identified by performing the load test with the
defined concurrent user load for various scenarios.
Stress Testing
Every system has a capacity limit. When the load goes beyond the limit, the web site
starts responding very slowly and even produce errors.
The purpose of the stress testing is to find the capacity limit of the system. In we can
verify at which point of time the system degrades or fails. Usually done by increasing
the user load in the system.
Volume Testing
Volume testing is done against the efficiency of the application. Huge amount of data
is processed through the application (which is being tested) in order to check the
extreme limitations of the system.
The limitation will be concluded upon the slow in the system performance and the
failure in the application.
Endurance Testing
This type of testing is used to check that the system can withstand the load for a long
or large number of transaction.
Test will be performed with defined set of concurrent users for a prolonged period of
time, say for example 5 to 10 hours or 2 to 3 days.
Spike Testing
Spike testing is done by suddenly increasing the number of load generated by, users
by a very large amount and observing the behavior of the system. The goal is to
determine the performance degrade, system failure or it will be able to handle
dramatic changes in load.
Say for example, test will be initiated with 200 concurrent user for a certain period of
time, suddenly the concurred user load will be increased to 1000 and the system
performance will be monitored. Like wise the user load will be decreased to 200
concurrent users and verify the system returns to normal operation and retaining the
performance as initiated.
Pre-requisites
• NFR document should be available – It will provide you the expected Response time and
required Concurrent user load, Scenarios to be tested and other performance attributes.
• Dedicated Performance test environment should be ready in place.
• Scalability on the test environment to the actual production environment should be
available.
• Gather the environment details like App, Web and DB servers configurations and their
capacity.
• Performance Test approach document should be ready and sing-off from the stake
holders.
Load Testing Tools
o Load Runner, commercial load testing tool from HP
o JMeter, an open source tool from Appache
o RPT, commercial load test tool from IBM
o NeoLoad, commercial, for Windows, Linux, Solaris
o Microsoft Visual Studio Team System 2010, commercial, for Windows, which includes Load
Test Analyzer and Load Test Monitor tools.
o OpenLoad, commercial load testing tool and hosted service
o OpenSTA, an open source tool
o PureLoad, commercial, multiplatform load testing tool
o PushToTest TestMaker, an open source testing framework (load testing and more)
o QEngine, free and commercial, from AdventNet (free edition supports 5 virtual users)
o SQLQueryStress Performance Testing Tool, free, for testing SQL Server StressIT, commercial
and free
o The Grinder, an open source tool
o Flood, open source from and for Apache
o WAPT, Web Application Testing tool, a commercial product, for Windows
o WatchMouse, commercial hosted load testing service
o WebKing, commercial, multiplatform
o WebServer Stress Tool, commercial and free, from Paessler
Why JMeter?
• Thread Group
– Setup number of thread
– Set up ramp up period
– No. of times test executes
• Controllers
– Sampler (Send Request to Server)
– Logical Controller (Customize logic to send request)
• Listener
– Graph Result
– View Results Tree and many more.
• Timers
– Delay next request for certain amount of time
Continue….
Elements of Test Plans
• Assertions
– Allow you to assert fact about responses received from HTTP request
• Configuration Elements
– Allow you configure settings
• Preprocessor
– Execute prior to sampler request
• Post Processor
– Execute some action after sampler request
Creating web test plan
Creating web test plan
Creating web test plan
Adding users
• You can add default http request setting from ADD >> Config Element >> HTTP request
default.
• This will let you define default http parameter for every request.
Adding HTTP Request element
• Listner responsible for storing all of the results of our HTTP request and presenting in
Visualize mode.
DEMO
Graph Comparison (5 Users VS 50 Users)
5 Users
50 Users
Test Summary
5 Users
50 Users
Recording your Test Plan
Recording Your Test Plan
• Correlation is used to obtain data which is unique for each run of your test script (ex:
session ids). While recording, these dynamic values are hard-coded in your script causing
the script to fail during playback. Correlation is a technique where dynamic values are not
hard-coded in your script but are extracted at run-time to avoid failure
• Correlation will be done using the Regular Expression Extractor in Jmeter.
• orderID=(.+) to correlate the url;/dynamic id after the defined parameter. Here it’s
after ‘orderID=’
– EX: SessionID=jkjoujn434897h3jh35y9h&OrderID=ikikikke99874kmnjhh2
Correlation - Regular Expression Extractor
Right click the node/url > Add > Post Processor > Regular Expression Extractor
• Allow you to assert fact about responses received from HTTP request
ADD> Assertion >> Response Assertion
Assertion Result
• Assertion result provide you the exact response for the request
ADD> Listener >> Assertion Result
Monitor Sever Performance
HTTP Authorization Manager
VM 2
Slave
Target
VM 3
Slave
VM 1 VM 4
Master Slave Web Server
VM 5
Slave
Master: The system running Jmeter GUI which control the test.
VM n
Slave
Slave: The System running Jmeter-server which takes commends from
the GUI and send the requests to the target system.
• JMeter client machine may not able to simulate enough users to stress server.
• Control multiple machine to run JMeter without copying test samples to different
machine.
• Configuration:
– Copy same version of JMeter to different computer.
– Add remote node IP in JMeter.proeprties file.
– Run JMeter on remote machine using /JMETER_HOME/bin/jmeter-server (in
command prompt)
– Start JMeter GUI in host machine.
– Select any test plan.
– Go to Run >> Remote Start >> Remote IP Address.
DEMO
Thank you