Shortcuts: Basics
| Windows Shortcuts | macOS Shortcuts | Name | Description |
|---|---|---|---|
| File Operations | |||
| Ctrl + O | ⌘Cmd + O | Open File | Opens a dialog to load a test (JMX file) from the file system |
| Ctrl + S | ⌘Cmd + S | Save | Saves the current test plan to the open file |
| Ctrl + ⇧Shift + S | ⌘Cmd + ⇧Shift + S | Save All | Saves all open test plans and modified files |
| Ctrl + Q | ⌘Cmd + Q | Exit | Exits JMeter GUI (with confirmation if there are unsaved changes) |
| Ctrl + W | — | Close Current Test | Closes the currently open test plan (in macOS the shortcut does not work) |
| Edit / Helper | |||
| Ctrl + C | ⌘Cmd + C | Copy | Copies the selected test plan element to the clipboard |
| Ctrl + ⇧Shift + C | ⌘Cmd + ⇧Shift + C | Duplicate Node | Creates an exact copy of the selected test plan node (Duplicate Node) |
| Ctrl + X | ⌘Cmd + X | Cut | Cuts the selected element to the clipboard (Cut) |
| Ctrl + V | ⌘Cmd + V | Paste | Pastes the clipboard contents into the current test plan |
| Delete | Delete | Delete Node | Deletes the selected node from the test plan tree |
| Ctrl + F | Ctrl + F | Function Dialog | Opens Function Helper Dialog — a reference for JMeter functions with parameters and examples |
| Debug / Info | |||
| Ctrl + D | Ctrl + D | Debug Off | Toggles the selected element's logging level to INFO (disables debug mode) |
| Ctrl + ⇧Shift + D | Ctrl + ⇧Shift + D | Debug On | Toggles the selected element's logging level to DEBUG (enables debug mode) |
| Ctrl + M | Ctrl + M | SSL Manager | Opens SSL Manager to configure javax.net.ssl.keyStore parameter (manage SSL/TLS certificates) |
| Ctrl + W | — | Node Class | Outputs GUI and Test Element class information for the selected node to the console (in macOS the shortcut has been removed) |
Shortcuts: Test Control
| Windows Shortcuts | macOS Shortcuts | Name | Description |
|---|---|---|---|
| Run / Stop | |||
| Ctrl + R | ⌘Cmd + R | Run Test | Runs the current test plan in GUI mode |
| Ctrl + ⇧Shift + R | ⌘Cmd + ⇧Shift + R | Remote Start | Runs the test plan on all remote workers (Remote Start) |
| Ctrl + ⇧Shift + N | ⌘Cmd + ⇧Shift + N | Run Without Delays | Runs the test plan ignoring Wait (Pause) elements between components |
| Ctrl + . | ⌘Cmd + . | Stop Test | Stops the current test plan execution (Graceful Stop) |
| Ctrl + , | — | Emergency Stop | Force stops and terminates the test (Shutdown Test, does not work in macOS) |
| Alt + X | — | Remote Stop All | Sends stop command to all remote workers (Remote Stop All) |
| Alt + Z | — | Remote Shutdown | Sends emergency stop command to all remote workers (Remote Shutdown All) |
| Display / Structure | |||
| Ctrl + E | ⌘Cmd + E | Clear Results | Fully clears all test run results (Clear All Run Results) |
| Ctrl + ⇧Shift + E | ⌘Cmd + ⇧Shift + E | Clear Selected | Clears run results only for the selected element (Clear Selected) |
| Ctrl + T | ⌘Cmd + T | Toggle Element | Toggles the state of the selected element (Enable / Disable Test Element) |
| Ctrl + G | ⌘Cmd + G | Node Screenshot | Creates a screenshot of only the selected element's GUI (Make a screenshot of selected node) |
| Ctrl + ⇧Shift + G | ⌘Cmd + ⇧Shift + G | JMeter Screenshot | Creates a screenshot of the entire JMeter GUI interface |
| Ctrl + - | ⌘Cmd + - | Collapse All | Collapses all nodes in the test plan tree (Collapse All, does not work in macOS) |
| Ctrl + ⇧Shift + - | ⌘Cmd + ⇧Shift + - | Expand All | Expands all nodes in the test plan tree (Expand All, does not work in macOS) |
| Ctrl + F1 | — | Functions / Help | Alternative call to Function Helper Dialog (Open Function Helper Dialog) |
| Ctrl + ? | ⌘Cmd + ? | Open Help | Opens JMeter contextual help (Open Help, does not work in macOS) |
JMeter Commands (CLI / Non-GUI)
| Command | Name | Description |
|---|---|---|
| Running Tests | ||
| jmeter -n -t test_plan.jmx -l result.jtl | Run Test | Non-GUI test plan execution. Flag -n specifies non-GUI mode, -t is the test path, -l is the results log file path |
| jmeter -n -t test_plan.jmx -e -o ./reports -r | Run + Report | Non-GUI execution with HTML report generation to the specified directory. -e enables report generation, -o is the report folder path |
| jmeter -n -t test_plan.jmx -r -Jserver.port=1099 | Remote Run | Run on all remote RMI workers (-r = run all remote hosts). Can specify specific hosts via -R host1,host2 |
| jmeter -n -t test_plan.jmx -Dhttp.port=8080 | JVM Property | Passing a JVM property at startup. Used to configure Java parameters (e.g., port, encoding, proxy) |
| Report Generation | ||
| jmeter -g result.jtl -o ./report_dir -e | HTML Report | Generate HTML Dashboard report from an existing JTL results file. Creates interactive reports with charts |
| jmeter -g result.jtl -o ./report_dir -t template.html | Report with Template | Generate HTML report using a custom HTML template instead of the default JMeter template |
| jmeter -g result.jtl -o ./report_dir --csv input.csv | CSV Parameters | Generate report with additional CSV data. Allows adding custom parameters to the report |
| jmeter -g result.jtl -o ./report_dir --include-sampler sampler_name | Include Sampler | Filter report — includes only specified samplers by name in the report. Useful for large tests with many requests |
| Validation / Conversion | ||
| jmeter -g result.jtl -o ./report_dir --jtl-format 2.1 | JTL Format | Specifies JTL file format for backward compatibility (format 2.1, 2.2, 2.3, 3.0, etc.) |
| jmeter --validate -t test_plan.jmx | XML Validation | Validates the test file against the JMeter scheme without running. Returns validation errors to console |
| jmeter --testplan-conf mode:validate -t test_plan.jmx | Plan Validation | Validates the test plan by checking all references, functions, and configurations |
JMeter Functions (Function Helper)
| Function Syntax | Name | Description |
|---|---|---|
| String Operations | ||
| ${__EscapeChars(string)} | Escape | Escapes special characters in a string for use in XML/JSON |
| ${__EscapeChar(char, flag)} | Escape Character | Escapes a specific character according to the given flag. Useful for dynamic string formatting |
| ${__UnEscapeChars(string)} | Unescape | Reverse operation — unescapes escaped characters in a string |
| ${__unescape(string)} | Minus Unescape | Unescapes escape characters (alternative function name). Supports callback without arguments |
| ${__substring(string, begin, end)} | Substring | Extracts a substring from the string at specified positions (begin — start index, end — end index) |
| ${__replace(string, pattern, replacement)} | Replace Substring | Replaces substrings matching regex-pattern with replacement. Regular expressions are supported |
| ${__replaceFirst(string, pattern, replacement)} | First Match | Replaces the first found regex pattern match. Used in report templates and parsing |
| ${__toBase64(string)} | Base64 Code | Encodes a string to Base64 format. Used for encoding authorization headers |
| ${__fromBase64(base64_string)} | Decode | Decodes a string from Base64 format. Useful for decoding tokens and parameters |
| ${__toBytes(string)} | To Bytes | Converts a string to a byte array. Used for binary data in requests |
| Dates and Time | ||
| ${__time(yyyy-MM-dd HH:mm:ss,)} | Time (Format) | Returns the current date/time in the specified Java SimpleDateFormat format. Empty second argument — variable is not saved |
| ${__timeShort(,)} | Short Date | Format: yyyy-MM-dd. Alternative to __time with fixed format for short dates |
| ${__timeLong(,)} | Full Date | Format: yyyy-MM-dd HH:mm:ss. Alternative to __time with fixed format for full dates |
| ${__timeOffset(,1)} | Offset | Returns time with offset. Second argument — milliseconds (positive/negative offset) |
| ${__date(pattern,)}${__date(pattern,)}${__date(,)}${__date(pattern,)} | Date (Universal) | Universal date function. Supports all Java Date Format formats. Can save the result to a variable |
| ${__counter(0,false)} | Counter | Global counter. First argument — start value (0), second — true for unique per thread |
| ${__counterUUID,} | UUID Counter | Generate unique ID based on counter. Ensures sequential numbering without collisions between threads |
| Random Values | ||
| ${__Random(1,100,)} | Random Number | Generates a random number between min and max. Third argument — variable name to store the result |
| ${__RandomString(10,a-z,)} | Random String | Generates a random string of specified length from given characters (length, character set, variable) |
| ${__RandomFromValue(value1|value2|value3,)} | Random from List | Chooses a random value from a pipe-separated list. Used for request parameters |
| ${__RandomInt(min,max,var_name)} | Random Integer | Generate a random integer. Returns the result to the specified variable or directly |
| ${__UUID,} | UUID | Generates a unique UUID v4 identifier. Used for creating unique test data |
| ${__javaScript(Math.random(),)} | JavaScript Math | JavaScript random number generator. Can use any Math functions for variety |
| Variables | ||
| ${__P(property_name,default)} | System Property | Gets a JVM system property value. If property not found — returns the default value |
| ${__groovy('hello')} | Groovy Script | Execute Groovy script. Allows performing arbitrary calculations on Groovy directly in the test |
| ${__javaScript(expression,var_name)} | JavaScript Script | Execute JavaScript expression in Java (Nashorn). Supports all JS functions: Math, Date, String, etc. |
| ${__groovy(use, import)} | Groovy | Groovy function for complex processing. Supports library imports and full programming |
| ${__Jexl3(expression,)} | Jexl3 Expression | Apache Jexl3 expression. Supports operators, functions, string operations. Alternative to __javaScript |