<!DOCTYPE html SYSTEM "about:legacy-compat">
<html lang="en">
<head>
<META http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
<title>Apache JMeter
          -
          User's Manual: Building a Test Plan</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://fonts.googleapis.com/css?family=Merriweather:400normal" rel="stylesheet" type="text/css">
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="../css/new-style.css">
<link rel="apple-touch-icon-precomposed" href="../images/apple-touch-icon.png">
<link rel="icon" href="../images/favicon.png">
<meta name="msapplication-TileColor" content="#ffffff">
<meta name="msapplication-TileImage" content="../images/mstile-144x144.png">
<meta name="theme-color" content="#ffffff">
</head>
<body role="document">
<a href="#content" class="hidden">Main content</a>
<div class="header">
<!--
            APACHE LOGO
          -->
<div>
<a href="https://www.apache.org"><img title="Apache Software Foundation" class="asf-logo logo" src="../images/asf-logo.svg" alt="Logo ASF"></a>
</div>
<!--
              PROJECT LOGO
            -->
<div>
<a href="https://jmeter.apache.org/"><img class="logo" src="../images/logo.svg" alt="Apache JMeter"></a>
</div>
<div class="banner">
<a href="https://www.apache.org/events/current-event.html"><img src="https://www.apache.org/events/current-event-234x60.png" alt="Current Apache event teaser"></a>
<div class="clear"></div>
</div>
</div>
<div class="nav">
<ul class="menu">
<li onClick="return true">
<div class="menu-title">About</div>
<ul>
<li>
<a href="../index.html">Overview</a>
</li>
<li>
<a href="https://www.apache.org/licenses/">License</a>
</li>
</ul>
</li>
</ul>
<ul class="menu">
<li onClick="return true">
<div class="menu-title">Download</div>
<ul>
<li>
<a href="../download_jmeter.cgi">Download Releases</a>
</li>
<li>
<a href="../changes.html">Release Notes</a>
</li>
</ul>
</li>
</ul>
<ul class="menu">
<li onClick="return true">
<div class="menu-title">Documentation</div>
<ul>
<li>
<a href="../usermanual/get-started.html">Get Started</a>
</li>
<li>
<a href="../usermanual/index.html">User Manual</a>
</li>
<li>
<a href="../usermanual/best-practices.html">Best Practices</a>
</li>
<li>
<a href="../usermanual/component_reference.html">Component Reference</a>
</li>
<li>
<a href="../usermanual/functions.html">Functions Reference</a>
</li>
<li>
<a href="../usermanual/properties_reference.html">Properties Reference</a>
</li>
<li>
<a href="../changes_history.html">Change History</a>
</li>
<li>
<a href="../api/index.html">Javadocs</a>
</li>
<li>
<a href="https://cwiki.apache.org/confluence/display/JMETER/Home">JMeter Wiki</a>
</li>
<li>
<a href="https://cwiki.apache.org/confluence/display/JMETER/JMeterFAQ">FAQ (Wiki)</a>
</li>
</ul>
</li>
</ul>
<ul class="menu">
<li onClick="return true">
<div class="menu-title">Tutorials</div>
<ul>
<li>
<a href="../usermanual/jmeter_distributed_testing_step_by_step.html">Distributed Testing</a>
</li>
<li>
<a href="../usermanual/jmeter_proxy_step_by_step.html">Recording Tests</a>
</li>
<li>
<a href="../usermanual/junitsampler_tutorial.html">JUnit Sampler</a>
</li>
<li>
<a href="../usermanual/jmeter_accesslog_sampler_step_by_step.html">Access Log Sampler</a>
</li>
<li>
<a href="../usermanual/jmeter_tutorial.html">Extending JMeter</a>
</li>
</ul>
</li>
</ul>
<ul class="menu">
<li onClick="return true">
<div class="menu-title">Community</div>
<ul>
<li>
<a href="../issues.html">Issue Tracking</a>
</li>
<li>
<a href="https://www.apache.org/security/">Security</a>
</li>
<li>
<a href="../mail.html">Mailing Lists</a>
</li>
<li>
<a href="../svnindex.html">Source Repositories</a>
</li>
<li>
<a href="../building.html">Building and Contributing</a>
</li>
<li>
<a href="https://projects.apache.org/project.html?jmeter">Project info at Apache</a>
</li>
<li>
<a href="https://cwiki.apache.org/confluence/display/JMETER/JMeterCommitters">Contributors</a>
</li>
</ul>
</li>
</ul>
<ul class="menu">
<li onClick="return true">
<div class="menu-title">Foundation</div>
<ul>
<li>
<a href="https://www.apache.org/">The Apache Software Foundation (ASF)</a>
</li>
<li>
<a href="https://www.apache.org/foundation/getinvolved.html">Get Involved in the ASF</a>
</li>
<li>
<a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
</li>
<li>
<a href="https://www.apache.org/foundation/thanks.html">Thanks</a>
</li>
</ul>
</li>
</ul>
</div>
<div class="main" id="content">
<div class="social-media">
<ul class="social-media-links">
<li class="twitter">
<a href="https://twitter.com/ApacheJMeter" title="Follow us on Twitter"><i class="fa fa-twitter" aria-hidden="true"></i>Twitter</a>
</li>
<li class="github">
<a href="https://github.com/apache/jmeter" title="Fork us on github"><i class="fa fa-github" aria-hidden="true"></i>github</a>
</li>
</ul>
</div>
<ul class="pagelinks">
<li>
<a href="get-started.html">&lt; Prev</a>
</li>
<li>
<a href="../index.html">Index</a>
</li>
<li>
<a href="test_plan.html">Next &gt;</a>
</li>
</ul>
<div class="section">
<h1>2. Building a Test Plan</h1>

