【发布时间】:2020-05-22 19:39:39
【问题描述】:
我已经编写了一个 java 客户端服务器应用程序(不是 http),我需要对其进行负载测试。但是,大多数工具(例如 jmeter 和grinder)似乎都是针对 http 请求的。有什么建议吗?
谢谢!
【问题讨论】:
标签: java load-testing
我已经编写了一个 java 客户端服务器应用程序(不是 http),我需要对其进行负载测试。但是,大多数工具(例如 jmeter 和grinder)似乎都是针对 http 请求的。有什么建议吗?
谢谢!
【问题讨论】:
标签: java load-testing
JMeter 允许编写插件。如果您的应用程序使用 HTTP 以外的协议,则该协议似乎是专有的,因此编写测试无论如何都需要一些自定义实现。 JMeter 允许这样做,强烈推荐。
【讨论】:
由于我们不知道您使用的是什么协议,因此请以易于扩展的方式编写您自己的客户端以进行负载测试。
【讨论】:
您可以查看Soatest,它声称是基于套接字的,并且应该能够使用您正在使用的任何网络协议(希望是 TCP/UDP)。
【讨论】:
您可以使用下面的基于JUnit4 或JUnit5 的负载运行器,它们可以简单地接受您的单元测试并在目标服务器上生成负载。这些不一定是 HTTP 测试,可以是任何带有 @Test 注释的测试
负载配置如下所示,用于增加或减少负载:
number.of.threads=2
ramp.up.period.in.seconds=10
loop.count=1
您的负载测试将如下所示:
@LoadWith("our_load_config.properties")
@TestMapping(testClass = AnyTestEndPoint.class, testMethod = "anyTestMethod")
@RunWith(ZeroCodeLoadRunner.class)
public class LoadTest {
}
馈送到负载生成器的 JUnit 测试, 测试类如下所示:
import org.junit.Test;
public class AnyTestEndPoint {
@Test
public void anyTestMethod() throws Exception {
...
// You can have your client code invoking the target server
...
}
}
注意:
您也可以向负载反应器提供多个 Junit 测试,以在服务器逻辑/api/进程的不同部分生成负载。
访问HelloWorld Examples了解更多详情。
【讨论】: