【问题标题】:Stuck in a nested loop while using JMeter. Nested loop controller and CSV data set config.使用 JMeter 时陷入嵌套循环。嵌套循环控制器和 CSV 数据集配置。
【发布时间】:2014-04-04 12:00:54
【问题描述】:

在我的网站上,我有两个商家操作:搜索和浏览。一次搜索通常会触发三次浏览。

我有一个 JMeter 测试,它使用包含商家和商家 ID 号的 CSV 文件,在大规模运行此测试时,我希望使用我网站上的所有商家。

我在 JMeter 中这样映射:

  • 循环控制器
    • HTTP 采样器(搜索 /search/${merchant_name})
    • CSV 数据集配置(商户名称)
    • 循环控制器
      • HTTP 采样器(浏览 /merchant/${merchant_id})
      • CSV 数据集配置(商户 ID)

我在外循环设置loop count = 2,在内循环设置loop count = 3

我预计两次搜索会触发 6 次浏览操作。但我得到的是一个搜索,然后是三个浏览,一直持续到我中止测试。

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

如何实现我的目标,即运行一次搜索,然后进行三次浏览,两次?

【问题讨论】:

    标签: jmeter


    【解决方案1】:

    我认为您误用了 CSV 数据集配置。

    我的方案如下:

    鉴于以下 CSV 文件:

    merchants.csv 包含:

    merchant1name
    merchant2name
    

    和其他 2 个 CSV 文件:merchant1name.csvmerchant2name.csv,其内容为:

    id1
    id2
    id3
    

    并遵循测试计划结构:

    • 线程组(1 个线程,1 秒加速,1 个循环)
      • 回路控制器(2 个回路)
        • HTTP 请求 /${merchantname}
          • Beanshell 后处理器(代码和解释见下文)
        • CSV 数据集配置(文件名:businessers.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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-09
      • 1970-01-01
      • 2021-12-11
      • 1970-01-01
      • 2018-01-06
      相关资源
      最近更新 更多