如何在 JMeter 中对具有不同 ID 的同一资源执行多个 HTTP DELETE 操作?

How to perform multiple HTTP DELETE operation on same Resource with different IDs in JMeter?


我有一个关于**使用并发线程组在 JMeter 中为 HTTP DELETE 方法编写测试**的问题。我想测量**对于发送并发 HTTP (DELETE) 请求的一定数量的用户(即线程),它可以在一定时间内执行多少 DELETEs**。

并发线程组参数是:
目标并发数:50(线程)
加速时间:10 秒
RampUp 步数:5 秒
保持目标速率时间(秒):5 秒
线程迭代限制:无限

问题是 HTTP DELETE 是幂等操作,即如果在同一资源上调用(即在数据库中记录),它就没有多大意义。如何通过在 URL 中传递实体 ID 来删除数据库中的多个现有记录?例如:

http://localhost:8080/api/authors/{id}

...每个用户(即线程)的 ID 在哪里递增? 我的问题是如何自动删除数据库中的多个现有行(Postgres 11.8)...我应该写某种脚本还是还有其他 更简单的方法 可以实现吗? 但我再次猜测它可能会对相同的资源 ID 执行多次相同的操作(例如,HTTP DELETE 将在 http://localhost:8080/api/authors/5 上被调用多次)。
非常感谢任何help/advice。

P.S. 我这样做是为了对我的 SpringBoot、Vert.X 和 Dropwizard RESTful Web 服务应用程序进行性能测试。

更新1:
抱歉,我没有完全说明为我的与 Postgres 数据库通信的 Web 服务应用程序编写这些测试用例的原因。 主要原因为什么我实际上做这个测试是为了测试阻塞和非阻塞 WEB 服务器实现的性能 提到的框架(SpringBoot,Dropwizard和 Vert.X)。 Web 服务器是:

  1. 阻塞 实现:
    1.1. Apache Tomcat(SpringBoot)
    1.2. Jetty(Dropwizard)
  2. 非阻塞:Vert.X(使用自己的基于Netty的实现)

如果我在我的测试计划中使用JMeter's JDBC Request,那实际上不会减慢测试执行吗?

最简单的方法是使用 Counter config element or __counter() function 以便在每次 API 命中时生成递增数字:

更多信息:How to Use a Counter in a JMeter Test

也可以通过 JDBC Request sampler and iterated using ForEach Controller

从 Postgres 数据库中获取 ID 列表