1

我正在尝试构建一个可以对服务器进行 http 调用的 Jmeter 测试计划。线程组中的每个线程将从 CSV 文件中读取 2 个参数并使用参数进行 http 调用,并继续使用相同的参数进行相同的调用,例如 1000 次,每个线程执行之间的延迟为 10 秒。

http调用看起来像

/service/method?param1=${param1}¶m2=${param2}

CSV 是这样的:

1,2
3,4
5,6
7,8

我已经设置了测试计划,除了单个问题外,大部分情况下都可以使用。我希望每个线程在线程执行时使用相同的参数(相同的输入行)。目前唯一的方法是设置Recycle on EOF = true,但线程随机选择值。Param1 和 Param2 可以是随机生成的值,只要它们在整个执行过程中坚持使用相同的线程即可。

无论如何我可以做到这一点吗?

谢谢!

4

2 回答 2

2

我不确定我是否正确理解了您的问题(您可以更明确地描述它或使用示例),但下面的架构应该实现您的测试计划描述:

测试计划
    线程组
    线程数:N
        . . .
        While Controller 
        Condition: ${__javaScript("${param2"!="<EOF>",)} - 读取 csv 文件,直到 EOF  
            CSV 数据集配置
            文件名:[包含测试数据的文件的路径]
            变量名称:param1,param2
            在 EOF 上回收?错误的
            在 EOF 上停止线程?真的
            共享模式:当前线程组
            循环控制器
            循环计数 = 1000 - 每个线程的循环数,具有相同的参数
                HTTP 请求 - 你的 http 调用
                测试操作
                目标 = 当前线程
                动作 = 暂停
                持续时间(毫秒)= 10000 - 呼叫之间的暂停
            . . .

如果您需要 N 个线程中的每一个从 csv 文件中读取并使用单个且唯一的行,您必须Sharing mode: Current thread group为 CSV 数据集配置设置(在这种情况下,csv 条目的数量应该与线程数相同,或者Recycle on EOF? False应该是否则设置)。
如果您需要 N 个线程中的每一个都读取并使用csv 文件中的所有行,您必须Sharing mode: Current thread为 CSV 数据集配置进行设置。

如果这不是您想要的,请更清楚地描述您的问题。

于 2012-09-12T17:01:16.817 回答
0

我能够找到一种黑客。基本上,我只是为每个线程设置了一个常量计时器,并使用线程号 ${__threadNum} 作为参数来适应我对同一线程使用相同参数的约束。

我仍然更喜欢从 csv 文件中读取参数的方法。

于 2012-09-14T03:19:17.770 回答