2014-04-04 25 views
3

在我的网站上,我有两个商家操作:搜索和浏览。搜索通常会触发三种浏览。使用JMeter时嵌套在循环中。嵌套循环控制器和CSV数据集配置。

我已经运行在这个规模测试,我想使用的所有在我的网站上的商家时使用的商户和商户ID号的CSV文件,JMeter测试。

我在JMeter的映射这就像这样:

  • 回路控制器
    • HTTP取样(搜索/搜索/ $ {MERCHANT_NAME})
    • CSV数据集配置(商家名称)
    • 回路控制器
      • HTTP采样器(浏览/ merchant/$ {merchant_id})
      • 个CSV数据集配置(商家ID)

我在内环的外环和loop count = 3设置loop count = 2

我想到两个搜索触发6种浏览行为。但是我得到的是一个搜索,然后是三个浏览,一直持续到我放弃测试。

有我误解了循环结构?这是预期的行为?

我如何能实现我的搜索的运行目标,接着是三个浏览,两次?

回答

0

我认为你滥用CSV数据集的配置。

我有你的工作情况如下:

鉴于以下CSV文件:

merchants.csv包含:

merchant1name 
merchant2name 

和其他2 CSV文件:merchant1name.csvmerchant2name.csv与内容:

id1 
id2 
id3 

及后续测试计划结构:

  • 线程组(1线,1秒系统预热,1环)
    • 回路控制器(2路)
      • HTTP请求/ $ {MERCHANTNAME}
        • BeanShell的后置处理器(见下面的代码和说明)
      • CSV数据集配置(文件名:完整路径MERC HANTS。csv文件,变量名:MERCHANTNAME,所有默认值)
      • 回路控制器(3圈)
        • HTTP请求/ $ {MERCHANTID}
          • CSV数据集配置(文件名:完整路径merchantname1文件,merchantname1应是属性,变量名:MERCHANTID,所有默认值)

通过关于CSV数据集配置使用“所有默认设置”我认为以下几点:

  • 文件编码 - 空(我JMeter是与运行UTF-8是罚款大多数情况下)
  • 分隔符 - 在EOF假
  • 回收 - - ,(逗号)
  • 允许引用数据真实
  • 停止线程EOF - 假
  • 共享模式 - 所有主题

的BeanShell代码:

props.put("merchantname", vars.get("merchantname")); 

这是必须的CSV数据配置不允许在文件路径中使用的变量。

路径在内部循环:

C:\jmeter\${__P(merchantname,)}.csv 

你可以参考http://glinius.narod.ru/stackoverflow/nestedloop.zip文件。从“nestedloop”文件夹(1个jmx文件和3个CSV文件)解压所有文件到JMeter的/ bin文件夹并运行测试。它会产生8个请求

参考资料:

  1. Using CSV DATA SET CONFIG
  2. How to use BeanShell
+0

它总是读一个商户的详细信息 – binary