| <?xml version="1.0"?> |
| <!-- |
| ~ 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. |
| --> |
| |
| <!DOCTYPE document |
| [ |
| <!ENTITY sect-num '22'> |
| ]> |
| <document prev="regular_expressions.html" next="glossary.html" id="$Id: $"> |
| |
| <properties> |
| <title>User's Manual: Hints and Tips</title> |
| </properties> |
| |
| <body> |
| |
| <section name="§-num;. Hints and Tips" anchor="hints"> |
| <p> |
| This section is a collection of various hints and tips that have been suggested by various questions on the JMeter User list. |
| If you don't find what you are looking for here, please check the <a href="https://cwiki.apache.org/confluence/display/JMETER/Home">JMeter Wiki</a>. |
| Also, try search the JMeter User list; someone may well have already provided a solution. |
| </p> |
| <subsection name="§-num;.1 Passing variables between threads" anchor="variable_and_threads"> |
| <p> |
| JMeter variables have thread scope. This is deliberate, so that threads can act independently. |
| However sometimes there is a need to pass variables between different threads, in the same or different Thread Groups. |
| </p> |
| <p> |
| One way to do this is to use a property instead. |
| Properties are shared between all JMeter threads, so if one thread <a href="functions.html#__setProperty">sets a property</a>, |
| another thread can <a href="functions.html#__P">read</a> the updated value. |
| </p> |
| <p> |
| If there is a lot of information that needs to be passed between threads, then consider using a file. |
| For example you could use the <a href="component_reference.html#Save_Responses_to_a_file">Save Responses to a file</a> |
| listener or perhaps a BeanShell PostProcessor in one thread, and read the file using the HTTP Sampler "<code>file:</code>" protocol, |
| and extract the information using a PostProcessor or BeanShell element. |
| </p> |
| <p> |
| If you can derive the data before starting the test, then it may well be better to store it in a file, |
| read it using CSV Dataset. |
| </p> |
| </subsection> |
| |
| <subsection name="§-num;.2 Enabling Debug logging" anchor="debug_logging"> |
| <p> |
| Most test elements include debug logging. If running a test plan from the GUI, |
| select the test element and use the Help Menu to enable or disable logging. |
| The Help Menu also has an option to display the GUI and test element class names. |
| You can use these to determine the correct property setting to change the logging level. |
| </p> |
| |
| <p> |
| It is sometimes very useful to see Log messages to debug dynamic scripting languages like BeanShell or |
| Apache Groovy used in JMeter. |
| You can view log messages directly in JMeter GUI, to do so:</p> |
| <ul> |
| <li>use menu <menuchoice><guimenuitem>Options</guimenuitem><guimenuitem>Log Viewer</guimenuitem></menuchoice>, |
| a log console will appear at the bottom of the interface</li> |
| <li>Or click on the Warning icon in the upper right corner of GUI</li> |
| </ul> |
| By default this log console is disabled, you can enable it by changing in <code>jmeter.properties</code>: |
| <source>jmeter.loggerpanel.display=true</source> |
| |
| To avoid using too much memory, this components limits the number of characters used by this panel: |
| |
| <source>jmeter.loggerpanel.maxlength=80000</source> |
| </subsection> |
| |
| <subsection name="§-num;.3 Searching" anchor="searching"> |
| <p> |
| It is sometimes hard to find in a Test Plan tree and elements using a variable or containing a certain URL or parameter. |
| A new feature is now available since 2.6, you can access it in Menu Search. |
| It provides search with following options: |
| </p> |
| <dl> |
| <dt><code>Case sensitive</code></dt><dd>Makes search case sensitive</dd> |
| <dt><code>Regular exp.</code></dt><dd>Is text to search a regexp, if so Regexp will be searched in Tree of components, example "<code>\btest\b</code>" |
| will match any component that contains test in searchable elements of the component</dd> |
| </dl> |
| |
| <figure width="768" height="339" image="searching/raw-search.png">Figure 1 - Search raw text in TreeView</figure> |
| <figure width="767" height="316" image="searching/raw-search-result.png">Figure 2 - Result in TreeView</figure> |
| <figure width="772" height="319" image="searching/regexp-search.png">Figure 3 - Search Regexp in TreeView (in this example we search whole word)</figure> |
| <figure width="771" height="302" image="searching/regexp-search-result.png">Figure 4 - Result in TreeView</figure> |
| |
| </subsection> |
| |
| <subsection name="§-num;.4 JMeter and a HiDPI screen" anchor="hidpi"> |
| <description> |
| <p> |
| With <b>Java version 9 and up</b>, the HiDPI (High Dot Per Inch) screens are supported. |
| </p> |
| <p> |
| You can define the Java property <b>sun.java2d.uiScale</b> to change the scale of JMeter. |
| The value can be an integer or percentage value. |
| </p> |
| <p>For example, on Linux, with x2 factor (200%):</p> |
| <source> |
| $ export JVM_ARGS="-Dsun.java2d.uiScale=200%" |
| $ ./bin/jmeter</source> |
| <p> |
| With <b>Java version 8</b>, the HiDPI (High Dot Per Inch) screens aren't supported in the Swing API. |
| You can improve the JMeter's display on HiDPI screen by changing some properties:</p> |
| <dl> |
| <dt><code>jmeter.hidpi.mode</code></dt> |
| <dd>set to <code>true</code> to activate a '<em>pseudo</em>'-hidpi mode allowing to increase size of some UI elements</dd> |
| <dt><code>jmeter.hidpi.scale.factor</code></dt> |
| <dd>set to <code>2.0</code> to scale the size of some UI elements</dd> |
| <dt><code>jmeter.toolbar.icons.size</code></dt> |
| <dd>with these values: <code>22x22</code> (default size), <code>32x32</code> or <code>48x48</code> (Suggested value for HiDPI)</dd> |
| <dt><code>jmeter.tree.icons.size</code></dt> |
| <dd>with these values: <code>19x19</code> (default size), <code>24x24</code>, <code>32x32</code> (Suggested value for HiDPI) or <code>48x48</code></dd> |
| </dl> |
| <p>Additionally you can increase the font size of the text areas in some elements like JSR223 sampler by changing theses properties:</p> |
| <dl> |
| <dt><code>jsyntaxtextarea.font.family</code></dt> |
| <dd>set to <code>Hack</code> to activate and to change the font and their size</dd> |
| <dt><code>jsyntaxtextarea.font.size</code></dt> |
| <dd>set to a greater value, like <code>28</code> (Suggested value for HiDPI)</dd> |
| </dl> |
| <note>This is not a full HiDPI support and only affects |
| <ul> |
| <li>JMeter tree nodes</li> |
| <li>Icons in the toolbar</li> |
| <li>Tables content</li> |
| <li>Font size into text areas</li> |
| </ul> |
| </note> |
| </description> |
| </subsection> |
| |
| <subsection name="§-num;.5 Autosave process configuration" anchor="autosave"> |
| <description> |
| <p>Since JMeter 3.0, JMeter automatically saves up to ten backups of every saved jmx files. When enabled, just before the jmx file is saved, |
| it will be backed up to the <code>${JMETER_HOME}/backups</code> subfolder. Backup files are named after the saved jmx file and assigned a |
| version number that is automatically incremented, ex: <code>test-plan-000001.jmx</code>, <code>test-plan-000002.jmx</code>, <code>test-plan-000003.jmx</code>, etc. |
| To control auto-backup, add the following properties to <code>user.properties</code>.</p> |
| <dl> |
| <dt><code>backup_on_save</code></dt> |
| <dd> |
| To enable/disable auto-backup, set the following property to <code>true</code>/<code>false</code> (default is <code>true</code>): |
| <source>jmeter.gui.action.save.backup_on_save=false</source> |
| </dd> |
| <dt><code>backup_directory</code></dt> |
| <dd> |
| The backup directory can also be set to a different location. Setting the <code>jmeter.gui.action.save.backup_directory</code> property |
| to the path of the desired directory |
| will cause backup files to be stored inside instead of the <code>${JMETER_HOME}/backups</code> folder. If the specified directory does not exist |
| it will be created. Leaving this property unset will cause the <code>${JMETER_HOME}/backups</code> folder to be used. |
| <source>jmeter.gui.action.save.backup_directory=/path/to/backups/dir</source> |
| </dd> |
| <dt><code>keep_backup_max_hours</code></dt> |
| <dd> |
| You can also configure the maximum time (in hours) that backup files should be preserved since the most recent save time. |
| By default a zero expiration time is set which instructs JMeter to preserve backup files for ever. |
| Use the following property to control max preservation time: |
| <source>jmeter.gui.action.save.keep_backup_max_hours=0</source> |
| </dd> |
| <dt><code>keep_backup_max_count</code></dt> |
| <dd> |
| You can set the maximum number of backup files that should be preserved. By default <code>10</code> backups will be kept. |
| Setting this to zero will cause the backups to never being deleted (unless <code>keep_backup_max_hours</code> is set to a non null value) |
| Maximum backup files selection is processed <em>after</em> time expiration selection, so even if you set one year as the expiry time, |
| only the <code>keep_backup_max_count</code> most recent backups files will be kept. |
| <source>jmeter.gui.action.save.keep_backup_max_count=10</source> |
| </dd> |
| </dl> |
| </description> |
| </subsection> |
| |
| <subsection name="§-num;.5 Adding Elements with Hotkeys" anchor="component_hotkeys"> |
| <p> |
| When you do intense scripting with JMeter, there is a way to add elements to test plan quickly |
| with keyboard shortcuts. Default bindings are: |
| </p> |
| <dl> |
| <dt> |
| <keycombo><keysym>Ctrl</keysym><keysym>0</keysym></keycombo> |
| </dt> |
| <dd>Thread Group</dd> |
| <dt> |
| <keycombo><keysym>Ctrl</keysym><keysym>1</keysym></keycombo> |
| </dt> |
| <dd>HTTP Request</dd> |
| <dt> |
| <keycombo><keysym>Ctrl</keysym><keysym>2</keysym></keycombo> |
| </dt> |
| <dd>Regular Expression Extractor</dd> |
| <dt> |
| <keycombo><keysym>Ctrl</keysym><keysym>3</keysym></keycombo> |
| </dt> |
| <dd>Response Assertion</dd> |
| <dt> |
| <keycombo><keysym>Ctrl</keysym><keysym>4</keysym></keycombo> |
| </dt> |
| <dd>Constant Timer</dd> |
| <dt> |
| <keycombo><keysym>Ctrl</keysym><keysym>5</keysym></keycombo> |
| </dt> |
| <dd>Test Action</dd> |
| <dt> |
| <keycombo><keysym>Ctrl</keysym><keysym>6</keysym></keycombo> |
| </dt> |
| <dd>JSR223 PostProcessor</dd> |
| <dt> |
| <keycombo><keysym>Ctrl</keysym><keysym>7</keysym></keycombo> |
| </dt> |
| <dd>JSR223 PreProcessor</dd> |
| <dt> |
| <keycombo><keysym>Ctrl</keysym><keysym>8</keysym></keycombo> |
| </dt> |
| <dd>Debug Sampler</dd> |
| <dt> |
| <keycombo><keysym>Ctrl</keysym><keysym>9</keysym></keycombo> |
| </dt> |
| <dd>View Results Tree</dd> |
| </dl> |
| <note>The binding above are made for Windows QWERTY keyboards. For other platforms and keyboards ensure you adapt those values.</note> |
| <p> |
| To change these binding, please find "<code>gui.quick_*</code>" properties within <code>jmeter.properties</code> file as example, |
| it is recommended to put overrides for them into <code>user.properties</code> file. |
| </p> |
| </subsection> |
| <subsection name="§-num;.6 Browser renderer is not displaying in View Results Tree" anchor="browser_renderer_view_results_tree"> |
| <p> |
| If you're using OpenJDK or Oracle Java version higher than 8, you'll notice that Browser Renderer is not displayed. |
| This is because JavaFX is not embedded. |
| In order to have this element you need to follow the below procedure. |
| </p> |
| <ul> |
| <li>Follow this <a href="https://openjfx.io/openjfx-docs/" >documentation</a> to install Java FX for your OS and Java version. <br/> |
| If you don't want to read it, here are the necessary steps: |
| <ul> |
| <li>Go to <a href="https://gluonhq.com/products/javafx/">Gluon website</a> and download the runtime for your Java version and OS</li> |
| <li>Unzip it</li> |
| <li>Then configure a variable pointing to lib folder:<br/> |
| Linux/MacOSX:<br/> |
| <source>export PATH_TO_FX=path/to/javafx-sdk-XX/lib</source> |
| Windows:<br/> |
| <source>set PATH_TO_FX=path/to/javafx-sdk-XX/lib</source> |
| </li> |
| </ul> |
| </li> |
| <li>Then open bin/jmeter file for Linux/MacOSX, bin/jmeter.bat for Windows, find JAVA9_OPTS variable and add:<br/> |
| Linux/MacOSX:<br/> |
| <source>--module-path $PATH_TO_FX --add-modules javafx.web,javafx.swing</source> |
| Windows:<br/> |
| <source>--module-path %PATH_TO_FX% --add-modules javafx.web,javafx.swing</source> |
| </li> |
| <li></li> |
| </ul> |
| </subsection> |
| </section> |
| |
| </body> |
| </document> |