You are on page 1of 27

JMeter Workshop

Friday 1 December 2006

Anthony Colebourne
IT Services
The University of Manchester

What is JMeter
Apache JMeter is a GUI desktop application

designed to load test functional behavior and measure


performance. It was originally designed for testing
Web Applications but has since expanded to other test
functions.

Has a rich graphical interface


Built in Java
Part of Apache Jakarta project
Can be distributed

It can be used to simulate a heavy load on a server,


network or object to test its strength or to analyze
overall performance under different load types.

Features of JMeter
Graphical Analysis / Exporting Test Results
Remote Distributed Execution
If you want to generate load using multiple test servers. You
can run multiple server components of JMeter remotely. And
you can control it by a single JMeter GUI to gather results.
http://jakarta.apache.org/jmeter/usermanual/remotetest.html
Highly Extensible
Custom Additions (Write your own samplers / listeners)
PlugIns
Test plans stored in XML and can be version controlled.

What Can You Do With It?


JMeter lets you set up test plans that
simulate logging into a web site, filling out
forms, clicking buttons, links, etc.
You can simulate the number of users
doing this, the rate that they do it.

Setting Up and Running JMeter


Download the binary from Jakarta
http://jakarta.apache.org/jmeter/
Its platform independent, so the same download
will run on Windows, Linux, Mac.
You need Java, with the JAVA_HOME
environment variable set.
Uncomment SSL settings in jmeter.properties

Unpack the zip or tar.gz and execute


jmeter.bat or jmeter.sh

JMeter Control Panel

Test Plan
A complete test plan will consist of one
or more Thread Groups, logic
controllers, samplers, listeners, timers,
assertions, and configuration elements.
Test Plans are represented as an
Ordered Tree.

Scoping Rules
Some elements are primarily ordered (e.g.
controllers and samplers).
Other elements are hierarchical. An Assertion,
for example, is hierarchical in the test tree. If
its parent is a request, then it is applied to that
request. If its parent is a Controller, then it
affects all requests that are descendants of
that Controller.

Elements of a Test Plan


http://jakarta.apache.org/jmeter/usermanual/component_reference.html

ThreadGroup

Samplers

HTTP Request
JDBC Request
LDAP Request
WebService (SOAP) Request

Logic Controllers

Set the number of threads


Set the ramp-up period
Set the number of times to execute the test

Simple Controller - The Simple Logic Controller lets you organize your Samplers and other
Logic Controllers
Loop Controller
Once Only Controller
Interleave Controller
Throughput Controller
Others (e.g. Transaction Controller)

Listeners

Simple Data Writer


Graph Results

Elements of a Test Plan


http://jakarta.apache.org/jmeter/usermanual/component_reference.html

Timers
The timer will cause a delay between each request
that a thread makes.

Assertions
The test of the response from the server

Configuration Elements
Sets default

Pre-Processor / Post-Processor Elements

Execution order

Timers
Pre-Processors
Sampler
Post-Processors
Assertions
Listeners

JMeter User Interface

The Test Plan

Login Sequence

View results summary

View results as graph

Portal Test Plans


Performance testing
Real life usage

Stress testing
Increasing number of
users

Soak testing
Varying how long test
runs for, e.g. use loops

System level testing


Using assertions

Simplest web test


Thread Group
HTTP Request - Sampler
View Results in Table - Listener

Demo workshop_demo1.jmx

Simplest web test


User Defined Variables Configuration
Element
Constant Timer - Timer
View Results in Tree Listener - Listener

Demo workshop_demo2.jmx

Simplest web test


HTTP Header Manager Configuration
Element
Simple Controller - Controller
Response Assertion - Assertion

Demo workshop_demo3.jmx

Test Fragments for Portal


Saved fragments of Test Plans
Login sequence
Response assertions
User agents
Load cluster settings

Portal Performance Test A


Load cluster host names

Load test users


Do Login
Test Login
Generate next url based on tabs
Loop:
1. Visit tab 1
2. Visit tab 2
3. Visit tab 1
4. Visit tab 3

HTTP Proxy Recorder


Workbench -> HTTP Proxy Server
Cannot be used with over SSL

HTTP Proxy Recorder


Configuring
FireFox to use the
Proxy

Demo
workshop_demo
_proxy.jmx

Using JMeter with Ant


JMeter build.xml
Single JMeter target with 2 arguments
script
Paramter list

Portal testing build.xml


One target for each scenario
Parameter Environment
Parameters for e.g. number of users or running time

Build.properties
List of server to use
List of users

http://ant.apache.org

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.

Resources
Apache JMeter Home
http://jakarta.apache.org/jmeter/

Useful Tutorials and Articles


http://javaboutique.internet.com/tutorials/JMeter/
http://venus.cs.depaul.edu/se591/JMeter11.ppt

http://wiki.manchester.ac.uk/portal/
See articles in the Testing category

anthony.colebourne@manchester.ac.uk

You might also like