mirror of https://github.com/apache/jmeter.git
990 lines
32 KiB
HTML
990 lines
32 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
<!--
|
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
|
contributor license agreements. See the NOTICE file distributed with
|
|
this work for additional information regarding copyright ownership.
|
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
|
(the "License"); you may not use this file except in compliance with
|
|
the License. You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
-->
|
|
|
|
<!-- Content Stylesheet for Site -->
|
|
|
|
|
|
<!-- start the processing -->
|
|
<!-- ====================================================================== -->
|
|
<!-- Main Page Section -->
|
|
<!-- ====================================================================== -->
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
|
|
|
|
|
|
|
|
<title>JMeter - User's Manual: Elements of a Test Plan</title>
|
|
</head>
|
|
|
|
<body bgcolor="#ffffff" text="#000000" link="#525D76">
|
|
<table border="0" cellspacing="0">
|
|
<!-- TOP IMAGE -->
|
|
<tr>
|
|
<td>
|
|
<!-- Need to specify height otherwise iframe seems to grab extra -->
|
|
<iframe src="http://www.apache.org/ads/halfbanner.html" height="102"
|
|
style="border-width:0; float: left" frameborder="0" scrolling="no"></iframe>
|
|
</td>
|
|
<td align="left">
|
|
<a href="http://jakarta.apache.org"><img width="505" height="48" src="../images/jakarta-logo.gif" alt="Jakarta" title="Jakarta" border="0"/></a>
|
|
</td>
|
|
<td align="right">
|
|
<a href="http://jakarta.apache.org/jmeter/"><img width="221" height="102" src="../images/logo.jpg" alt="JMeter" title="JMeter" border="0"/></a>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<table border="0" width="100%" cellspacing="4">
|
|
<tr><td colspan="2">
|
|
<hr noshade size="1"/>
|
|
</td></tr>
|
|
|
|
<tr>
|
|
<!-- LEFT SIDE NAVIGATION -->
|
|
<td width="20%" valign="top" nowrap="true">
|
|
<p><strong>About</strong></p>
|
|
<ul>
|
|
<li> <a href="../index.html">Overview</a>
|
|
</li>
|
|
<li> <a href="../changes.html">Changes</a>
|
|
</li>
|
|
<li> <a href="../known_bugs.html">Known Bugs</a>
|
|
</li>
|
|
<li> <a href="../license.html">License</a>
|
|
</li>
|
|
<li> <a href="http://wiki.apache.org/jakarta-jmeter/JMeterCommitters">Contributors</a>
|
|
</li>
|
|
</ul>
|
|
<p><strong>Download</strong></p>
|
|
<ul>
|
|
<li> <a href="http://jakarta.apache.org/site/downloads/downloads_jmeter.cgi">Download Releases</a>
|
|
</li>
|
|
<li> <a href="../nightly.html">Developer (Nightly) Builds</a>
|
|
</li>
|
|
</ul>
|
|
<p><strong>Documentation</strong></p>
|
|
<ul>
|
|
<li> <a href="../usermanual/index.html">User Manual</a>
|
|
</li>
|
|
<li> <a href="../api/index.html">Javadocs</a>
|
|
</li>
|
|
<li> <a href="../localising/index.html">Localisation (Translator's Guide)</a>
|
|
</li>
|
|
<li> <a href="../building.html">Building JMeter and Add-Ons</a>
|
|
</li>
|
|
<li> <a href="http://wiki.apache.org/jakarta-jmeter">JMeter Wiki</a>
|
|
</li>
|
|
<li> <a href="http://wiki.apache.org/jakarta-jmeter/JMeterFAQ">FAQ (Wiki)</a>
|
|
</li>
|
|
</ul>
|
|
<p><strong>Tutorials (PDF format)</strong></p>
|
|
<ul>
|
|
<li> <a href="../usermanual/jmeter_distributed_testing_step_by_step.pdf">Distributed Testing</a>
|
|
</li>
|
|
<li> <a href="../usermanual/jmeter_proxy_step_by_step.pdf">Recording Tests</a>
|
|
</li>
|
|
<li> <a href="../usermanual/junitsampler_tutorial.pdf">JUnit Sampler</a>
|
|
</li>
|
|
<li> <a href="../usermanual/jmeter_accesslog_sampler_step_by_step.pdf">Access Log Sampler</a>
|
|
</li>
|
|
<li> <a href="../extending/jmeter_tutorial.pdf">Extending JMeter</a>
|
|
</li>
|
|
</ul>
|
|
<p><strong>Community</strong></p>
|
|
<ul>
|
|
<li> <a href="http://jakarta.apache.org/site/getinvolved.html">Get Involved</a>
|
|
</li>
|
|
<li> <a href="http://jakarta.apache.org/site/mail.html">Mailing Lists</a>
|
|
</li>
|
|
<li> <a href="http://jakarta.apache.org/site/cvsindex.html">SVN Repositories</a>
|
|
</li>
|
|
</ul>
|
|
</td>
|
|
<td width="80%" align="left" valign="top">
|
|
<table>
|
|
<tr>
|
|
<td bgcolor="#525D76">
|
|
<div align="right"><a href="index.html"><font size=-1 color="#ffffff" face="arial,helvetica,sanserif">Index</font></a></div>
|
|
</td>
|
|
<td bgcolor="#525D76">
|
|
<div align="right"><a href="build-web-test-plan.html"><font size=-1 color="#ffffff" face="arial,helvetica,sanserif">Next</font></a></div>
|
|
</td>
|
|
<td bgcolor="#525D76">
|
|
<div align="right"><a href="build-test-plan.html"><font size=-1 color="#ffffff" face="arial,helvetica,sanserif">Prev</font></a></div>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<br>
|
|
<table border="0" cellspacing="0" cellpadding="2" width="100%">
|
|
<tr><td bgcolor="#525D76">
|
|
<font color="#ffffff" face="arial,helvetica,sanserif">
|
|
<a name="$section.getAttributeValue("anchor")"><strong>4. Elements of a Test Plan</strong></a>
|
|
</font>
|
|
</td></tr>
|
|
<tr><td>
|
|
<blockquote>
|
|
<p >
|
|
The Test Plan object has a checkbox called "Functional Testing". If selected, it
|
|
will cause JMeter to record the data returned from the server for each sample. If you have
|
|
selected a file in your test listeners, this data will be written to file. This can be useful if
|
|
you are doing a small run to ensure that JMeter is configured correctly, and that your server
|
|
is returning the expected results. The consequence is that the file will grow huge quickly, and
|
|
JMeter's performance will suffer. This option should be off if you are doing stress-testing (it
|
|
is off by default).
|
|
</p>
|
|
<p >
|
|
If you are not recording the data to file, this option makes no difference.
|
|
</p>
|
|
<p >
|
|
You can also use the Configuration button on a listener to decide what fields to save.
|
|
</p>
|
|
<table border="0" cellspacing="0" cellpadding="2" width="100%">
|
|
<tr><td bgcolor="#828DA6">
|
|
<font color="#ffffff" face="arial,helvetica,sanserif">
|
|
<a name="thread_group"><strong>4.1 ThreadGroup</strong></a>
|
|
</font>
|
|
</td></tr>
|
|
<tr><td>
|
|
<blockquote>
|
|
<p >
|
|
Thread group elements are the beginning points of any test plan. All elements
|
|
of a test plan must be under a thread group. As the name implies, the thread group
|
|
element controls the number of threads JMeter will use to execute your test. The
|
|
controls for a thread group allow you to:
|
|
|
|
<ul >
|
|
<li >
|
|
Set the number of threads
|
|
</li>
|
|
|
|
|
|
<li >
|
|
Set the ramp-up period
|
|
</li>
|
|
|
|
|
|
<li >
|
|
Set the number of times to execute the test
|
|
</li>
|
|
|
|
|
|
</ul>
|
|
</p>
|
|
<p >
|
|
Each thread will execute the test plan in its entirety and completely independently
|
|
of other test threads. Multiple threads are used to simulate concurrent connections
|
|
to your server application.
|
|
</p>
|
|
<p >
|
|
The ramp-up period tells JMeter how long to take to "ramp-up" to the full number of
|
|
threads chosen. If 10 threads are used, and the ramp-up period is 100 seconds, then
|
|
JMeter will take 100 seconds to get all 10 threads up and running. Each thread will
|
|
start 10 (100/10) seconds after the previous thread was begun. If there are 30 threads
|
|
and a ramp-up period of 120 seconds, then each successive thread will be delayed by 4 seconds.
|
|
</p>
|
|
<p >
|
|
Ramp-up needs to be long enough to avoid too large a work-load at the start
|
|
of a test, and short enough that the last threads start running before
|
|
the first ones finish (unless one wants that to happen).
|
|
|
|
</p>
|
|
<p >
|
|
|
|
Start with Ramp-up = number of threads and adjust as needed.
|
|
|
|
</p>
|
|
<p >
|
|
By default, the thread group is configured to loop once through its elements.
|
|
</p>
|
|
<p >
|
|
Version 1.9 introduces a test run
|
|
<b >
|
|
scheduler
|
|
</b>
|
|
.
|
|
Click the checkbox at the bottom of the Thread Group panel to reveal extra fields
|
|
in which you can enter the start and end times of the run.
|
|
When the test is started, JMeter will wait if necessary until the start-time has been reached.
|
|
At the end of each cycle, JMeter checks if the end-time has been reached, and if so, the run is stopped,
|
|
otherwise the test is allowed to continue until the iteration limit is reached.
|
|
</p>
|
|
<p >
|
|
Alternatively, one can use the relative delay and duration fields.
|
|
Note that delay overrides start-time, and duration over-rides end-time.
|
|
</p>
|
|
</blockquote>
|
|
</td></tr>
|
|
<tr><td><br></td></tr>
|
|
</table>
|
|
<table border="0" cellspacing="0" cellpadding="2" width="100%">
|
|
<tr><td bgcolor="#828DA6">
|
|
<font color="#ffffff" face="arial,helvetica,sanserif">
|
|
<a name="controllers"><strong>4.2 Controllers</strong></a>
|
|
</font>
|
|
</td></tr>
|
|
<tr><td>
|
|
<blockquote>
|
|
<p >
|
|
JMeter has two types of Controllers: Samplers and Logical Controllers.
|
|
</p>
|
|
<p >
|
|
Samplers tell JMeter to send requests to a server. For
|
|
example, add an HTTP Request Sampler if you want JMeter
|
|
to send an HTTP request. You can also customize a request by adding one
|
|
or more Configuration Elements to a Sampler. For more
|
|
information, see
|
|
|
|
<a href="#samplers">
|
|
Samplers
|
|
</a>
|
|
.
|
|
</p>
|
|
<p >
|
|
Logical Controllers let you customize the logic that JMeter uses to
|
|
decide when to send requests. For example, you can add an Interleave
|
|
Logic Controller to alternate between two HTTP Request Samplers.
|
|
For more information, see
|
|
<a href="#logic_controller">
|
|
Logical Controllers
|
|
</a>
|
|
.
|
|
</p>
|
|
</blockquote>
|
|
</td></tr>
|
|
<tr><td><br></td></tr>
|
|
</table>
|
|
<table border="0" cellspacing="0" cellpadding="2" width="100%">
|
|
<tr><td bgcolor="#828DA6">
|
|
<font color="#ffffff" face="arial,helvetica,sanserif">
|
|
<a name="samplers"><strong>4.2.1 Samplers</strong></a>
|
|
</font>
|
|
</td></tr>
|
|
<tr><td>
|
|
<blockquote>
|
|
<p >
|
|
Samplers tell JMeter to send requests to a server.
|
|
JMeter samplers include:
|
|
|
|
<ul >
|
|
|
|
|
|
<li >
|
|
FTP Request
|
|
</li>
|
|
|
|
|
|
<li >
|
|
HTTP Request
|
|
</li>
|
|
|
|
|
|
<li >
|
|
JDBC Request
|
|
</li>
|
|
|
|
|
|
<li >
|
|
Java object request
|
|
</li>
|
|
|
|
|
|
<li >
|
|
LDAP Request
|
|
</li>
|
|
|
|
|
|
<li >
|
|
SOAP/XML-RPC Request
|
|
</li>
|
|
|
|
|
|
<li >
|
|
WebService (SOAP) Request
|
|
</li>
|
|
|
|
|
|
</ul>
|
|
|
|
Each sampler has several properties you can set.
|
|
You can further customize a sampler by adding one or more Configuration Elements to it.
|
|
Note that JMeter sends requests in the order that the samplers appear in the tree.
|
|
</p>
|
|
<p >
|
|
If you are going to send multiple requests of the same type (for example,
|
|
HTTP Request) to the same server, consider using a Defaults Configuration
|
|
Element. Each controller has one or more Defaults elements (see below).
|
|
</p>
|
|
<p >
|
|
Remember to add a Listener to your Thread Group to view and/or store the
|
|
results of your requests to disk.
|
|
</p>
|
|
<p >
|
|
If you are interested in having JMeter perform basic validation on
|
|
the response of your request, add an
|
|
<a href="#assertions">
|
|
Assertion
|
|
</a>
|
|
to
|
|
the Request controller. For example, in stress testing a web application, the server
|
|
may return a successful "HTTP Response" code, but the page may have errors on it or
|
|
may be missing sections. You could add assertions to check for certain HTML tags,
|
|
common error strings, and so on. JMeter lets you create these assertions using regular
|
|
expressions.
|
|
</p>
|
|
<p >
|
|
<a href="component_reference.html#samplers">
|
|
JMeter's built-in samplers
|
|
</a>
|
|
</p>
|
|
</blockquote>
|
|
</td></tr>
|
|
<tr><td><br></td></tr>
|
|
</table>
|
|
<table border="0" cellspacing="0" cellpadding="2" width="100%">
|
|
<tr><td bgcolor="#828DA6">
|
|
<font color="#ffffff" face="arial,helvetica,sanserif">
|
|
<a name="logic_controller"><strong>4.2.2 Logic Controllers</strong></a>
|
|
</font>
|
|
</td></tr>
|
|
<tr><td>
|
|
<blockquote>
|
|
<p >
|
|
Logic Controllers let you customize the logic that JMeter uses to
|
|
decide when to send requests. Logic Controllers may have as child elements any
|
|
of the following: Samplers (requests), Configuration Elements, and other Logic
|
|
Controllers. Logic Controllers can change the order of requests coming from their
|
|
child elements. They can modify the requests themselves, cause JMeter to repeat
|
|
requests, etc.
|
|
|
|
</p>
|
|
<p >
|
|
To understand the effect of Logic Controllers on a test plan, consider the
|
|
following test tree:
|
|
</p>
|
|
<p >
|
|
|
|
|
|
<ul >
|
|
|
|
|
|
<li >
|
|
Test Plan
|
|
</li>
|
|
|
|
|
|
<ul >
|
|
|
|
|
|
<li >
|
|
Thread Group
|
|
</li>
|
|
|
|
|
|
<ul >
|
|
|
|
|
|
<li >
|
|
Once Only Controller
|
|
</li>
|
|
|
|
|
|
<ul >
|
|
|
|
|
|
<li >
|
|
Login Request (an
|
|
<a href="../usermanual/component_reference.html#HTTP_Request">HTTP Request</a>
|
|
)
|
|
</li>
|
|
|
|
|
|
</ul>
|
|
|
|
|
|
<li >
|
|
Load Search Page (HTTP Sampler)
|
|
</li>
|
|
|
|
|
|
<li >
|
|
Interleave Controller
|
|
</li>
|
|
|
|
|
|
<ul >
|
|
|
|
|
|
<li >
|
|
Search "A" (HTTP Sampler)
|
|
</li>
|
|
|
|
|
|
<li >
|
|
Search "B" (HTTP Sampler)
|
|
</li>
|
|
|
|
|
|
<li >
|
|
HTTP default request (Configuration Element)
|
|
</li>
|
|
|
|
|
|
</ul>
|
|
|
|
|
|
<li >
|
|
HTTP default request (Configuration Element)
|
|
</li>
|
|
|
|
|
|
<li >
|
|
Cookie Manager (Configuration Element)
|
|
</li>
|
|
|
|
|
|
</ul>
|
|
|
|
|
|
</ul>
|
|
|
|
|
|
</ul>
|
|
|
|
|
|
</p>
|
|
<p >
|
|
The first thing about this test is that the login request will be executed only
|
|
the first time through. Subsequent iterations will skip it. This is due to the
|
|
effects of the
|
|
<a href="../usermanual/component_reference.html#Once_Only_Controller">Once Only Controller</a>
|
|
.
|
|
</p>
|
|
<p >
|
|
After the login, the next Sampler loads the search page (imagine a
|
|
web application where the user logs in, and then goes to a search page to do a search). This
|
|
is just a simple request, not filtered through any Logic Controller.
|
|
</p>
|
|
<p >
|
|
After loading the search page, we want to do a search. Actually, we want to do
|
|
two different searches. However, we want to re-load the search page itself between
|
|
each search. We could do this by having 4 simple HTTP request elements (load search,
|
|
search "A", load search, search "B"). Instead, we use the
|
|
<a href="../usermanual/component_reference.html#Interleave_Controller">Interleave Controller</a>
|
|
which passes on one child request each time through the test. It keeps the
|
|
ordering (ie - it doesn't pass one on at random, but "remembers" its place) of its
|
|
child elements. Interleaving 2 child requests may be overkill, but there could easily have
|
|
been 8, or 20 child requests.
|
|
</p>
|
|
<p >
|
|
Note the
|
|
<a href="../usermanual/component_reference.html#HTTP_Request_Defaults">HTTP Request Defaults</a>
|
|
that
|
|
belongs to the Interleave Controller. Imagine that "Search A" and "Search B" share
|
|
the same PATH info (an HTTP request specification includes domain, port, method, protocol,
|
|
path, and arguments, plus other optional items). This makes sense - both are search requests,
|
|
hitting the same back-end search engine (a servlet or cgi-script, let's say). Rather than
|
|
configure both HTTP Samplers with the same information in their PATH field, we
|
|
can abstract that information out to a single Configuration Element. When the Interleave
|
|
Controller "passes on" requests from "Search A" or "Search B", it will fill in the blanks with
|
|
values from the HTTP default request Configuration Element. So, we leave the PATH field
|
|
blank for those requests, and put that information into the Configuration Element. In this
|
|
case, this is a minor benefit at best, but it demonstrates the feature.
|
|
</p>
|
|
<p >
|
|
The next element in the tree is another HTTP default request, this time added to the
|
|
Thread Group itself. The Thread Group has a built-in Logic Controller, and thus, it uses
|
|
this Configuration Element exactly as described above. It fills in the blanks of any
|
|
Request that passes through. It is extremely useful in web testing to leave the DOMAIN
|
|
field blank in all your HTTP Sampler elements, and instead, put that information
|
|
into an HTTP default request element, added to the Thread Group. By doing so, you can
|
|
test your application on a different server simply by changing one field in your Test Plan.
|
|
Otherwise, you'd have to edit each and every Sampler.
|
|
</p>
|
|
<p >
|
|
The last element is a
|
|
<a href="../usermanual/component_reference.html#HTTP_Cookie_Manager">HTTP Cookie Manager</a>
|
|
. A Cookie Manager should be added to all web tests - otherwise JMeter will
|
|
ignore cookies. By adding it at the Thread Group level, we ensure that all HTTP requests
|
|
will share the same cookies.
|
|
</p>
|
|
<p >
|
|
Logic Controllers can be combined to achieve various results. See the list of
|
|
<a href="component_reference.html#logic_controllers">
|
|
built-in
|
|
Logic Controllers
|
|
</a>
|
|
.
|
|
</p>
|
|
</blockquote>
|
|
</td></tr>
|
|
<tr><td><br></td></tr>
|
|
</table>
|
|
<table border="0" cellspacing="0" cellpadding="2" width="100%">
|
|
<tr><td bgcolor="#828DA6">
|
|
<font color="#ffffff" face="arial,helvetica,sanserif">
|
|
<a name="listeners"><strong>4.3 Listeners</strong></a>
|
|
</font>
|
|
</td></tr>
|
|
<tr><td>
|
|
<blockquote>
|
|
<p >
|
|
Listeners provide access to the information JMeter gathers about the test cases while
|
|
JMeter runs. The
|
|
<a href="../usermanual/component_reference.html#Graph_Results">Graph Results</a>
|
|
listener plots the response times on a graph.
|
|
The "View Results Tree" Listener shows details of sampler requests and responses, and can display basic HTML and XML representations of the response.
|
|
Other listeners provide summary or aggregation information.
|
|
|
|
</p>
|
|
<p >
|
|
|
|
Additionally, listeners can direct the data to a file for later use.
|
|
Every listener in JMeter provides a field to indicate the file to store data to.
|
|
There is also a Configuration button which can be used to choose which fields to save, and whether to use CSV or XML format.
|
|
|
|
<b >
|
|
Note that all Listeners save the same data; the only difference is in the way the data is presented on the screen.
|
|
</b>
|
|
|
|
|
|
</p>
|
|
<p >
|
|
Listeners can be added anywhere in the test. They will collect data only from elements at or
|
|
below their level.
|
|
</p>
|
|
<p >
|
|
There are several
|
|
<a href="component_reference.html#listeners">
|
|
interesting listeners
|
|
</a>
|
|
|
|
that come with JMeter.
|
|
</p>
|
|
</blockquote>
|
|
</td></tr>
|
|
<tr><td><br></td></tr>
|
|
</table>
|
|
<table border="0" cellspacing="0" cellpadding="2" width="100%">
|
|
<tr><td bgcolor="#828DA6">
|
|
<font color="#ffffff" face="arial,helvetica,sanserif">
|
|
<a name="timers"><strong>4.4 Timers</strong></a>
|
|
</font>
|
|
</td></tr>
|
|
<tr><td>
|
|
<blockquote>
|
|
<p >
|
|
By default, a JMeter thread sends requests without pausing between each request.
|
|
We recommend that you specify a delay by adding one of the available timers to
|
|
your Thread Group. If you do not add a delay, JMeter could overwhelm your server by
|
|
making too many requests in a very short amount of time.
|
|
</p>
|
|
<p >
|
|
The timer will cause JMeter to delay a certain amount of time before each
|
|
request that a thread makes.
|
|
</p>
|
|
<p >
|
|
|
|
If you choose to add more than one timer to a Thread Group, JMeter takes the sum of
|
|
the timers and pauses for that amount of time before executing the samplers to which they apply.
|
|
</p>
|
|
</blockquote>
|
|
</td></tr>
|
|
<tr><td><br></td></tr>
|
|
</table>
|
|
<table border="0" cellspacing="0" cellpadding="2" width="100%">
|
|
<tr><td bgcolor="#828DA6">
|
|
<font color="#ffffff" face="arial,helvetica,sanserif">
|
|
<a name="assertions"><strong>4.5 Assertions</strong></a>
|
|
</font>
|
|
</td></tr>
|
|
<tr><td>
|
|
<blockquote>
|
|
<p >
|
|
Assertions allow you to assert facts about responses received from the
|
|
server being tested. Using an assertion, you can essentially "test" that your
|
|
application is returning the results you expect it to.
|
|
</p>
|
|
<p >
|
|
For instance, you can assert that the response to a query will contain some
|
|
particular text. The text you specify can be a Perl-style regular expression, and
|
|
you can indicate that the response is to contain the text, or that it should match
|
|
the whole response.
|
|
</p>
|
|
<p >
|
|
You can add an assertion to any Sampler. For example, you can
|
|
add an assertion to a HTTP Request that checks for the text, "</HTML>". JMeter
|
|
will then check that the text is present in the HTTP response. If JMeter cannot find the
|
|
text, then it will mark this as a failed request.
|
|
</p>
|
|
<p >
|
|
To view the assertion results, add an Assertion Listener to the Thread Group.
|
|
Failed Assertions will also show up in the Tree View and Table Listeners,
|
|
and will count towards the error %age for example in the Aggregate and Summary reports.
|
|
|
|
</p>
|
|
</blockquote>
|
|
</td></tr>
|
|
<tr><td><br></td></tr>
|
|
</table>
|
|
<table border="0" cellspacing="0" cellpadding="2" width="100%">
|
|
<tr><td bgcolor="#828DA6">
|
|
<font color="#ffffff" face="arial,helvetica,sanserif">
|
|
<a name="config_elements"><strong>4.6 Configuration Elements</strong></a>
|
|
</font>
|
|
</td></tr>
|
|
<tr><td>
|
|
<blockquote>
|
|
<p >
|
|
A configuration element works closely with a Sampler. Although it does not send requests
|
|
(except for
|
|
<a href="../usermanual/component_reference.html#HTTP_Proxy_Server">HTTP Proxy Server</a>
|
|
), it can add to or modify requests.
|
|
</p>
|
|
<p >
|
|
A configuration element is accessible from only inside the tree branch where you place the element.
|
|
For example, if you place an HTTP Cookie Manager inside a Simple Logic Controller, the Cookie Manager will
|
|
only be accessible to HTTP Request Controllers you place inside the Simple Logic Controller (see figure 1).
|
|
The Cookie Manager is accessible to the HTTP requests "Web Page 1" and "Web Page 2", but not "Web Page 3".
|
|
</p>
|
|
<p >
|
|
Also, a configuration element inside a tree branch has higher precedence than the same element in a "parent"
|
|
branch. For example, we defined two HTTP Request Defaults elements, "Web Defaults 1" and "Web Defaults 2".
|
|
Since we placed "Web Defaults 1" inside a Loop Controller, only "Web Page 2" can access it. The other HTTP
|
|
requests will use "Web Defaults 2", since we placed it in the Thread Group (the "parent" of all other branches).
|
|
</p>
|
|
<p><table border="0" cellspacing="0" cellpadding="0"><tr><td><img src="../images/screenshots/http-config/http-config-example.png"><br>
|
|
<font size="-1"> Figure 1 -
|
|
Test Plan Showing Accessability of Configuration Elements
|
|
</font></td></tr></table></p>
|
|
</blockquote>
|
|
</td></tr>
|
|
<tr><td><br></td></tr>
|
|
</table>
|
|
<table border="0" cellspacing="0" cellpadding="2" width="100%">
|
|
<tr><td bgcolor="#828DA6">
|
|
<font color="#ffffff" face="arial,helvetica,sanserif">
|
|
<a name="preprocessors"><strong>4.7 Pre-Processor Elements</strong></a>
|
|
</font>
|
|
</td></tr>
|
|
<tr><td>
|
|
<blockquote>
|
|
<p >
|
|
A Pre-Processor executes some action prior to a Sampler Request being made.
|
|
If a Pre-Processor is attached to a Sampler element, then it will execute just prior to that sampler element running.
|
|
A Pre-Processor is most often used to modify the settings of a Sample Request just before it runs, or to update variables that aren't extracted from response text.
|
|
See the
|
|
<a href="build-test-plan.html#scoping_rules">
|
|
<b >
|
|
scoping rules
|
|
</b>
|
|
</a>
|
|
for more details on when Pre-Processors are executed.
|
|
</p>
|
|
</blockquote>
|
|
</td></tr>
|
|
<tr><td><br></td></tr>
|
|
</table>
|
|
<table border="0" cellspacing="0" cellpadding="2" width="100%">
|
|
<tr><td bgcolor="#828DA6">
|
|
<font color="#ffffff" face="arial,helvetica,sanserif">
|
|
<a name="postprocessors"><strong>4.8 Post-Processor Elements</strong></a>
|
|
</font>
|
|
</td></tr>
|
|
<tr><td>
|
|
<blockquote>
|
|
<p >
|
|
A Post-Processor executes some action after a Sampler Request has been made.
|
|
If a Post-Processor is attached to a Sampler element, then it will execute just after that sampler element runs.
|
|
A Post-Processor is most often used to process the response data, often to extract values from it.
|
|
See the
|
|
<a href="build-test-plan.html#scoping_rules">
|
|
<b >
|
|
scoping rules
|
|
</b>
|
|
</a>
|
|
for more details on when Post-Processors are executed.
|
|
</p>
|
|
</blockquote>
|
|
</td></tr>
|
|
<tr><td><br></td></tr>
|
|
</table>
|
|
<table border="0" cellspacing="0" cellpadding="2" width="100%">
|
|
<tr><td bgcolor="#828DA6">
|
|
<font color="#ffffff" face="arial,helvetica,sanserif">
|
|
<a name="executionorder"><strong>4.9 Execution order</strong></a>
|
|
</font>
|
|
</td></tr>
|
|
<tr><td>
|
|
<blockquote>
|
|
<ol >
|
|
|
|
|
|
<li >
|
|
Pre-Processors
|
|
</li>
|
|
|
|
|
|
<li >
|
|
Timers
|
|
</li>
|
|
|
|
|
|
<li >
|
|
Sampler
|
|
</li>
|
|
|
|
|
|
<li >
|
|
Post-Processors (unless SampleResult is null)
|
|
</li>
|
|
|
|
|
|
<li >
|
|
Assertions (unless SampleResult is null)
|
|
</li>
|
|
|
|
|
|
<li >
|
|
Listeners (unless SampleResult is null)
|
|
</li>
|
|
|
|
|
|
</ol>
|
|
<p><table border="1" bgcolor="#bbbb00" width="50%" cellspacing="0" cellpadding="2">
|
|
<tr><td>
|
|
Please note that Timers, Assertions, Pre- and Post-Processors are only processed if there is a sampler to which they apply.
|
|
Logic Controllers and Samplers are processed in the order in which they appear in the tree.
|
|
Other test elements are processed according to the scope in which they are found, and the type of test element.
|
|
[Within a type, elements are processed in the order in which they appear in the tree].
|
|
|
|
</td></tr>
|
|
</table></p>
|
|
<p >
|
|
|
|
For example, in the following test plan:
|
|
|
|
<ul >
|
|
|
|
|
|
<li >
|
|
Controller
|
|
</li>
|
|
|
|
|
|
<ul >
|
|
|
|
|
|
<li >
|
|
Post-Processor 1
|
|
</li>
|
|
|
|
|
|
<li >
|
|
Sampler 1
|
|
</li>
|
|
|
|
|
|
<li >
|
|
Sampler 2
|
|
</li>
|
|
|
|
|
|
<li >
|
|
Timer 1
|
|
</li>
|
|
|
|
|
|
<li >
|
|
Assertion 1
|
|
</li>
|
|
|
|
|
|
<li >
|
|
Pre-Processor 1
|
|
</li>
|
|
|
|
|
|
<li >
|
|
Timer 2
|
|
</li>
|
|
|
|
|
|
<li >
|
|
Post-Processor 2
|
|
</li>
|
|
|
|
|
|
</ul>
|
|
|
|
|
|
</ul>
|
|
|
|
The order of execution would be:
|
|
|
|
<pre >
|
|
|
|
Pre-Processor 1
|
|
Timer 1
|
|
Timer 2
|
|
Sampler 1
|
|
Post-Processor 1
|
|
Post-Processor 2
|
|
Assertion 1
|
|
|
|
Pre-Processor 1
|
|
Timer 1
|
|
Timer 2
|
|
Sampler 2
|
|
Post-Processor 1
|
|
Post-Processor 2
|
|
Assertion 1
|
|
|
|
</pre>
|
|
|
|
|
|
</p>
|
|
</blockquote>
|
|
</td></tr>
|
|
<tr><td><br></td></tr>
|
|
</table>
|
|
<table border="0" cellspacing="0" cellpadding="2" width="100%">
|
|
<tr><td bgcolor="#828DA6">
|
|
<font color="#ffffff" face="arial,helvetica,sanserif">
|
|
<a name="properties"><strong>4.10 Properties and Variables</strong></a>
|
|
</font>
|
|
</td></tr>
|
|
<tr><td>
|
|
<blockquote>
|
|
<p >
|
|
|
|
JMeter
|
|
<b >
|
|
properties
|
|
</b>
|
|
are defined in jmeter.properties (see
|
|
<a href="get-started.html#configuring_jmeter">
|
|
Gettting Started - Configuring JMeter
|
|
</a>
|
|
for more details).
|
|
|
|
<br >
|
|
</br>
|
|
|
|
Properties are global to jmeter, and are used to define some of the defaults JMeter uses.
|
|
For example the property remote_hosts defines the servers that JMeter will try to run remotely.
|
|
Properties can be referenced in test plans
|
|
- see
|
|
<a href="functions.html#__property">
|
|
Functions - read a property
|
|
</a>
|
|
-
|
|
but cannot be used for thread-specific values.
|
|
|
|
</p>
|
|
<p >
|
|
|
|
JMeter
|
|
<b >
|
|
variables
|
|
</b>
|
|
are local to each thread. The values may be the same for each thread, or they may be different.
|
|
|
|
<br >
|
|
</br>
|
|
|
|
If a variable is updated by a thread, only the thread copy of the variable is changed.
|
|
For example the
|
|
<a href="../usermanual/component_reference.html#Regular_Expression_Extractor">Regular Expression Extractor</a>
|
|
Post-Processor
|
|
will set its variables according to the sample that its thread has read, and these can be used later
|
|
by the same thread.
|
|
For details of how to reference variables and functions, see
|
|
<a href="functions.html">
|
|
Functions and Variables
|
|
</a>
|
|
|
|
|
|
</p>
|
|
</blockquote>
|
|
</td></tr>
|
|
<tr><td><br></td></tr>
|
|
</table>
|
|
</blockquote>
|
|
</p>
|
|
</td></tr>
|
|
<tr><td><br></td></tr>
|
|
</table>
|
|
<table>
|
|
<tr>
|
|
<td bgcolor="#525D76">
|
|
<div align="right"><a href="index.html"><font size=-1 color="#ffffff" face="arial,helvetica,sanserif">Index</font></a></div>
|
|
</td>
|
|
<td bgcolor="#525D76">
|
|
<div align="right"><a href="build-web-test-plan.html"><font size=-1 color="#ffffff" face="arial,helvetica,sanserif">Next</font></a></div>
|
|
</td>
|
|
<td bgcolor="#525D76">
|
|
<div align="right"><a href="build-test-plan.html"><font size=-1 color="#ffffff" face="arial,helvetica,sanserif">Prev</font></a></div>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<br>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr><td colspan="2">
|
|
<hr noshade size="1"/>
|
|
</td></tr>
|
|
<tr><td colspan="2">
|
|
<div align="center"><font color="#525D76" size="-1"><em>
|
|
Copyright © 1999-2008, Apache Software Foundation
|
|
</em></font></div>
|
|
</td></tr>
|
|
</table>
|
|
</body>
|
|
</html>
|
|
<!-- end the processing -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|