Menu
Open source RSS

Executors

Executors control how k6 schedules VUs and iterations. The executor that you choose depends on the goals of your test and the type of traffic you want to model.

Define the executor in executor key of the scenario object. The value is the executor name separated by hyphens.

JavaScript
export const options = {
  scenarios: {
    arbitrary_scenario_name: {
      //Name of executor
      executor: 'ramping-vus',
      // more configuration here
    },
  },
};

All executors

The following table lists all k6 executors and links to their documentation.

NameValueDescription
Shared iterationsshared-iterationsA fixed amount of iterations are
shared between a number of VUs.
Per VU iterationsper-vu-iterationsEach VU executes an exact number of iterations.
Constant VUsconstant-vusA fixed number of VUs execute as many
iterations as possible for a specified amount of time.
Ramping VUsramping-vusA variable number of VUs execute as many
iterations as possible for a specified amount of time.
Constant Arrival Rateconstant-arrival-rateA fixed number of iterations are executed
in a specified period of time.
Ramping Arrival Rateramping-arrival-rateA variable number of iterations are
executed in a specified period of time.
Externally Controlledexternally-controlledControl and scale execution at runtime
via k6’s REST API or the CLI.

Note

For any given scenario, you can’t guarantee that a specific VU can run a specific iteration.

With SharedArray and execution context variables, you can map a specific VU to a specific value in your test data. So the tenth VU could use the tenth item in your array (or the sixth iteration to the sixth item).

But, you cannot reliably map, for example, the tenth VU to the tenth iteration.