第16节 最好的实践(16.10~16.15)

第16节 最好的实践

16.10 用Groovy或Jexl3进行脚本开发

    编写脚本并将其作为函数进行测试非常困难,但是,JMeter有JSR223采样器,可以与任何支持它的语言一起使用,我们建议使用Apache Groovy或任何支持JSR223可编译接口的语言

    创建一个包含JSR223 Sampler和Tree View Listener的简单测试计划,在取样器的脚本窗格中编写脚本代码,并通过运行对其进行测试。如果有任何错误,这些错误将显示在Tree View和jmeter.log文件中,此外,运行脚本的结果也将作为响应显示出来。

    一旦脚本正常工作,它就可以作为变量存储在测试计划中,然后可以使用脚本变量创建函数调用。例如,假设Groovy脚本存储在变量RANDOM_NAME中。然后函数调用可以写为为$ {__ groovy($ {RANDOM_NAME})}。不需要转义脚本中的任何逗号,因为函数调用是在插入变量的值之前解析的。

16.11 参数化测试

    通常,可以使用不同的设置重新运行相同的测试,例如,更改线程或循环的数量,或更改主机名。
    一种方法是在测试计划上定义一组变量,然后在测试元素中使用这些变量。例如,可以定义变量LOOPS = 10,并将线程组中的变量称为$ {LOOPS}。要使用20个循环运行测试,只需更改测试计划上的LOOPS变量的值。
    如果您想在非gui模式下运行大量的测试,那么这很快就会变得单调乏味,一个解决方案是根据属性来定义测试计划变量,例如loop =${P(loop,10)),这使用属性“loops”的值,如果找不到属性,则默认为10。然后可以在JMeter命令行上定义“loops”属性:

jmeter … -Jloops=12 …

    如果有许多属性需要一起更改,那么实现此目的的一种方法是使用一组属性文件,可以使用-q命令行选项将相应的属性文件传递给JMeter。

16.12 JSR223

    对于密集的负载测试,推荐的脚本语言是ScriptingEngine实现可编译接口的脚本语言.Groovy脚本实现了可编译。但是,从JMeter 3.1发布之日起,Beanshell和Javascript都没有这样做,因此建议避免使用它们进行密集的负载测试。

注意:Beanshell实现了可编译接口,但是还没有对其进行编码——该方法只是抛出一个异常,JMeter为这个bug提供了一个显式的解决方案

    使用JSR 223元素时,建议检查Cache编译脚本(如果可用)属性,以确保在基础语言支持时缓存脚本编译,在这种情况下,请确保脚本不使用$ {varName}的任何变量,因为缓存只会获取$ {varName}的第一个值,而不是使用:

vars.get("varName")

    你还可以将它们作为参数传递给脚本,并以这种方式使用它们。

16.13 线程和线程组之间共享变量

    变量是线程的本地变量;一个线程中的变量集不能在另一个线程中读取。设计如此,对于可以在测试开始前确定的变量,请参阅参数化测试(上文),如果在测试开始之前不知道该值,则有多种选择:

  • 将变量存储为属性 - 属性对JMeter实例是全局的
  • 将变量写入文件并重新读取它们
  • 使用bsh.shared命名空间 - 见上文
  • 编写自己的Java类

16.14 管理属性

    当你需要修改jmeter属性时,请确保不修改jmeter.properties文件,而是从jmeter.properties复制该属性并在user.properties文件中修改其值。这样做可以简化您迁移到下一版JMeter的过程。请注意,在文档中经常提到jmeter.properties,但这应理解为“从jmeter.properties复制到user.properties要修改的属性,并在后一个文件中执行此操作”。

user.properties文件覆盖jmeter.properties中定义的属性

16.15 不推荐使用的元素

    建议不要使用已弃用的元素(在更改列表和组件引用中标记为已删除的元素)并迁移到新的元素(如果可用),或者采用新的方法来做同样的事情。从版本N的菜单中删除不推荐使用的元素,但可以通过修改user.properties文件中的not_in_menu属性来启用迁移,并从中删除元素的完整类名。

请注意,版本N中的废弃元素肯定会在版本N+1中被删除,因此请确保尽快停止使用它们。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值