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

时间:2018-04-27 12:48:44

标签: api testing jmeter performance-testing

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

测试片段1:用户

上的CURD操作

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

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

TC1:从mongoDB获取用户数(使用JSR223采样器)

TC2:使用API​​

获取用户数

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

有人请建议我们可以使用哪种方法来获得相同的数量。

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

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

1 个答案:

答案 0 :(得分:1)

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

选项包括:

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