1. What is K6?
K6是由LoadImpact公司提供的开源工具,该工具已经被微软、亚马逊等公司用于负载测试。
K6提供了丰富的脚本API用于描述测试负载,比如可以设置虚拟用户数量来测试不同并发情况下Web应用的性能,还可以设置测试的请求头来定义K6发出的请求。
K6用虚拟用户(Virtual User,VU)模拟真实用户,并通过改变并发的虚拟用户数量来改变系统的负载情况。虚拟用户的本质是线程,每个虚拟用户都在一个完全独立的JavaScript虚拟机中执行测试脚本。
2. Installation
下面介绍 Ubuntu
环境下的安装过程
有些镜像并没有捆绑ca-certificates和gnupg2软件包。如果你正在使用这样的镜像,首先需要用下面的命令安装这些软件包。
1
| >$ sudo apt-get update && sudo apt-get install ca-certificates gnupg2 -y
|
1 2 3 4 5 6 7
| $ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C5AD17C747E3415A3642D57D77C6C491D6AC1D69
$ echo "deb https://dl.k6.io/deb stable main" | sudo tee /etc/apt/sources.list.d/k6.list
$ sudo apt-get update
$ sudo apt-get install k6
|
3. Running K6
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| import http from "k6/http"; import { check, sleep } from "k6";
export let options = { duration: '30s', vus: 5 };
export default function () { var index = Math.floor(Math.random() * 3) var urls = new Array()
urls[0] ="http://141.164.39.46:8080/v1/AUTH_753ac424b8104a489b6e69b63b53f7f7/test/1000kbh" urls[1] ="http://141.164.39.46:8080/v1/AUTH_753ac424b8104a489b6e69b63b53f7f7/test/1000kbc" urls[2] ="http://141.164.39.46:8080/v1/AUTH_753ac424b8104a489b6e69b63b53f7f7/test/1000kbg" var ndp_url = new Array() ndp_url[0]="http://141.164.57.128:7979" ndp_url[1]="http://158.247.207.170:7979" ndp_url[2]="http://158.247.220.151:7979"
var params = { headers: { "X-Auth-Token": "gAAAAABgr4RQp5xptJ81ivP-oL0Cyr8P3_ePyixGjOK3sSAgVr4CaXupZJi7SRYwFKJZXSG3ZcCyGKM8Q7RhqPEZBHCvxA3OBAyu1Dl7nbiyfaSBMYYjUIosc7jpOl5FTtdPhPRL6ocR8eQ3MYbhCNWRg3xUn7VMF7fehdDxZzxS_DjrWQTWobU", "x-webhook": ndp_url[index] } } let res = http.get(urls[index], params); check(res, { "status was 200": (r) => r.status == 200 }); };
|
4. Result Output
k6 可以控制结果的输出位置和格式,以CSV格式举例:
1
| $ k6 run --out csv=my_test_result.csv script.js
|
更多的输出信息可以查看K6的官方文档:Results visualization (k6.io)