2

自从周一客户告诉我,为了性能测试的目的,我们需要模拟多达 50,000 个伪并发实体时,我就一直在这方面碰壁。这是设置。我有一个充满 JSON 对象的文本文件,其中包含看起来有点像这样的 JSON 数据:

{"customerId"=>"900", "assetId"=>"NN_18_144", "employee"=>"", "visible"=>false,
 "GenerationDate"=>"2012-09-21T09:41:39Z", "index"=>52, "Category"=>2...}

这是一条线的一个对象。我正在使用 JMeter 的 JMS 发布者按顺序读取这些行:

${_StringFromFile(${PATH_TO_DATA_FILES}scenario_9.json)}

从每一个都包含不同的场景。

我需要做的是读取文件并将assetId的值替换为从50,000个非顺序的预生成字符串列表中随机选择的值(我不可能为每个assetId创建一个单独的文件,因为这将涉及用 50,000 个文件乱扔负载注入器,并在 JMeter 中为每个文件配置一个线程组)。以编程方式,执行替换是一件微不足道的事情,但在 JMeter 中动态执行它并不是那么简单。

通常,我会将其视为有趣的技术挑战,并花几天时间解决它,但我只有周末,我怀疑我会在办公室过夜。

有人可以帮我解决这个问题吗?

谢谢。

4

2 回答 2

1

如果您的 JSON 正文始终相同,或者您的内容几乎没有变化,您应该:

  • 使用带有 RAW POST 正文的 HTTP 采样器

  • 将 JSON 正文与资产 ID 的变量一起放入其中

  • 将资产 ID 放入 CSV 数据集配置中

避免使用 ${_StringFromFile} 因为它有成本。

如果您需要脚本,请使用 JSR223 后处理器和外部文件中的脚本 + 缓存(自 2.8 起可用)以便编译脚本。

于 2012-12-22T16:25:30.823 回答
1

要读取您的资产,请使用CSV Data SetConfig,我想assetId 将是变量名称。

修改你的表达式:

   ${_StringFromFile(${PATH_TO_DATA_FILES}scenario_9.json, lineToSubstitute)}

要进行替换,请添加一个Beanshell 采样器JSR223_Sampler J(使用 groovy)并编写替换代码:

   String assetId = vars.get("assetId");
   String lineToSubstitute = vars.get("lineToSubstitute");
   String lineSubstituted = ....;
   vars.put("lineSubstituted", lineSubstituted);
于 2012-10-13T19:51:05.207 回答