脚本运行

本地运行

复制下面的脚本并保存到本地文件中,如: script.js.

import http from 'k6/http';import { sleep } from 'k6';export default function () {    http.get('http://test.k6.io');    sleep(1);}

打开终端并进入到脚本目录下,执行如下命令

  • CLI
$ k6 run script.js
  • Docker
$ docker run -i loadimpact/k6 run - <script.js
  • Docker in PowerShell
PS C:\> cat script.js | docker run -i loadimpact/k6 run -

增加虚拟用户数

现在通过增加虚拟用户数和执行时间来运行压测脚本。
打开终端,执行如下命令:

10个虚拟用户,并发运行30秒

  • CLI
$ k6 run --vus 10 --duration 30s script.js
  • Docker
$ docker run -i loadimpact/k6 run --vus 10 --duration 30s - <script.js
  • Docker in PowerShell
PS C:\> cat script.js | docker run -i loadimpact/k6 run --vus 10 --duration 30s -

K6 的测试代码编写语言是javascript,支持ES6模块,可以把大的测试代码分解成多个小的代码片段,提高代码复用率。
测试代码至少要包含一个默认函数,default function ——作为虚拟用户行为的入口,类似其他开发语言的main函数。

export default function () {// vu code: do things here...}

测试代码在默认函数内部和外部分别处理不同的事件,在默认函数内部的代码被称为虚拟用户代码,是在性能测试过程中不断的循环执行的代码;在默认函数外面的代码在每个虚拟用户下只执行一次。

// init codeexport default function() {// vu code}

虚拟用户代码可以做任何你期望去压测的内容,但是有几个例外:在default function函数内部不能加载本地文件和不能引入其他模块,这些应该放在初始化代码中实现。

使用选项

如果不想在命令行中指定虚拟用户数和执行时长,可以在脚本中通过代码来指定,如在script.js中可以做如下配置:

import http from 'k6/http';import { sleep } from 'k6';// 配置虚拟用户数和运行时长export let options = {     vus: 10,     duration: '30s',};export default function () {     http.get('http://test.k6.io');     sleep(1);}

这样可以直接通过命令行运行脚本,不需要特别指定虚拟用户数和运行时长

  • CLI
$ k6 run script.js
  • Docker
$ docker run -i loadimpact/k6 run - <script.js
  • Docker in Win PowerShell
$ PS C:\> cat script.js | docker run -i loadimpact/k6 run -

阶段设置:用户数增长和降低

你也可在运行过程中设置用户数的增长和降低,通过配置options.stages 属性实现用户数的变化。

stages.js

import http from 'k6/http';import { check, sleep } from 'k6';export let options = {     stages: [        { duration: '30s', target: 20 },        { duration: '1m30s', target: 10 },        { duration: '20s', target: 0 },    ],};export default function () {    let res = http.get('https://httpbin.org/');    check(res, { 'status was 200': (r) => r.status == 200 });    sleep(1);}

执行云测试

K6支持三种运行模式:

  1. 本地执行:在本机或者持续集成服务器上执行
  2. 云端执行:在K6的云服务平台上执行
  3. 集群执行:现在还未支持
    以上三种模式运行脚本,不需要特地对脚本做任何修改。
    要在云端运行需要在K6云服务上注册一个账号并且登录进去,参考CLI运行步骤

基本步骤

  1. 命令行登录账号
# -t 后面的token是登录云服务之后可以获得k6 login cloud -t 80f0e942e27fdcc8522a688ef7f57b68fe28f5dd9e68c490668c0584748e07a9
  1. 创建projectID
    • 脚本中需要制定projectID,projectID是登录云服务平台后创建的项目ID
    • 脚本中要指定projectID

script.js

export let options = {  ext: {    loadimpact: {      projectID: 3485196,      // Test runs with the same name groups test runs together      name: "YOUR TEST NAME"    }  }}
  1. 使用k6 cloud 或者k6 run -o cloud命令执行脚本
$ k6 cloud script.js或$ k6 run -o cloud script.js