目录
k6.io简介
官网
概述
k6是一个以开发人员为中心,免费和开源的负载测试工具,旨在使性能测试具有生产力和令人愉悦的体验。
使用k6,能够及早发现性能下降和问题,从而使您能够构建弹性系统和强大的应用程序。
- 具有开发人员友好API的CLI工具。
- JavaScript ES2015 / ES6中的脚本编写-支持本地和远程模块
- 自动化友好的负载测试
- 漂亮的测试报告
Demo
安装
链接如下:
https://k6.io/docs/getting-started/installation
支持linux、Mac、Windows、Docker
一个简单的Demo
复制下面的代码,另存为script.js
import http from 'k6/http';
import {
sleep } from 'k6';
//脚本默认入口,至少要有一个,类似于java中的main()方法
//以下的代码会在测试运行期间一遍又一遍地运行,而在外面的代码则是初始化代码
export default function () {
http.get('http://test.k6.io');
sleep(1);
}
win系统下,在当前目录打开命令行界面,运行以下命令
k6 run script.js
第一个简单的Demo就完成了
稍微复杂一点的Demo
import http from 'k6/http';
import {
check, sleep } from 'k6';
//options.stages 控制并发
//在执行脚本前30s内,虚拟用户增长至20
//在第30s-1m30s,虚拟用户减少至20
//最后20s,虚拟用户减少至0
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);
}
运行结果
HTTP请求
GET
上文的两个Demo都是GET,可以参考一下
POST
import http from 'k6/http';
export default function () {
var url = 'http://test.k6.io/login';
var payload = JSON.stringify({
email: 'aaa',
password: 'bbb',
});
var params = {
headers: {
'Content-Type': 'application/json',
},
};
http.post(url, payload, params);
}
DEL
import http from 'k6/http';
const url = 'https://httpbin.test.k6.io/delete';
export default function () {
let params = {
headers: {
'X-MyHeader': 'k6test' } };
http.del(url, null, params);
}
PUT
import http from 'k6/http';
const url = 'https://httpbin.test.k6.io/put';
export default function () {
const headers = {
'Content-Type': 'application/json' };
const data = {
name: 'Bert' };
let res = http.put(url, JSON.stringify(data), {
headers: headers });
console.log(JSON.parse(res.body).json.name);
}
结果可视化
k6.io可以在本地运行测试并将结果流式传输到k6 Cloud
需要结果流式传输到k6 Cloud时,在执行k6命令的机器上运行本地测试,并将结果上传到k6
Cloud。然后,能在Web上实时可视化和分析结果。
Step 1 本地登录k6 Cloud
在官网注册账号后,在本地登录到k6 Cloud,非付费用户最多支持50个虚拟用户并发,并仅支持同时运行一个测试。
登录完成后,点自己的账户信息,在弹出来的菜单栏选择API token,然后将token复制到粘贴板
然后在命令行运行以