【发布时间】:2021-12-16 07:03:26
【问题描述】:
查看负载测试工具,我发现 Locust 并立即发现它作为一个 Python 人很有吸引力,但我不完全确定我是否可以用它实现以下场景......
我的任务是使用真实流量对 REST API 进行负载测试。我从生产 Apache 日志中提取了 5 分钟的 GET 流量,其想法是使用负载测试工具以相同的时间分布(每秒 1 到 36 个请求)运行这些相同的请求。为此,我构建了一个 Python 字典,其中以相对时间戳(xx:xx,即 mins:secs)为键,以该秒请求的 URL 路径列表为值。
我们将某个时间点的生产数据库转储还原到我们的测试环境,请求来自创建转储之后的接下来的五分钟。在测试运行之间,我正在更改 REST API 如何连接到数据库的参数,因此测试运行需要尽可能相同,以使指标具有可比性。
我查看了 Locust 文档中的自定义负载形状,似乎它们可能有效,但我并不肯定。自定义tick方法实现能不能做到这一点:
在 0 秒时,发出一组 4 个请求。
在 1 秒时,发出一组 2 个请求。
在 2 秒时,发出一组 12 个请求。
...时间流逝,每秒都会发生一组预定义的请求...
在 4 分 59 秒时,发出一组 27 个请求。
在 5 分钟后,发出一组 14 个请求。
这将如何映射到 Locust 的能力?产生多少用户并不重要,重要的是发出了多少请求,以及在什么时间点发出的。
我真的很喜欢 Locust 的易用性和熟悉的语法,但它是否适合使用这样的静态、可重复请求负载进行测试?
编辑: 似乎这种方法在没有很大困难(或根本没有)的情况下可能无法实现,我想出了另一种方法,其不同之处足以保证一个单独的问题:@987654321 @
【问题讨论】:
标签: load-testing locust