Follow along to learn how to:
- Run a test.
- Add virtual users.
- Increase the test duration.
- Ramp the number of requests up and down as the test runs.
With these example snippets, you'll run the test with your machine's resources. But, if you have a k6 Cloud account, you can also use the k6 cloud command to outsource the test to k6 servers.
Running local tests
To run a simple local script:
Copy the following code, paste it into your favorite editor, and save it as script.js:
script.jsThen, run k6 with this command:
CLIDockerDocker in Win PowerShell
Adding more VUs
Now run a load test with more than one virtual user and a longer duration:
Running a 30-second, 10-VU load test
k6 works with the concept of virtual users (VUs), which run your test scripts. VUs are essentially parallel while(true) loops. Scripts are written in JavaScript, as ES6 modules, so you can break larger tests into smaller pieces or make reusable pieces as you like.
The init context and the default function
For a test to run, you need to have init code, which prepares the test, and VU code, which makes requests.
Code in the init context defines functions and configures the test options (like duration).
Every test also has a default function. This function defines the entry point for your VUs.
Init code runs first and is called only once per VU. On the other hand, default code executes as many times as the test options set.
Using options
Instead of typing --vus 10 and --duration 30s each time you run the script, you can include the options in your JavaScript file:
Then, run the script without those options on the command line:
Stages: ramping up/down VUs
You can ramp the number of VUs up and down during the test. To configure ramping, use the options.stages property.
For advanced ramping, you can use scenarios and the ramping-vus executor.
Execution modes
Portability is a major design goal of k6
You can run the same test in different modes with minimal changes.
k6 supports three execution modes to run a k6 test: local, distributed, and cloud.
Local: the test execution happens entirely on a single machine, container, or CI server.
Distributed: the test execution is distributed across a Kubernetes cluster.
Runningk6-resource.yamlCloud: the test runs on k6 Cloud.
Additionally, k6 Cloud can run cloud tests on your own cloud infrastructure, and accept the test results from a local or distributed test.