脚本运行
本地运行
复制下面的脚本并保存到本地文件中,如: 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支持三种运行模式:
- 本地执行:在本机或者持续集成服务器上执行
- 云端执行:在K6的云服务平台上执行
- 集群执行:现在还未支持
以上三种模式运行脚本,不需要特地对脚本做任何修改。
要在云端运行需要在K6云服务上注册一个账号并且登录进去,参考CLI运行步骤
基本步骤
- 命令行登录账号
# -t 后面的token是登录云服务之后可以获得k6 login cloud -t 80f0e942e27fdcc8522a688ef7f57b68fe28f5dd9e68c490668c0584748e07a9
- 创建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" } }}
- 使用k6 cloud 或者k6 run -o cloud命令执行脚本
$ k6 cloud script.js或$ k6 run -o cloud script.js