在我的网站上,我有两个商家操作:搜索和浏览。一次搜索通常会触发三次浏览。
我有一个 JMeter 测试,它使用商家和商家 ID 号的 CSV 文件,在大规模运行此测试时,我希望使用我网站上的所有商家。
我已经在 JMeter 中映射了它,如下所示:
- Loop Controller
- HTTP 采样器(搜索 /search/${merchant_name})
- CSV 数据集配置(商户名称)
- Loop Controller
- HTTP 采样器(浏览 /merchant/${merchant_id})
- CSV数据集配置(商户ID)
I set loop count = 2
在外循环中和loop count = 3
在内循环中。
我预计两次搜索会触发 6 次浏览操作。但我得到的是一次搜索,然后是三次浏览,不断地直到我中止测试。
我是否误解了循环结构?这是预期的行为吗?
如何才能实现运行一次搜索、然后三次浏览、两次的目标?
我认为您滥用了 CSV 数据集配置。
我已经让你的场景工作如下:
给定以下 CSV 文件:
merchants.csv
包含:
merchant1name
merchant2name
和另外 2 个 CSV 文件:merchant1name.csv
and merchant2name.csv
内容为:
id1
id2
id3
以及以下测试计划结构:
- Thread Group (1 thread, 1 second ramp-up, 1 loop)
- Loop Controller (2 loops)
- HTTP Request /${merchantname}
- CSV 数据集配置(文件名:merchants.csv 文件的完整路径,变量名称:merchantname,全部默认)
- Loop Controller (3 loops)
- HTTP Request /${merchantid}
- CSV 数据集配置(文件名:merchantname1 文件的完整路径,merchantname1 应为属性,变量名称:merchantid,全部默认)
通过在 CSV 数据集配置中使用“所有默认值”,我假设以下内容:
- 文件编码 - 空白(我的 JMeter 使用 UTF-8 运行,这对于大多数情况来说都很好)
- 分隔符 - ,(逗号)
- 允许引用数据 - false
- EOF 时回收 - true
- 在 EOF 时停止线程 - false
- 共享模式——所有线程
豆壳代码:
props.put("merchantname", vars.get("merchantname"));
这是必需的,因为 CSV 数据配置不允许在文件路径中使用变量。
内循环路径:
C:\jmeter\${__P(merchantname,)}.csv
您可以参考http://glinius.narod.ru/stackoverflow/nestedloop.zip http://glinius.narod.ru/stackoverflow/nestedloop.zip文件。将“nestedloop”文件夹(1 个 jmx 文件和 3 个 CSV 文件)中的所有内容解压到 JMeter 的 /bin 文件夹并运行测试。它将产生 8 个请求
参考资料:
- 使用 CSV 数据集配置 http://community.blazemeter.com/knowledgebase/articles/65138-using-csv-data-set-config
- 如何使用BeanShell http://blazemeter.com/blog/queen-jmeters-built-componentshow-use-beanshell
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)