api - Jmeter 性能测试 - 使用 JSR223 采样器从 API 和从 MongoDB 获得的结果计数差异

标签 api testing jmeter performance-testing

我使用 JMETER 4.0 创建了一个性能测试套件,我有多个测试用例,分为 2 个片段,我从单个线程调用它们。以下是 2 个片段中的测试用例类型。

测试片段1:对用户的CURD操作

测试片段 2:从 MongoDB 和 API 获取用户计数并进行比较 来自测试片段 1 的测试用例首先根据线程数运行多次,然后来自第二个片段的测试用例运行

在测试片段 2 中,我有这两个测试用例

TC1:从 mongoDB 中获取用户数(使用 JSR223 Sampler)

TC2:使用 API 获取用户数

当第二个测试片段运行时,从 mongoDb 获取用户计数的测试用例与直接使用 API 获取计数的测试用例给出不同的计数。 API 正在谈论更新 mongoDB 中的数据的时间,因为可能有一些层需要时间来更新数据库中的数据(我不确定存在哪个层以及为什么它需要时间)。当我为单个用户运行脚本时,脚本工作正常,因此毫无疑问脚本有问题。

请有人建议我们可以在这里使用什么方法来获得相同的计数。

一个。添加定时器/延迟是一种好方法还是可以使用其他方法?

如果使用计时器/延迟是否也会影响性能测试报告,这些延迟是否会加到我们的性能测试报告中?

最佳答案

这可能是您面临的情况 race condition ,即当您使用一个线程从数据库执行读取操作时,该数字已被另一个线程更新。

选项在:

  1. 修改您的查询,使您的数据库检查针对特定用户。
  2. 使用Critical Section Controller确保您的数据库检查一次仅由 1 个线程执行
  3. 使用Inter-Thread Communication插件,以便根据特定条件实现跨线程同步。后者可以使用 JMeter Plugins Manager 安装

关于api - Jmeter 性能测试 - 使用 JSR223 采样器从 API 和从 MongoDB 获得的结果计数差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50062773/

相关文章:

javascript - 如何在 React 中使用 javascript 处理 fetch

c++ - 单击更改字体颜色

ruby - 理解 RSpec 中 as_null_object 的需求

algorithm - 使用 Jmeter 请求循环遍历文件夹和子文件夹

json - 为什么在具有 KAA 的端点客户端中得到 200 的响应但不显示消息正文

api - 如何在 F# 中隐藏方法?

java - 如何在每次提交/推送之前运行我的 Spring 测试?

java - 如何更好地测试具有公共(public)队列的多线程程序?

java - Jmeter java.lang.NullPointerException

jmeter - 如何让 Jmeter 将 CSV 数据用于 GET 参数?