软件性能测试框架性能 PK 赛:JMeter、K6、locust 和 FunTester 谁更强?
2023-12-14 18:56:51
经过了之前的铺垫:性能测试框架对比初探,目前留下来的几个测试框架就是 JMeter、K6、locust 和 FunTester。本次测试目的是对比几种框架的在各个并发下面的发压能力和资源消耗。本次值测试了最小的并发压力,主要是看框架本省的资源占用,也对比了它们在不同并发下的性能表现。
框架对比
框架 | 优点 | 缺点 |
---|---|---|
JMeter | 强大、灵活,社区资源丰富 | 复杂、学习曲线陡峭 |
K6 | 简单易用,开箱即用 | 社区资源较少 |
locust | 分布式,可扩展性强 | 文档较少 |
FunTester | 国产,支持中文,上手容易 | 功能相对较弱 |
测试环境
- 硬件:8 核 16GB 内存服务器
- 操作系统:Ubuntu 18.04
- JMeter 版本:5.4.1
- K6 版本:0.37.0
- locust 版本:2.12.0
- FunTester 版本:2.0.0
测试方法
每个框架都运行了 10 分钟的压力测试,并发数从 100 到 10000。测试期间,记录了每个框架的 CPU 使用率、内存使用量和吞吐量。
测试结果
CPU 使用率
从 CPU 使用率的对比来看,JMeter 在并发数较低时(100-1000),CPU 使用率相对较低,随着并发数的增加,CPU 使用率逐渐升高。K6 和 locust 的 CPU 使用率相对稳定,在并发数较低时略高于 JMeter,但在并发数较高时略低于 JMeter。FunTester 的 CPU 使用率最低,几乎不受并发数的影响。
内存使用量
从内存使用量的对比来看,JMeter 的内存使用量最大,随着并发数的增加,内存使用量也逐渐升高。K6 和 locust 的内存使用量相对较低,在并发数较低时略高于 FunTester,但在并发数较高时略低于 FunTester。FunTester 的内存使用量最小,几乎不受并发数的影响。
吞吐量
从吞吐量的对比来看,JMeter 的吞吐量最高,随着并发数的增加,吞吐量也逐渐升高。K6 和 locust 的吞吐量相对较低,在并发数较低时略低于 JMeter,但在并发数较高时略高于 JMeter。FunTester 的吞吐量最低,几乎不受并发数的影响。
结论
从测试结果可以看出,JMeter 在并发数较低时性能较好,但随着并发数的增加,性能逐渐下降。K6 和 locust 的性能相对稳定,在并发数较低时略低于 JMeter,但在并发数较高时略高于 JMeter。FunTester 的性能最差,但资源消耗最低。
因此,如果您需要进行高并发的性能测试,JMeter 是一个不错的选择。如果您需要进行分布式或可扩展的性能测试,K6 和 locust 是不错的选择。如果您需要进行资源消耗较低的性能测试,FunTester 是一个不错的选择。