<p>A test plan describes a series of steps JMeter will execute when run.  A complete
test plan will consist of one or more Thread Groups, logic controllers, sample generating
controllers, listeners, timers, assertions, and configuration elements.
</p>


<div class="subsection">
<h2 id="add_remove">2.1 Adding and Removing Elements<a class="sectionlink" href="#add_remove" title="Link to here">&para;</a>
</h2>

<p>Adding <a href="test_plan.html">elements to a test plan</a> can be done by right-clicking on an element in the
tree, and choosing a new element from the "<span class="code">add</span>" list.  Alternatively, elements can
be loaded from file and added by choosing the "<span class="code">merge</span>" or "<span class="code">open</span>" option.</p>


<p>To remove an element, make sure the element is selected, right-click on the element,
and choose the "<span class="code">remove</span>" option.</p>

</div>


<div class="subsection">
<h2 id="load_save">2.2 Loading and Saving Elements<a class="sectionlink" href="#load_save" title="Link to here">&para;</a>
</h2>

<p>To load an element from file, right click on the existing tree elements to which
you want to add the loaded element, and select the "<span class="code">merge</span>" option.  Choose the file where
your elements are saved.  JMeter will merge the elements into the tree.</p>


<p>To save tree elements, right click on an element and choose the "<span class="code">Save Selection As &hellip;</span>" option.
JMeter will save the element selected, plus all child elements beneath it.  In this way,
you can save test tree fragments and individual elements for later use.</p>


</div>


<div class="subsection">
<h2 id="config_element">2.3 Configuring Tree Elements<a class="sectionlink" href="#config_element" title="Link to here">&para;</a>
</h2>

<p>Any element in the test tree will present controls in JMeter's right-hand frame.  These
controls allow you to configure the behavior of that particular test element.  What can be
configured for an element depends on what type of element it is.</p>


<div class="clear"></div>
<div class="note">The Test Tree itself can be manipulated by dragging and dropping components around the test tree.</div>
<div class="clear"></div>

