流浪在纽村

开源负载测试工具评估

2019-08-07  本文已影响1人  4efcf97d53e4

说来有意思,进上家公司的第一件事是做些技术工具调研(居然不是还技术债,后来证明我还是拿衣服了),虽然最后也只是做了个 PoC 演示,并没有实际在生产环境使用,不过整个过程还是值得记录一下的。

关于测试,其实和一直以来的工作内容还是有不少交集的。

就 SRE (Site Reliability Engineer) 而言,需要通过测试来发现系统和平台的性能瓶颈,以防患于未然。对 DevOps 而言,在构建 CI/CD Pipeline 时,需要集成自动化测试,理想情况下,可能会包括单元测试 / 功能测试 / 集成测试 / 安全测试 等等。

比如更早一点,大概 12 年的时候,当时部门调研流处理框架 (Stream Processing Frameworks),使用 Twitter Storm(后来改名 Heron,并在 18 年捐献给 Apache,当然现在 Flink 是大趋势了)。想在生产环境使用,但当时文档并不多,所以读完核心代码后,就主攻负载和压力测试了。

等等,好像暴露了。不能丢人,补救一下:人在新西兰,没搞过大数据。

言归正传。以下正文,Enjoy:


评估标准

技术范围

性能 / 测量精度

人气 / 趋势

操作 / 可维护性

成本

集成 / 自动化

测试工具

在评估市场中的工具时,有些不适合公司内部需求,有些仅限于 HTTP 协议,还有些也有多年没有更新了。不少工具都不够灵活,无法提供比如参数化,断言和分布式测试的功能。

所以,基于上述的评估标准,选出了下面几个工具来具体对比和分析:

同时基于成本考虑,评估的工具都是开源的。与商业应用相比,基本可以满足测试的技术要求和功能。

当然也可以选择商业软件,比如 LoadImpact / BlazeMeter / Loadrunner / NeoLoad 等等。

另外,国内大公司也有自己的测试产品。

比如阿里云有「性能测试 PTS」,腾讯也有测试中台「WeTest」:

Benchmark

Benchmark 阶段,不同工具在同一测试场景下的测试数据可能也会有较大差异。

所以,对工具进行基准测试对比(性能,稳定性和数据准确性等方面)还是很有必要的。

一开始是探索阶段。使用手工测试,把玩了不同工具,使用不同参数(比如 并发数 / 虚拟用户数 VUs,线程数等等),以便有个大概的感受。

准备基准对比时,尝试尽可能地使用相似的参数来跑这些工具。不过,让所有工具使用完全相同的参数是不大现实的,因为它们有不同的操作模式,对应在这些工具中,其工作方式也是不尽相同的。

所以下面针对不同的并发数来进行测试比较(暂时不考虑网络时延等情形),来得出一个粗精度的数据:

以下的测试,是运行在 Docker 环境里的。

关于容器化与性能,值得注意的是,如果在 Docker 容器内运行基准测试的话,和直接在目标机器运行测试工具相比,每秒请求数(RPS)大概会降低 40% 左右。

所以下面的测试数据,和跑原生工具相比会偏低。

RPS rates (different VU levels) Average Reponse times

最终,基于以上的探索把玩和基准测试,工具的整体对比如下:

总结

个人会比较推荐 Gatling,备选方案是 Locust / JMeter,同时对 K6 保持观望。

主要是基于以下几个方面考虑:

Metrics

示例:Gatling - HTML 格式的测试报告

示例:Locust

示例:K6 + InfluxDB + Grafana

结尾

也是没谁了,把自己写的英文文档捯饬了一下,去粗取精又翻译了回来。

容易么我?Google Translate 如是说。

非专业测试人员,还望各位大佬轻拍。

同时也欢迎在文章里留言或进群交流。


[往期精彩]

国外没有996,甚至还有734,世界那么大,来新西兰看看吧

新西兰码农生活图鉴

码农如何从 0 到 1 在 NZ 找到工作 - 准备篇

码农如何从 0 到 1 在 NZ 找到工作 - 简历篇

码农如何从 0 到 1 在 NZ 找到工作 - 实战篇

NZ 升级打怪的流水帐

在新西兰生活有何烦恼

三十岁左右的你,正处于什么状态

上一篇下一篇

猜你喜欢

热点阅读