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.
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:
- Containers actions can contain any other action,
- HTTP Requests actions will send an HTTP request to your server,
- Variable extractors to extract variables from responses.
- Logic Actions like scripts, delays or fragments,
- Processors like assert responses or scripts.
If you imported a JMeter script, you may also have generic actions that are not described in this page.
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:
|Container||Simple container for organization or measurement purpose.|
|Random||Container that plays a random children each time.|
|Flow Control||Play only a fraction of the time, percent or iteration based.|
|If||Children are played if condition is true.|
|Loop||Repeats children for a given amount of times.|
|While||Children keep repeating while condition is true.|
|For Each||Execute children for each value of a variable as long as variable_n exists.|
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.
Once you select a type of HTTP request action it cannot be changed.
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.
|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.|
|JSON||Extract using JSON Path expressions. This requires loading the full JSON response in memory which can have an important memory impact.|
|CSS||Extract using CSS/JQuery expression. This requires loading the full HTML response in memory which can have an important memory impact.|
|XPath1||Extract using XPath1 expression. XPath1 is deprecated and XPath2 should be preferred when applicable.|
|XPath2||Extract using XPath2 expression. This requires loading the full XML response in memory which can have an important memory impact.|
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.
|Delay||Adds a constant or random delay that is not taken into the response times.|
|Debug||This sampler prompts the current value of all variables or properties.|
|Script||Scripts are the advanced mode of OctoPerf allowing you to interacting with the underlying JMeter at your leisure.|
|Link||Link actions point to test fragments that can be reused across several virtual users.|
|Property||The property action will share its value will all load generators involved in your test.|
The Property 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.
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.
|Response Assertions||Used to validate the content of responses.|
|JSR223 Pre/Post Processors||Similar to unique scripts but apply before their parent action is created or destroyed.|
|SLA||Apply Service level agreements on other actions.|
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.