JMeter
A Performance Testing Tool
Date:05/01/2010
Introduction
Definition JMeter is an Apache Jakarta project that can be used as a load testing tool for analysing and measuring the performance of a variety of services, with a focus on web applications. Why JMeter JMeter can be used as a unit test tool for JDBC database connection, FTP,
LDAP, WebServices, JMS, HTTP and generic TCP connections. JMeter can also
be configured as a monitor, although this is typically considered an ad-hoc solution in lieu of advanced monitoring solutions.
May 13, 2009
Introduction - Features
100% pure Java Open Source Desktop application. Designed for performance/functional/load/stress testing. Extensible- write your own tests.
Pluggable sampler allows unlimited testing capabilities.
Simulate heavy load (application, server and network). Gives instant visual feedback. Distributed testing.
Various protocols- HTTP, JDBC, LDAP, SOAP, JMS, FTP.
Multi-platform. Full multi-threading framework. Test plans can be stored in XML and can be version controlled. Caching and offline analysis/ replaying of test results
May 13, 2009
JMeter License
JMeter comes under Apache Software License Version 2.0 The Apache License is a free-software license authored by the Apache Software Foundation (ASF). The Apache License (versions 1.0, 1.1, and 2.0) requires preservation of the
copyright notice and disclaimer, but it is not a copyleft license.
This means it allows use of the source code for the development of proprietary software as well as free and open source software. The complete license details for JMeter can be found here: [Link]
May 13, 2009
Elements of Test Plan
Thread Group Logic Controllers Samplers Configuration elements
Pre-processor elements
Post-processor elements Timers Listeners Assertions
May 13, 2009
Execution Order
Timers Preprocessors Samplers
Post-processors
Assertions Listeners
May 13, 2009
Functions and Variables
JMeter functions are special values that can populate fields of any Sampler or other element in a test tree. A function looks like ${__functionName(var1,var2,var3)}. A function with no parameter looks like ${__functionName}. If a function parameter contains a comma, then be sure to escape this with "\",
otherwise JMeter will treat it as a parameter delimiter. Example ${__time(EEE\, d
MMM yyyy)}. Variables are referenced as ${VARIABLE}. Variable and functions are all case-sensitive.
May 13, 2009
What can functions do ?
Two kinds of functions:
user-defined static values (or variables). built-in functions.
User-defined static values allow the user to define variables to be replaced with their
static value when a test tree is compiled and submitted to be run.
This replacement happens once at the beginning of the test run. Variables cannot be nested. With built-in functions users can compute new values at run-time based on previous response data.
These new values are generated fresh for every request throughout the course of the
test.
May 13, 2009
Where can functions and variables be used?
Functions and variables can be written into any field of any test component (apart from the TestPlan). Some fields do not allow random strings because they are expecting numbers, and thus will not accept a function. However, most fields will allow functions. Functions which are used on the Test Plan have some restrictions.
JMeter thread variables will have not been fully set up when the functions are
processed, so variable names passed as parameters will not be set up, and variable references will not work, so split() and regex() and the variable evaluation functions won't work.
The following functions should work OK on the test plan - intSum, longSum,
machineName, BeanShell, javaScript, jexl, random, time, property functions, log functions.
May 13, 2009
Functions
__functionless __counter __threadNum
__intSum
__longSum __StringFromFile __machineName __javaScript __Random __CSVRead
__property
10
May 13, 2009
Functions condt...
_P _log __logn __BeanShell __split
__Xpath
__setProperty __time __jexl __V
11
May 13, 2009
Functions condt...
__evalVar __eval __char __unescape __unescapeHtml
__escapeHtml
12
May 13, 2009
Pre-defined Variables
Most variables are set by calling functions or by test elements such as User Defined Variables. In user define variable the user has full control over the variable name
Some variables are defined internally by JMeter.
These are listed below.
Cookiename - contains the cookie value JMeterThread.last_sample_ok - whether or not the last sample was OK true/false
START variable
13
May 13, 2009
Building a Web test plan
Adding Users Adding Default HTTP Request Properties Add HTTP Request
Add listener to view store the Test Result
14
May 13, 2009
Building a Web test plan Adding Users
15
May 13, 2009
Building a Web test plan Adding Default HTTP
Request Properties
16
May 13, 2009
Building a Web test plan Adding HTTP Request
17
May 13, 2009
Building a Web test plan - Add listener to view store the
Test Result
18
May 13, 2009
Building a Advanced Web test plan
Handling User Sessions With URL Rewriting Using a Header Manager
19
May 13, 2009
Building a Advanced Web test plan - Handling User
Sessions With URL Rewriting
Web application uses URL rewriting rather than cookies to save session information. JMeter needs to parse the HTML received from the server and retrieve the unique session ID. Use the appropriate HTTP URL Re-writing Modifier to accomplish this. Simply enter the name of your session ID parameter into the modifier, and it will find and add it to each request.
If the request already has a value, it will be replaced. If "Cache Session Id?" is
checked, then the last found session id will be saved, and will be used if the previous HTTP sample does not contain a session id.
20
May 13, 2009
Building a Advanced Web test plan - Handling User
Sessions With URL Rewriting condt
A test plan is shown using URL rewriting.
The URL Re-writing modifier is added
to the SimpleController, thus assuring that it will only affect requests under that SimpleController.
21
May 13, 2009
Building a Advanced Web test plan - Handling User
Sessions With URL Rewriting condt
Request Parameters
22
May 13, 2009
Building a Advanced Web test plan - Using a Header
Manager
The HTTP Header Manager customizes information JMeter sends in the HTTP request header . This header includes properties like "User-Agent", "Pragma", "Referer" etc. The HTTP Header Manager ( like the HTTP Cookie Manager) should probably be added at the Thread Group level, unless different headers for the different HTTP Request objects in test is specified.
23
May 13, 2009
Building a Database Test Plan
Adding Users Adding JDBC Requests Adding a Listener to View/Store the Test Results
24
May 13, 2009
Building a Database Test Plan Adding User
A Thread Group with Default Value
25
May 13, 2009
Building a Database Test Plan Adding User condt
JDBC User Thread Group
26
May 13, 2009
Building a Database Test Plan Adding JDBC Requests
JDBC Configuration JMeter creates a database connection pool with the configuration settings as specified in the Control Panel. The pool is referred to in JDBC Requests in the 'Variable Name' field. Several different JDBC Configuration elements can be used, but they must have unique names. Every JDBC Request must refer to a JDBC Configuration pool. More than one JDBC Request can refer to the same pool.
27
May 13, 2009
Building a Database Test Plan Adding JDBC Requests
condt
JDBC Request
28
May 13, 2009
Building a Database Test Plan Adding JDBC Requests
condt
JDBC Request for Kodak stock
29
May 13, 2009
Building a Database Test Plan Adding JDBC Requests
condt
JDBC Request for Pfizer stock
30
May 13, 2009
Building a Database Test Plan Adding a Listener to
View/Store the Test Results
Graph results Listener
31
May 13, 2009
Building an FTP Test Plan
Adding Users Adding Default FTP Request Properties Adding FTP Requests Adding a Listener to View/Store the Test Results
32
May 13, 2009
Building an FTP Test Plan - Adding Users
O'Reilly Users Thread Group
33
May 13, 2009
Building an FTP Test Plan - Adding Default FTP Request
Properties
FTP Request Defaults
34
May 13, 2009
Building an FTP Test Plan - Adding Default FTP Request
Properties condt
FTP Defaults for our Test Plan
35
May 13, 2009
Building an FTP Test Plan - Adding FTP Requests
FTP Request for O'Reilly mSQL Java README file
36
May 13, 2009
Building an FTP Test Plan - Adding FTP Requests condt
FTP Request for O'Reilly mSQL Java tutorial file
37
May 13, 2009
Building an FTP Test Plan - Adding a Listener to
View/Store the Test Results
Spline Visualizer Listener
38
May 13, 2009
Building an LDAP Test Plan
Adding Users Adding Login Config Element Adding LDAP Request Defaults Adding LDAP Requests Inbuilt Add Test Inbuilt Modify Test Inbuilt Delete Test Inbuilt Search Test Adding a Listener to View/Store the Test Results
39
May 13, 2009
Building an LDAP Test Plan - Adding Users
Thread Group with Default Values
40
May 13, 2009
Building an LDAP Test Plan - Adding Login Config
Element
Login Config Element for our Test Plan
41
May 13, 2009
Building an LDAP Test Plan Adding LDAP Request
Defaults
LDAP Defaults for our Test Plan
42
May 13, 2009
Building an LDAP Test Plan Adding LDAP Requests
Four LDAP request can be added.
Inbuilt Add Test Inbuil Modify Test Inbuilt Delete Test Inbuilt Search Test
JMeter sends requests in the order that you add them to the tree
43
May 13, 2009
Building an LDAP Test Plan Adding LDAP Requests
condt
LDAP Request for Inbuilt Add test LDAP Request for Inbuilt Modify test
44
May 13, 2009
Building an LDAP Test Plan Adding LDAP Requests
condt
LDAP Request for Inbuilt Delete test LDAP Request for Inbuilt Search test
45
May 13, 2009
Building an LDAP Test Plan Adding a Listener to
View/Store the Test Results
View result in Table Listener
46
May 13, 2009
Building an Extended LDAP Test Plan
Adding Users Adding LDAP Extended Request Defaults Adding LDAP Requests Adding a Thread bind Request Adding a search Request Adding a Compare Request Adding a Single bind/unbind Adding an Add Request Adding a Modify Request Adding a Delete Request Adding a Rename Request (moddn) Adding an unbind Request Adding a Listener to View/Store the Test Results
47
May 13, 2009
Building an Extended LDAP Test Plan - Adding Users
Thread Group with Default Values
48
May 13, 2009
Building an Extended LDAP Test Plan - Adding LDAP
Extended Request Defaults
LDAP Defaults for our Test Plan
49
May 13, 2009
Building an Extended LDAP Test Plan - Adding LDAP
Request
Nine LDAP request can be added.
Adding a Thread bind Request Adding a search Request Adding a Compare Request Adding a Single bind/unbind Adding an Add Request Adding a Modify Request Adding a Delete Request Adding a Rename Request (moddn) Adding an unbind Request
JMeter sends requests in the order that you add them to the tree.
50
May 13, 2009
Building an Extended LDAP Test Plan - Adding LDAP
Request condt
Adding a Thread bind Request
51
May 13, 2009
Building an Extended LDAP Test Plan - Adding LDAP
Request condt
Adding a Search Request
52
May 13, 2009
Building an Extended LDAP Test Plan - Adding LDAP
Request condt
Adding a Compare Request
53
May 13, 2009
Building an Extended LDAP Test Plan - Adding LDAP
Request condt
Adding a Single bind/unbind
54
May 13, 2009
Building an Extended LDAP Test Plan - Adding LDAP
Request condt
Adding an Add Request
55
May 13, 2009
Building an Extended LDAP Test Plan - Adding LDAP
Request condt
Adding a Modify Request
56
May 13, 2009
Building an Extended LDAP Test Plan - Adding LDAP
Request condt
Adding a Delete Request
57
May 13, 2009
Building an Extended LDAP Test Plan - Adding LDAP
Request condt
Adding a Rename Request (moddn)
58
May 13, 2009
Building an Extended LDAP Test Plan - Adding LDAP
Request condt
Adding an unbind Request
59
May 13, 2009
Building an Extended LDAP Test Plan - Adding a
Listener to View/Store the Test Results
View result Tree Listener
60
May 13, 2009
Building a WebService Test Plan
Adding Users Adding WebService Requests Adding a Listener to View Store the Test Results
61
May 13, 2009
Building a WebService Test Plan - Adding Users
Jakarta Users Thread Group
62
May 13, 2009
Building a WebService Test Plan - WebService
Requests
63
May 13, 2009
Building a WebService Test Plan - Building a
WebService Test Plan
Graph Results Listener
64
May 13, 2009
Case Study
Create and run a Database test plan to test Mysql database server. OR Create and run a FTP test plan to test a FTP site.
65
May 13, 2009
Advantages
It is free Easy to install and use Compared to other load and performance testing tools, it is not only for web
application, but also for other servers or objects
Test results can be shown in different formats Highly extensible
66
May 13, 2009
Tips
Use timers to avoid hammering the server Limit the Number of Threads
Hardware will limit the number of threads you can effectively run. A faster machine makes JMeter work harder since it returns request quicker.
User variables
Create a text file containing the user names and passwords. Add a CSV DataSet configuration element. Name the variables USER and PASS. Use ${USER} and ${PASS} within samplers.
Reducing resource requirements
Use non-GUI mode. Use as few Listeners as possible. Reduce samplers by looping (by thread and by controller), and use variables (CSV Data Set) to vary the sample. Use CSV output rather than XML.
67
May 13, 2009
References
JMeter has 2 types of mailing list
The JMeter User List The JMeter Developer List
To subscribe to any mailing list
[Link]
68
May 13, 2009
Thank You !