IMLC.ME
/k6/Grafana k6 简介/

Grafana k6 简介

k6 是 Grafana 家推出的一款无比强大的性能测试工具。k6 采用本身开源免费,云服务收费的盈利模式。 不管是个人还是企业都可以安心使用。

而 k6 让我“一见钟情”的地方是,它以 JavaScript (ES2015/ES6) 为脚本编写测试用例。 这是真真正正地解决了我多年性能测试遇到的痛点:

动态URL和数据

我们会经常遇到需要输入动态数据的场景。
一般的压测工具,只支持重复发送相同的 url 和 HTTP body。
而功能更丰富的工具,则支持一些固定类型的动态数据,例如动态生成的数字、随机字符串、UUID 等。

但是面对实际业务,我们经常需要面对更加丰富严苛的数据要求。这迫使我们自研压测工具。 (虽然写压测工具比写业务代码好玩多了),(虽然提高生产效率也无助于解决996的问题)。

定制化的校验规则

在校验结果这方面,一般的压测工具只能支持 HTTP status code 的校验。换言之,2XX 就是成功、其他就是失败。

但是,如果我们要压测的 API,就是期望收到 404 Not Found 呢?
又或者,我们期望一部分请求成功、一部分请求失败呢?
又例如,我们希望校验响应里的某些字段呢?

用户行为模拟

性能测试一个常见的需求,就是模拟生产环境的流量模型。

因为不同的流量对服务器的压力分布是不一样的。 举个常见的例子,数据的顺序读写性能和随机读写性能是不一样的。 如果你的压测工具是顺序生成用户 id,可能压测测不出来问题。而部署到生产环境,面对的却是随机的用户访问,系统就崩了。

为了暴露此类问题,我们需要按照用户的真实行为模式编写测试用例。

解决这类需求的常见方案是以不同的 QPS 发送不同的请求。

但是如果不同请求间有时间上又或者数据上的依赖关系,就变得很麻烦。 例如,用户总是需要先登录在更新用户数据。又或者,资源总是需要先创建,获取 id 后,才能继续后面的操作。

至于 k6 的其他特性,则跟其他压测工具差不多了。无需赘述。