| <?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 '24'> |
| ]> |
| <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="http://wiki.apache.org/jmeter">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 |
| 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 with a HiDPI screen on Linux or Windows" anchor="hidpi"> |
| <description> |
| <p> |
| The HiDPI mode isn't currently support by the Swing API in Java on Linux, MacOS or Windows. Therefore |
| JMeter can be very hard to read with a HiDPI screen (little icons and chars). |
| </p> |
| <p>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> |
| <note>This is not a full HiDPI support and only affects |
| <ul> |
| <li>JMeter tree nodes</li> |
| <li>icons in the menus</li> |
| <li>Tables content</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> |
| </section> |
| |
| </body> |
| </document> |