We believe in goal oriented and automated load testing. That's why we built k6 to work well in such environments, integrating nicely with most build tools to fit in with your continuous integration and delivery pipeline.
But since k6 is a command line tool it can be executed from just about any *nix or windows environment simplifying scheduling, execution and testing.
This guide will help you get up and running with k6, PowerShell and LoadImpact Insights. This guide assumes you are familiar with k6 and PowerShell.
It also assumes you have a LoadImpact account. If not, go get one here – it’s free. Once you have your account setup, , try this sample of how to execute load testing in your shell.
The load test
It starts with code. This is the load test example script we'll be using in this guide. It tests our example site test.loadimpact.com:
To describe the load test script in words:
- The test will ramp up from 0 to 10 users over 60s, stay flat at 10 users for another 60s, before ramping down to 0 users again over 60s
- We've set a goal that the 95th percentile response time should be below 500ms. This step, k6 thresholds, is essential, it's how we define our goals which is the basis for the pass/fail mechanism to work that is built into k6. If a threshold fails, k6 will end with a non-zero exit code, which in turn indicates a failed build step to the CI tool.
- In the load test "main" function we define a group
Front pageinside which we make a request, check the response status code and sleep for 10s before letting the user loop from the top of the function.
First off you need to get k6. Do that from the distro page or build it yourself if you feel like it.
Next, we create a PowerShell script which in essence consists of a single line, it executes k6.
k6 run -q -o cloud main.js
Just remember to have k6 in your path to execute.
Integrate with Load Impact Insights
Before we dive into the details – let's get some essentials from your Load Impact account. We need the Insights API key so you can analyze the results in the Load Impact Insights cloud service. The Insights API key you get in your Load Impact account when you are logged in.
Go to your profile, i.e. click your name at the top left and then select “Insider program”. Then copy if from the Manage API token text box underlined in red. The key itself has been masked in the sample below.
Now you have an API key for your account to store the results from the test.
k6 will pick up the API key from the environment variable
K6CLOUD_TOKEN when executed so it has to be in the environment when executed. We don’t recommend setting in inside your PowerShell script but rather outside since your PowerShell script will probably be managed as code. You will want to keep the API key to yourself as much as possible and not distribute it.
Now let’s execute a build. Once started it will look something like the below picture.
Note there is a direct link to the full results and analysis in Load Impact Insights where you can always find all the results of all your tests.
If the performance test is successful all is fine. If it fails it will exit with a non-zero exit code and you can act on the exit code if you want to.
A passing build is not much fun to look at. But, when builds fail, you want to understand why. No exception when it's a load test failing the build. We've built Insights to be a perfect companion to k6 for analysing results! The analysis workflow is error driven, meaning the goal is to help you quickly finding the cause of the failed load test.
That's it, happy automated testing!