0

我希望有人对异步测试以及如何使用 Jmeter 完成它有一些经验。如果有人知道,但不知道 jmeter,也可以选择其他选项,但更熟悉 jmeter 并且上下文用于负载/压力测试。

定义:例如,发送原始 TCP 文本数据流,其中“会话”ID 在数据流本身内。一切都是异步的,就返回而言可能是“无序的”。

示例:因此,给定一个包含 10 个数据流的样本,其中 5 个线程的结束信号为 \n,所有 10 个数据流有可能在第一个响应之前通过同一个 TCP 端口发送,并且响应可以是任何顺序。

session00001数据发送到那里\n

session00002数据也在那里\n

session00003不同的数据\n

...

session00010更多不同的数据\n

使用 Jmeter,我确实想根据 sessionid(例如本例中流的数据字节 8-12)测量每个给定数据流返回所需的时间。目的是将 Jmeter 用于它擅长的领域,在多台机器上进行负载/压力测试,但足够聪明,可以理解异步 TCP 数据(与您的正常 HTTP 会话请求/响应相反)。

约束是在任何给定的测试会话期间,“sessionid”是唯一的,至少在返回响应流之前是唯一的(出于逻辑原因,否则无法实现这一点;-)。

在此先感谢,为了确保理解意图,这是为了利用 Jmeter 可用的所有现成的报告/侦听器/插件/分析。

编辑:被测服务器的实现是 Netty,与 Telnet 示例没有什么不同。如果有一个测试 Netty 示例 Telnet 服务器的 Jmeter 示例也可能有所帮助。

-D

4

1 回答 1

1

我认为您的选择是实现Java Request Sampler

您可以为Java Request Sampler实现定义以下参数:

  • 服务器主机
  • 服务器端口
  • 连接标识符(见后)
  • 会话标识符
  • 数据

仔细阅读JavaSamplerClient的文档以了解生命周期。每个线程都有一个采样器实例。

然后在您的实现中,您需要注意以下事项:

  • 创建一个连接处理程序类,它为每个连接标识符打开套接字。使用相同连接标识符的测试用例将通过相同的套接字发送数据。此连接处理程序应负责以同步方式发送数据并将响应返回给正在等待它的适当实例
  • 在您的采样器中,您必须准确地创建一个连接处理程序(或每个服务器一个,或每个端口一个,如您所愿)
  • 当采样器发送一些文本时,您将其提供给连接处理程序,采样器等待响应到来。

通过这种方式,您可以简单地将异步问题转换为同步问题,并实现此连接处理程序,该处理程序在采样器实例之间共享。但是请注意实现以确保您的线程编程不会因某些测试工具方面的瓶颈而伪造结果。

于 2013-10-24T14:53:57.153 回答