前言

不做性能测试已经 3、4 年了,领导安排给新人分享下性能测试,于是着手各种材料,免不了关于性能测试工具。
以前的性能测试工具 LR、Neoload、Jmeter、Locust 如今要么消失在视野,要不版本更新的不认识了...
如今流行的性能工具中,K6 成功的吸引我,我就试试玩玩

K6 简单说明

K6 的安装

安装见官方文档:https://k6.io/docs/getting-started/installation/
本机是 windows7,可不用 Chocolatey,因为有直接安装版:https://dl.k6.io/msi/k6-latest-amd64.msi
注:Win7 的系统变量 path 尾部多了/,需要删除,否则无法找到 k6

K6 的 http 脚本例子 k6_demo.js

import http from 'k6/http';
import { sleep,check } from 'k6';

export const options={
  insecureSkipTLSVerify: true,
    stages: [
        { duration: '20s', target: 20 },
        { duration: '2m', target: 20 },
        { duration: '20s', target: 0 },
      ],
}

export default function () {
  const res=http.request(
      'POST',
      'https://login.xxx.com/account/login',
      {
        loginName: 'xxx@xxx.com',
        password:'xxx1234'
      },
      {
        headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
        redirects:-1
      },
    )
    check(res, { 
      '状态码(含重定向)是否200': (r) => r.status == 200,
      '响应内容是否为json': (r) => !!r.json(),
      '是否登录成功': (r)=>r.json().data.status==='000000'
    });
    sleep(1);
  }

这里脚本很简单,就是测试一个登录 http 请求
熟悉 locust 的会发现两者很像:

influxdb 和 grafana 的安装及配置

这两个推荐使用 docker 安装

docker run -idt --name=inluxdb --privileged=true --volume=/home/influxdb:/data -p 8083:8083 -p 8086:8086 tutum/influxdb:1.8
docker run -d --name=grafana -p 3000:3000 grafana/grafana

influxdb 上创建 k6 数据库

访问 influxdb 的 web 端:http://[宿主机 IP]:8083/
执行命令:CREATE DATABASE "db_K6"

可以创建 1 个用户 K6,并设置密码

配置 grafana

1-配置数据源 - 选择 influxdb,查考如下

2-可以下载别人的 K6 模板 json,并导入,推荐:https://grafana.com/grafana/dashboards/10660

运行 K6

调试

调试前先注释掉:options 中的 stages
k6 run --http-debug="full" ./k6_demo.js

运行并导入 influxdb

k6 run --out influxdb=http://[宿主机 ip]:8086/db_K6 ./k6_demo.js

查看 grafana

grafana 上对应仪表板设置好时间范围及更新频率,就可有个不输 locust 的运行时页面了

后续

初步试用 K6 感觉还行,一些小坑也淌过去了。
性能工具这么多,比来比去也没必要,满足需求就是合适的。
至于要不要把 K6 开发 1 个平台,目前看没有必要,写脚本灵活更便于使用
何况我已经开发过 1 个基于 locust+boomer 的平台,真心觉得没时间维护,够用就行了


↙↙↙阅读原文可查看相关链接,并与作者交流