jMeter-初始化文件中的Beanshell bsh.shared哈希图数据?


问题内容

我正在处理一个jMeter项目,该项目引发了各种各样的问题。主要是由于在整个运行过程中存储和定义了可变数据。

现在,我的工作非常正常,并且正在使用Beanshell共享哈希图通过运行存储数据。我不必担心线程安全性,因为我这样做的方式。

它可以工作,但是每次线程组运行时都会重新初始化自己。尽管将初始化步骤置于所有线程组之外。

因此,据我所知,解决方案是将所有启动数据放入初始化文件,该文件在启动时仅运行一次。但是我不知道该怎么做?我已经将以前使用的Beanshell预处理器中的代码复制到了“
.bshrc”文件中,并用“
.bshrc”文件的位置更新了jMeter属性文件,但似乎不起作用。它实际上似乎并没有做任何事情。当我运行测试时,不存在任何值,并且一切都会失败。

我试过使用:

beanshell.init.file = .. / bin / data.bshrc和beanshell.preprocessor.init = .. /
bin / data.bshrc

我试图找到某种用于设置init文件的白痴指南,但是找不到任何有用的信息。这是我第一次必须认真使用Beanshell,而我的Java知识充其量是非常有限的!

目前,我通过启用原始Beanshell预处理程序运行一次测试来解决这个问题。这将设置哈希图,并且它们从此开始就驻留在内存中。我停止了此运行,禁用了预处理程序,所有后续运行都很好。

任何人?


问题答案:

我建议使用setUp线程组,该线程组先于其他任何线程组执行,然后使用Beanshell
Sampler定义您的测试数据,例如

bsh.shared.myMap = new java.util.HashMap();
bsh.shared.myMap.put("foo","bar");
// any other operations

之后,您可以在主线程组中以以下方式访问myMap任何启用了Beanshell的测试元素(采样器,前/后处理器,断言)中的值:

log.info("foo = " + bsh.shared.myMap.get("foo"));

2014/07/22 10:06:48信息-jmeter.util.BeanShellTestElement:foo = bar

请参阅如何使用BeanShell:JMeter最喜欢的内置组件指南,以获取有关Apache
JMeter中的Beanshell脚本和Beanshell食谱的更多详细信息。

如果将Beanshell用于“大量”操作,我建议您考虑切换到JSR223
Sampler
Groovy语言,因为在这种情况下,您将获得与本地Java代码相当的性能。