如何压力测试 ajaxterm(J) javascript 心跳行为?

How to stress test ajaxterm(J) javascript heartbeat behavior?

我正在使用 AjaxtermJAjaxterm 的 java 端口)。 Ajaxterm 客户端有一个 java 脚本例程,每秒向服务器发送心跳(无论用户是否输入任何内容)。

我想对其进行压力测试以微调服务器,但我还没有找到一种简单的方法来模拟这种行为。

HtmlUnit 有一些无头的 java 脚本支持,但不足以(据我所试)模拟这种事情。我想知道是否有现代和强大的工具可以使这更容易,因为现在有很多 javascript-rich-clients。

当然,我可以为 JMeter 编写自己的 java 代码,并启动一个每秒发送心跳的线程,但在尝试这种方法之前,我想知道是否有更简单的方法。

ps。 我不是在这里寻求软件推荐(我知道规则),尽管一些框架可能是答案。但我的问题具体是如何在压力测试中模拟这种行为。

看起来在您的应用程序中,每个客户端都会对 Web 服务器产生双重影响:用户键入操作 (A) 和心跳 (B)。 要对其进行压力测试,您需要模拟两个相应的异步执行的测试用例。任何支持多个测试用例、节奏和简单的测试用例记录/编辑的相当完整的负载测试工具都应该处理这种情况。以下是我将如何在名为 StresStimulus 的工具中实施此测试:

  1. 记录用户操作以创建测试用例 A。
  2. 克隆测试用例 A 以创建测试用例 B。
  3. 从测试用例中删除心跳请求。
  4. 从测试用例 B 中删除所有请求,单个心跳除外。
  5. 对于测试用例 B,将 "delay after the test case" 属性 设置为 "Pacing" 并设置测试用例重放的最短持续时间 = 1 秒,如屏幕截图所示。

之后,您可以根据自己的压测需求来定制负载。只需确保使用相同数量的虚拟用户执行测试用例 A 和 B。例如,要模拟从 1 到 100 个虚拟用户的分步加载,创建从 2 到 200 个 VU 的分步加载并将 50% 的 VU 分配给每个测试用例。测试用例 B 将正确模拟任意数量的 VU 的心跳,执行用户在测试用例 A 中键入。