JMeter属性导致非GUI模式下的错误

时间:2018-09-28 23:45:57

标签: jmeter

我的问题

我有一个使用属性设置用户定义变量的脚本。这在GUI测试期间效果很好。但是,在非GUI模式下进行测试时,该脚本只会导致失败。

我正在使用属性,因为这些值是在“端点创建”线程组中创建的,但是我需要它们可全局访问。因此,我使用了一些RegEx提取器和BeanShell断言来将值分配给几个不同的属性。 Here's what that looks like.

Here is my User Defined Variables with the properties set as their values.

我知道这些属性在非GUI模式下是一个问题,因为如果我将其属性替换为其硬编码值,则非GUI测试会成功完成。

当我准备开始测试时,请关闭“端点创建”线程组,因为我只需要它来配置用户定义的变量。

我应该提到出于性能原因,在测试过程中必须使用非GUI模式。


问题

  • 非GUI JMeter与GUI JMeter对待用户定义属性的方式不同吗?
  • 我是否可以保留这些属性并使它们在非GUI模式下工作?

1 个答案:

答案 0 :(得分:0)

我可以想到两个可能的问题:

  1. 测试执行的非GUI模式快得多,并且占用更少的内存,因此您读取/覆盖/再次读取的逻辑可能会在某处中断
  2. Beanshell本身不是最佳的脚本选项,它具有众所周知的性能问题,因此可能成为测试的瓶颈。

在两种情况下,请检查 jmeter.log 文件中是否有可疑条目。

建议:

  1. 您根本不需要执行User Defined Variables步骤,JMeter Properties对于所有Thread Groups(实际上是整个JVM)都是全局的,因此您只能在其中Salt条目可以删除,只需使用__P()__property()函数
  2. 引用属性即可。
  3. 以防万一,如果您将Beanshell脚本用于其他用途,请使用JSR223 Elements替换Beanshell测试元素,并确保使用Groovy language,因为它可以提供最佳性能。还请记住,不要在脚本内使用JMeter函数或变量,而要使用基于代码的等效项,从而:

    props.put('someproperty', vars.get('somevariable'))