Skip to content

Introduction

Each tree node in your virtual user is called an Action.

Actions can be configured, moved, added or removed. When the Virtual User is executed, each action is processed from the top to the bottom.

Action panel

add-action

The action panel allows you to drag and drop a new action anywhere in your virtual user tree. Or you can use the right click menu from inside the tree. It gives you access to a menu similar to the action panel but only with the elements relevant to your position in the tree.

There are 5 types of actions:


Info

If you imported a JMeter script, you may also have generic actions that are not described in this page.

Containers

Containers, as their name indicates, are meant to contain children. As such, their scope is their children in the tree.

In practice it can mean that the response time of a Container is the total of response time of all its children or that a If container will execute its children only if his condition is true. For more details, please check each container dedicated page:

Icon Name Description
action-container-container Container Simple container for organization or measurement purpose.
action-container-random Random Container that plays a random children each time.
action-container-flow Flow Control Play only a fraction of the time, percent or iteration based.
action-container-if If Children are played if condition is true.
action-container-loop Loop Repeats children for a given amount of times.
action-container-while While Children keep repeating while condition is true.
action-container-foreach For Each Execute children for each value of a variable as long as variable_n exists.

HTTP Requests

HTTP Action

The HTTP Request Actions lets you send an HTTP/HTTPS request to a web server. There are height available types of HTTP request actions.

It is not recommended to create HTTP Requests actions manually since it can be a lot of work. Like creating all the required headers and the payload. It's easier to record an HAR or duplicate a similar request with copy and paste.

Warning

Once you select a type of HTTP request action it cannot be changed.


Variable extractors

Most web applications are sending and receiving dynamic parameters which change each time a user logs in, or makes an action on the application. Web browsers handle such dynamic parameters for you automatically.

OctoPerf is a protocol based tool because getting rid of the browsers allows for more efficient tests hardware wise, but also more reproducibility. Because of this though, dynamic parameters must be handled manually, or at least require some automation through correlation rules.

Variable Extractors are specially designed to address such dynamic behaviors. Behind this technical vocabulary hides a very simple concept: extract something from a server response, inject it in subsequent requests requiring it.

Once you acquired the logic, you can simulate any user on any application.

Icon Name Description
action-extractors-regexp Regexp Extract using Perl compatible regular expressions. This is the most efficient extractor CPU-wise but it can still have a significant impact on computing time if overrused.
action-extractors-json JMESPath Extract using JMES Path expressions. This requires loading the full JSON response in memory which can have an important memory impact.
action-extractors-json JSONPath Extract using JSON Path expressions. This requires loading the full JSON response in memory which can have an important memory impact.
action-extractors-css CSS Extract using CSS/JQuery expression. This requires loading the full HTML response in memory which can have an important memory impact.
action-extractors-xpath1 XPath1 Extract using XPath1 expression. XPath1 is deprecated and XPath2 should be preferred when applicable.
action-extractors-xpath2 XPath2 Extract using XPath2 expression. This requires loading the full XML response in memory which can have an important memory impact.

Logic Actions

Logic actions are different from containers because they cannot have children actions. They are independent actions that can sometime have a response time similarly to a container (like the script action does) but you cannot place other actions inside them. Even the link action fits that definition because it points to other actions while not technically containing a copy of them.

Icon Name Description
action-logic-delay Delay Adds a constant or random delay that is not taken into the response times.
action-logic-debug Debug This sampler prompts the current value of all variables or properties.
action-logic-script Script Scripts are the advanced mode of OctoPerf allowing you to interacting with the underlying JMeter at your leisure.
action-logic-link Link Link actions point to test fragments that can be reused across several virtual users.
action-logic-property Property The property action will share its value will all load generators involved in your test.
action-logic-property Put/Poll queue Read/Write from/to a queue that is shared for all virtual users of the same test.

Note

The Property, Put and Poll actions are unique additions to OctoPerf. As such they cannot be exported to a JMeter script like all the others since there is no equivalent action in JMeter.

Processors

Processors can only exist as children of HTTP actions, if a processor is placed at the same level than other HTTP requests it will apply to all of them instead of only its parent. In practice this is equivalent to placing the processor under all the requests of this node. This is better explained with an example on the script processors page.

Icon Name Description
action-processor-response Response Assertions Used to validate the content of responses.
action-processor-response Response Assertions Used to validate the content of JSON responses.
action-processor-script JSR223 Pre/Post Processors Similar to unique scripts but apply before their parent action is created or destroyed.
action-processor-sla SLA Apply Service level agreements on other actions.

Note

The SLA action is a unique addition to OctoPerf. As such it cannot be exported to a JMeter script like all the others since it wouldn't work there.