脚本优化
回放脚本验证成功后,可以进行添加事务、参数化、运行时设置。
事务:根据项目需要,除了衡量整个脚本的性能外,还想获取到脚本中的某一段或几段操作,例如:想知道从单击"login"按钮到显示首页这一登录过程的性能数据,以便更详细的知道具体是用户的哪些动作对系统性能的影响比较大。这时候,可以将登录的运行脚本标记在一个事务内。
在脚本中没有事务时,可以在脚本开始和结束的地方分别加上
lr_start_transaction(“xxx”);
lr_end_transaction(“xxx”, LR_AUTO);
表示整个脚本为一个事务。否则,可能监控不到事务响应时间
参数化:所谓参数化,针对的是脚本中的某些常量。让不同的虚拟用户在执行相同的脚本时,分别使用数据源中的不同数据代替这些常量,从而达到模拟多用户真实使用系统的目的。例如在’用户搜索’的事务脚本中,搜索的关键字是’nba’。但实际情况中,每个并发访问的用户搜索的关键字是不一样的。所以要使每个用户执行脚本时的关键字都不一样,这个过程就需要对关键字参数化。
运行时设置:设置action的运行逻辑、迭代次数、设定思考时间、日志等
【迭代次数】
Run Logic 运行逻辑
Iteration Count: 迭代次数
Number of Iteration: 默认1 改为5
注意:循环的只是Action部分
vuser_init和vuser_end部分仅执行一次
【步,迭代间隔】
Pacing值:每次迭代之间的时间间隔。 单位:秒
每次迭代:LR每次执行Action脚本代码
默认:第一个,上一个迭代一结束就开始下一个迭代
有三个选项:
<1> As soon as the previous iteration ends
只要上一次迭代结束就进行下一个迭代
<2> 在上一次迭代结束后
固定的 延迟
With a fixed delay of 6.000 sec
随机的 时间精确到小数点后3位 2.768
With a random delay of 2.000 to 3.000 sec
间隔
<3> At fixed intervals, every 6.000 sec
random every 2.000 to 3.000 sec
【思考时间】
脚本每个步骤之间的时间间隔。 单位:秒
每个步骤:一般都是每个请求
web_url 访问某个URL请求
web_submit_form 提交表单请求
web_link 点击超级链接请求
如果设置Ignore 忽略,则脚本中lr_think_time(); 会失效。
规律:Think time值越大,对SUT的压力越小。
思考时间是为了模拟时更加接近用户的真实行为。实际中,用户进行一系列的操作之间会有停顿,即思考时间,例如:加载出数据后,用户会阅读数据,而浏览数据的过程对服务器是没有压力的。因此,在脚本中用函数lr_think_time(double time)来模拟用户停顿过程(未执行任何操作的过程),执行该函数时,用户线程会按照相应的time值进行等待。如果选择忽略思考时间,会对服务器造成更大的压力。