API 性能测试工具 - JMeter 和 JUnit?
API Perfromance testing tool - JMeter or JUnit?
我正在做一些性能测试任务。主要目标是比较旧 NCP 协议调用与新 REST API 调用的持续时间。我有这种情况:
- 客户端有一个经过身份验证的会话
- 客户端访问受保护的资源
我必须创建两个变体:
a) 一对一变体:问题是:执行一个一个发送的2000个请求需要多长时间?
b) 并发变体:问题是:执行并发发送的 2000 个请求需要多长时间(300 个线程理想)
我不知道解决这个问题的最佳方法。我的想法是:
a) 创建 2000 个 Http 客户端 -> 每个客户端发送 HTTP Post 并在正文中包含凭证 -> 每个客户端发送 HTTP GET 并获得响应(我将测量发送 GET 请求和发送 GET 请求之间的时间获取每次迭代的响应并将其求和。
b) 创建2000个Httpclients -> 使用固定线程池(300)的executor服务 -> 每个线程执行发送get请求。
还有别的办法吗?我知道 Jmeter 是一个很棒的工具,但我不确定这种情况是否可以在 Jmeter 上执行。谢谢!
JUnit 本身不提供任何多线程逻辑,您必须自己构建 HTTP 请求(或使用像 RestAssured) and then execute them using i.e. ExecutorService or jmh 这样的第 3 方库,然后提出一些结果分析。
JMeter has everything out of the box so you won't need to write a single line of code, reporting is also included, it might be not that CI friendly as JMeter .jmx scripts are XML but on the other hand you will get nice protocol metrics 以及将增加的负载与增加的响应时间相关联的能力
对于第二种变体:您需要确定目标吞吐量 (TP)。每小时 2000 个请求?每分钟?每秒?获得 TP 和场景响应时间的 guessstimate (RT) 后,您可以使用 Little 定律估计 VUser 的数量。或者,您可以使用 calculator 来确定该数字。
Jmeter 提供了一种使用Arrivals Thread Group 提交此工作负载(场景)的机制。此 TG 将实例化维持目标 TP 所需的线程数。
请注意,由于以下原因,您可能无法达到 TP 目标:
- SUT 没有容量来处理负载
- 环境中某处瓶颈(资源饱和)
- 客户端 (JMeter) 确实有足够的资源来产生负载
我正在做一些性能测试任务。主要目标是比较旧 NCP 协议调用与新 REST API 调用的持续时间。我有这种情况:
- 客户端有一个经过身份验证的会话
- 客户端访问受保护的资源
我必须创建两个变体:
a) 一对一变体:问题是:执行一个一个发送的2000个请求需要多长时间?
b) 并发变体:问题是:执行并发发送的 2000 个请求需要多长时间(300 个线程理想)
我不知道解决这个问题的最佳方法。我的想法是:
a) 创建 2000 个 Http 客户端 -> 每个客户端发送 HTTP Post 并在正文中包含凭证 -> 每个客户端发送 HTTP GET 并获得响应(我将测量发送 GET 请求和发送 GET 请求之间的时间获取每次迭代的响应并将其求和。
b) 创建2000个Httpclients -> 使用固定线程池(300)的executor服务 -> 每个线程执行发送get请求。
还有别的办法吗?我知道 Jmeter 是一个很棒的工具,但我不确定这种情况是否可以在 Jmeter 上执行。谢谢!
JUnit 本身不提供任何多线程逻辑,您必须自己构建 HTTP 请求(或使用像 RestAssured) and then execute them using i.e. ExecutorService or jmh 这样的第 3 方库,然后提出一些结果分析。
JMeter has everything out of the box so you won't need to write a single line of code, reporting is also included, it might be not that CI friendly as JMeter .jmx scripts are XML but on the other hand you will get nice protocol metrics 以及将增加的负载与增加的响应时间相关联的能力
对于第二种变体:您需要确定目标吞吐量 (TP)。每小时 2000 个请求?每分钟?每秒?获得 TP 和场景响应时间的 guessstimate (RT) 后,您可以使用 Little 定律估计 VUser 的数量。或者,您可以使用 calculator 来确定该数字。
Jmeter 提供了一种使用Arrivals Thread Group 提交此工作负载(场景)的机制。此 TG 将实例化维持目标 TP 所需的线程数。
请注意,由于以下原因,您可能无法达到 TP 目标:
- SUT 没有容量来处理负载
- 环境中某处瓶颈(资源饱和)
- 客户端 (JMeter) 确实有足够的资源来产生负载