</div>


<div class="subsection">
<h2 id="saving">2.4 Saving the Test Plan<a class="sectionlink" href="#saving" title="Link to here">&para;</a>
</h2>

<p>Although it is not required, we recommend that you save the Test Plan to a
file before running it.  To save the Test Plan, select "<span class="code">Save</span>" or "<span class="code">Save Test Plan As &hellip;</span>" from the
File menu (with the latest release, it is no longer necessary to select the
Test Plan element first).</p>


<div class="clear"></div>
<div class="note">JMeter allows you to save the entire Test Plan tree or
only a portion of it.  To save only the elements located in a particular "branch"
of the Test Plan tree, select the Test Plan element in the tree from which to start
the "branch", and then click your right mouse button to access the "<span class="code">Save Selection As &hellip;</span>" menu item.
Alternatively, select the appropriate Test Plan element  and then select "<span class="code">Save Selection As &hellip;</span>" from
the Edit menu.
</div>
<div class="clear"></div>

</div>


<div class="subsection">
<h2 id="run">2.5 Running a Test Plan<a class="sectionlink" href="#run" title="Link to here">&para;</a>
</h2>

<p>To run your test plan, choose "<span class="code">Start</span>" (<span class="keycombo"><span class="keysym">Control</span>&nbsp;+&nbsp;<span class="keysym">r</span></span>)
from the "<span class="code">Run</span>" menu item.
When JMeter is running, it shows a small green box at the right hand end of the section just under the menu bar.
You can also check the "<span class="code">Run</span>" menu.
If "<span class="code">Start</span>" is disabled, and "<span class="code">Stop</span>" is enabled,
then JMeter is running your test plan (or, at least, it thinks it is).</p>

<p>
The numbers to the left of the green box are the number of active threads / total number of threads.
These only apply to a locally run test; they do not include any threads started on remote systems when using client-server mode.
</p>

<div class="clear"></div>
<div class="note">Using GUI mode as described here should only be used when debugging your Test Plan. To run the real load test, use CLI mode.</div>
<div class="clear"></div>

</div>


<div class="subsection">
<h2 id="stop">2.6 Stopping a Test<a class="sectionlink" href="#stop" title="Link to here">&para;</a>
</h2>

<p>
There are two types of stop command available from the menu:
<ul>

<li>
<span class="code">Stop</span> (<span class="keycombo"><span class="keysym">Control</span>&nbsp;+&nbsp;<span class="keysym">.</span></span>) - stops the threads immediately if possible.
Many samplers are Interruptible which means that active samples can be terminated early.
The stop command will check that all threads have stopped within the default timeout, which is 5000 ms = 5 seconds.
[This can be changed using the JMeter property <span class="code">jmeterengine.threadstop.wait</span>]
If the threads have not stopped, then a message is displayed.
The Stop command can be retried, but if it fails, then it is necessary to exit JMeter to clean up.
</li>

<li>
<span class="code">Shutdown</span> (<span class="keycombo"><span class="keysym">Control</span>&nbsp;+&nbsp;<span class="keysym">,</span></span>) - requests the
threads to stop at the end of any current work.
Will not interrupt any active samples.
The modal shutdown dialog box will remain active until all threads have stopped.</li>

</ul>
If Shutdown is taking too long. Close the Shutdown dialog box and select <span class="code">Run</span>/<span class="code">Stop</span>, or just press <span class="keycombo"><span class="keysym">Control</span>&nbsp;+&nbsp;<span class="keysym">.</span></span>.
</p>

