k6 是 Grafana 家推出的一款无比强大的性能测试工具。k6 采用本身开源免费,云服务收费的盈利模式。 不管是个人还是企业都可以安心使用。
而 k6 让我“一见钟情”的地方是,它以 JavaScript (ES2015/ES6) 为脚本编写测试用例。 这是真真正正地解决了我多年性能测试遇到的痛点:
而功能更丰富的工具,则支持一些固定类型的动态数据,例如动态生成的数字、随机字符串、UUID 等。
但是面对实际业务,我们经常需要面对更加丰富严苛的数据要求。这迫使我们自研压测工具。 (虽然写压测工具比写业务代码好玩多了),(虽然提高生产效率也无助于解决996的问题)。
在校验结果这方面,一般的压测工具只能支持 HTTP status code 的校验。换言之,2XX 就是成功、其他就是失败。
又或者,我们期望一部分请求成功、一部分请求失败呢?
又例如,我们希望校验响应里的某些字段呢?
性能测试一个常见的需求,就是模拟生产环境的流量模型。
因为不同的流量对服务器的压力分布是不一样的。 举个常见的例子,数据的顺序读写性能和随机读写性能是不一样的。 如果你的压测工具是顺序生成用户 id,可能压测测不出来问题。而部署到生产环境,面对的却是随机的用户访问,系统就崩了。
为了暴露此类问题,我们需要按照用户的真实行为模式编写测试用例。
解决这类需求的常见方案是以不同的 QPS 发送不同的请求。
但是如果不同请求间有时间上又或者数据上的依赖关系,就变得很麻烦。 例如,用户总是需要先登录在更新用户数据。又或者,资源总是需要先创建,获取 id 后,才能继续后面的操作。
至于 k6 的其他特性,则跟其他压测工具差不多了。无需赘述。
