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