【问题标题】:API Perfromance testing tool - JMeter or JUnit?API 性能测试工具 - JMeter 与 JUnit?
【发布时间】:2020-11-13 15:15:01
【问题描述】:

我正在做一些性能测试任务。主要目标是比较旧 NCP 协议调用与新 REST API 调用的持续时间。我有这种情况:

  1. 客户端有一个经过身份验证的会话
  2. 客户端访问受保护资源

我必须创建两个变体:

a) 一对一变体:问题是:执行一个一个发送的 2000 个请求需要多长时间?

b) 并发变体:问题是:执行并发发送的 2000 个请求需要多长时间(理想的 300 个线程)

我不知道解决这个问题的最佳方法。我的想法是:

a) 创建 2000 个 Http 客户端 -> 每个客户端在正文中发送带有凭据的 HTTP Post -> 每个客户端发送 HTTP GET 并获得响应(我将测量每次迭代发送 GET 请求和获得响应之间的时间并求和。

b) 创建 2000 个 Httpclients -> 使用固定线程池 (300) 的执行器服务 -> 每个线程将执行发送 get 请求。

还有其他方法吗?我知道 Jmeter 是一个很棒的工具,但我不确定这个场景是否可以在 Jmeter 上执行。谢谢!

【问题讨论】:

  • 也许邮递员有你需要的一些功能?
  • 我正在寻找一些解决方案,但 Postman 不提供并发解决方案。

标签: java junit jmeter performance-testing web-api-testing


【解决方案1】:

对于第二种变体:您需要确定您的目标吞吐量是多少 (TP)。每小时 2000 个请求?每分钟?每秒?一旦获得 TP 和场景响应时间 (RT) 的猜测,您就可以使用 Little 定律估计 VUser 的数量。或者,您可以使用calculator 来确定该号码。

Jmeter 提供了一种机制来使用Arrivals Thread Group 提交此工作负载(场景)。此 TG 将实例化维持目标 TP 所需的线程数。

请注意,您可能无法达到 TP 目标,原因如下:

  1. SUT 没有处理负载的容量
  2. 环境某处的瓶颈(资源饱和)
  3. 客户端 (JMeter) 确实有足够的资源来产生负载

【讨论】:

    【解决方案2】:

    JUnit 本身不提供任何多线程逻辑,您必须自己构建 HTTP 请求(或使用像 RestAssured 这样的第三方库),然后使用 ExecutorServicejmh 执行它们,然后想出一些东西来进行结果分析。

    JMeter has everything out of the box 所以你不需要写一行代码,reporting is also included,它可能对 CI 不太友好,因为 JMeter .jmx 脚本是 XML,但另一方面你会得到很好的protocol metrics以及将增加的负载与增加的响应时间相关联的能力

    【讨论】:

      猜你喜欢
      • 2020-07-18
      • 1970-01-01
      • 1970-01-01
      • 2017-04-17
      • 1970-01-01
      • 1970-01-01
      • 2010-10-03
      • 2016-01-06
      • 1970-01-01
      相关资源
      最近更新 更多