<p>
When running JMeter in CLI mode, there is no Menu, and JMeter does not react to keystrokes such as <span class="keycombo"><span class="keysym">Control</span>&nbsp;+&nbsp;<span class="keysym">.</span></span>.
So JMeter CLI mode will listen for commands on a specific port (default <span class="code">4445</span>, see the JMeter property <span class="code">jmeterengine.nongui.port</span>).
JMeter supports automatic choice of an alternate port if the default port is being used 
(for example by another JMeter instance). In this case, JMeter will try the next higher port, continuing until
it reaches the JMeter property <span class="code">jmeterengine.nongui.maxport</span>) which defaults to <span class="code">4455</span>.
If <span class="code">maxport</span> is less than or equal to <span class="code">port</span>, port scanning will not take place.
<br>
The chosen port is displayed in the console window.
<br>
The commands currently supported are:
<ul>

<li>
<span class="code">Shutdown</span> - graceful shutdown</li>

<li>
<span class="code">StopTestNow</span> - immediate shutdown</li>

</ul>
These commands can be sent by using the <span class="code">shutdown[.cmd|.sh]</span> or <span class="code">stoptest[.cmd|.sh]</span> script
respectively. The scripts are to be found in the JMeter <span class="code">bin</span> directory.
The commands will only be accepted if the script is run from the same host.
</p>

</div>


<div class="subsection">
<h2 id="error_reporting">2.7 Error reporting<a class="sectionlink" href="#error_reporting" title="Link to here">&para;</a>
</h2>

<p>
JMeter reports warnings and errors to the <span class="code">jmeter.log</span> file, as well as some information on the test run itself.
JMeter shows the number of warnings/errors found in <span class="code">jmeter.log</span> file next to the warning icon (triangle) at the right hand end of its window. 
Click on the warning icon to show the <span class="code">jmeter.log</span> file at the bottom of JMeter's window.
Just occasionally there may be some errors that JMeter is unable to trap and log; these will appear on the command console.
If a test is not behaving as you expect, please check the log file in case any errors have been reported (e.g. perhaps a syntax error in a function call).
</p>

<p>
Sampling errors (e.g. HTTP 404 - file not found) are not normally reported in the log file. 
Instead these are stored as attributes of the sample result.
The status of a sample result can be seen in the various different Listeners.
</p>

</div>


</div>
<ul class="pagelinks">
<li>
<a href="get-started.html">&lt; Prev</a>
</li>
<li>
<a href="../index.html">Index</a>
</li>
<li>
<a href="test_plan.html">Next &gt;</a>
</li>
</ul>
<div class="share-links">
      Share this page:
      <ul>
<li class="fb">
<a data-social-url="https://facebook.com/sharer/sharer.php?u=" title="Share on facebook"><i class="fa fa-facebook" aria-hidden="true"></i>share</a>
</li>
<li class="twitter">
<a data-social-url="https://twitter.com/intent/tweet?url=" title="Tweet on twitter"><i class="fa fa-twitter" aria-hidden="true"></i>tweet</a>
</li>
</ul>
</div>
<a href="#top" id="topButton">Go to top</a>
</div>
<div class="footer">
<div class="copyright">
            Copyright &copy;
            1999 &ndash;
            2019
            , Apache Software Foundation
          </div>
<div class="trademarks">Apache, Apache JMeter, JMeter, the Apache
            feather, and the Apache JMeter logo are
            trademarks of the
            Apache Software Foundation.
          </div>
</div>
<script>(function(){
            "use strict";
            // enable 'go to top' button functionality
            document.addEventListener('scroll', function() {
                if (document.body.scrollTop > 500 || document.documentElement.scrollTop > 500) {
                    document.getElementById("topButton").style.display = "block";
                } else {
                    document.getElementById("topButton").style.display = "none";
                }
            });
            // fill in the current location into social links on this page.
            var as = document.getElementsByTagName('a');
            var loc = document.location.href;
            if (!loc.toLowerCase().startsWith('http')) {
                return;
            }
            for (var i=0; i<as.length; i++) {
                var href = as[i].getAttribute('data-social-url');
                if (href !== null) {
                    as[i].href = href + encodeURIComponent(loc);
                }
            }
        })();</script>
</body>
</html>
