非GUI模式下的JMeter测试不可信

时间:2018-06-26 17:19:29

标签: jmeter jmeter-plugins jmeter-4.0

GUI上的测试脚本可以完美运行,但不能在非GUI模式下运行。Image showing Terminal test execution

说明: 我在测试计划中有3个线程组,其中第一个Thread Group创建了3个.csv文件,并期望将CSV文件中的数据馈送到second Thread Group中。

对于很少的测试运行,非GUI模式非常有效,但是随后,像[终端显示测试运行]这样的测试就断断续续地完全不创建CSV文件, 有时,第三个线程组根本不执行。

T 问题,我注意到的是:

  1. 在NOn-GUI测试期间未创建文件,因此这就是下一个线程组无法选择并使用CSV文件中的变量以及

  2. 第二个可能是:我将文件夹和文件路径保存在 $ {__ setProperty(prop_folder_Path,$ {File_Path})}并获取道具。 ${__property(prop_folder_Path)}在另一个线程组中->有时此属性功能不起作用,文件保存在/bin目录中

    有没有办法在BeanShell POStProcessor中使用${__property(prop_folder_Path)}值?

我相信GUI中的所有功能在非GUI中也应相同,是吗?

我刚刚注意到在NOn-GUI中运行测试时,正在/ bin文件夹as shown here 中创建输出文件

任何解决此问题的建议。谢谢

1 个答案:

答案 0 :(得分:0)

我的期望是您的“ .csv”文件创建以某种方式失败,因此第二线程组由于缺少文件而无法运行。

JMeter没有任何内置功能可将某些内容写入文件,因此我认为您使用JSR223 Scripting实现了一些自定义逻辑,但此方法无效。原因可能是:

  1. 如果从另一个文件夹运行JMeter,则可以在其他位置创建.csv文件,请尝试使用完整路径,以防万一。
  2. 非GUI模式往往比GUI模式更快,因此可能是多线程问题的情况,即当多个线程试图同时将数据写入同一文件并发生冲突或产生格式不正确的数据时。

在这两种情况下,答案都将保存在 jmeter.log 文件中,检查是否存在可疑条目并解决原因。


通常,最好不要使用文件在线程组之间传递数据,我建议改为在内存中进行操作,例如:

  1. 在第一线程组中,使用__setProperty()函数将存储在CSV文件中的数据转换为JMeter属性,例如:

    ${__setProperty(foo,bar,)}
    
  2. 在第二线程组中,使用__P() function读取数据,例如:

    ${__P(foo,)}
    

更多信息:Knit One Pearl Two: How to Use Variables in Different Thread Groups