前言
在之前的文章JMeter:BeanShell向JSR223迁移过程遭遇的java标准库不可用问题-如何切换JDK版本中引用了一段使用BeanShell对入参进行加密的脚本,迁移到JSR223,虽然更换JDK后编译通过,看似也可以执行了,但是其实那段脚本是有问题的。要解释这个,就要先说一下JSR223在处理groovy语言时,与BeanShell的区别。
使用groovy语言时,JSR223可先对脚本进行编译,而且,推荐缓存编译后的脚本(配置项Script compiled caching - Cache compiled script if available默认选中,且推荐保持选中状态)。这使得它在脚本的执行效率上比BeanShell+Java解释器更加高效,因而官网建议在性能测试中使用JSR223 +Groovy来替代BeanShell+Java。
但是正是由于它的编译功能和缓存编译脚本的特性,使得当在脚本中直接使用JMeter变量或JMeter内置函数时,可能会出现非预期的效果,因为它仅缓存变量的第一次替换。所以,当在JSR223中使用{key}或{function}的方式来使用属性、变量或内置函数时,它仅在第一次调用的时候对值进行更新和替换,后续将不再替换,导致
订阅专栏 解锁全文
1230

被折叠的 条评论
为什么被折叠?



