JavaScript开源压测神器k6:轻松些压测的日子到了!
Author:zhoulujun Date:
为什么选择K6
K6是一个grafana旗下强大的开源负载和性能测试工具,用于测试软件系统的性能和可靠性。
关键是,可直接用JavaScript编写测试脚本,可以使用HTTP,WebSocket等多种协议进行测试。
k6 是用 Go 语言(grfana后台基本靠Go)编写的一种高性能的负载测试工具。官网:https://k6.io/
因为 K6 是 Go 编写的,相对于 JAVA 编写的 JMeter 和Python编写的Locust,性能遥遥领先!K6 可以只用较少的资源就能达到指定数量的负载,资源利用是非常强的!
而grfana拿手绝活就是数据可视化,k6有丰富的可视化方案!
这样编写复杂的测试逻辑,模拟真实的用户行为,无需使用loadrunner 这种傻大粗了——关键是TMD贵呀,破解也老费劲!
JMeter/loadrunner(java): JMeter虽然功能强大,但是界面复杂,学习曲线较陡峭。
Locust(python): K6支持更多的协议,如gRPC和WebSocket。
Gatling(Scala): Scala这玩意,因为这玩意太小众,我压根不想理Spark,可以读一下:《从产品的角度看Scala如何从神坛掉落的?》
k6的使用
安装k6
docker直接安装就好
docker pull loadimpact/k6
linux
下载k6
curl -L https://github.com/loadimpact/k6/releases/download/v<version>/k6_<version>_linux_amd64.tar.gz -o k6.tar.gz
将解压后的 k6 可执行文件移动到 /usr/local/bin 目录下,然后验证安装成功与否即可
k6使用
编写测试脚本
相比java,JS使用起来非常简单
import http from 'k6/http';
export let options = {
vus: 100, // 指定要同时运行的虚拟用户数量
duration: '10s', // 指定测试运行的总持续时间
};
// default 默认函数
export default function () {
// 标头
let params = { headers: { 'Content-Type': 'application/json' } };
var res=http.get("https://test.k6.io",params)
}
batch 批处理,可以用来做页面并发(批处理并不能保证执行顺序)
import http from 'k6/http';
export let options = {
vus: 1,
duration: '10s',
};
export default function () {
let get = {
method: 'GET',
url: 'https://host/get',
};
let get1 = {
method: 'GET',
url: 'https://host/get',
};
let post = {
method: 'POST',
url: 'https://host/post',
body: {
hello: 'world!',
},
params: {
headers: { 'Content-Type': 'application/json' },
},
};
let res = http.batch([req1, req2, req3]);
}
具体参看:https://grafana.com/docs/k6/latest/using-k6/
压测
进入脚本根目录,执行脚本
k6 run test.js
# 使用 docker
docker run -i loadimpact/k6 run - <test.js
转载本站文章《JavaScript开源压测神器k6:轻松些压测的日子到了!》,
请注明出处:https://www.zhoulujun.cn/html/tools/TestTools/k6/9210.html