lr脚本优化、关联、参数
一、优化脚本之删减脚本
1.检查脚本里面跟我们目标网站不符的URL地址,删除掉这些请求
2.脚本里面关于图片和其他无关资源下载的请求,删除掉jpg、jpeg、bmp、png、swf、fls
3.没有ACTION 没有URL地址的删掉,因为没有地址,数据没有地方去
4.重复的请求删掉
5.没有提交数据的或者是没有看到itemdata这个关键词的注释掉
6.再次回放,并查看日志
7.ctrl+alt+c 注释脚本
ctrl+alt+u 去掉注释
二、关联
1.什么是关联?
· 把脚本中某些写死的数据(硬编码),转变为服务器发送的、动态的、每次都不一样的数据(以不变应万变)
2.为什么要使用关联?
因为服务器端在与客户端的交互过程中,根据业务需求会产生每次不同的数据,为了让固定的脚本能够适应这些数据,需要关联
3.什么时候使用关联?
录制时是正常的,但是回放时不成功,存在动态数据信息(动态id),考虑关联
4.一般关联的操作步骤
(1)从服务器返回的数据中选取需要进行关联的数据(找数据)
(2)将该数据存入脚本的一个参数中
变动的数据在脚本中是参数,由于是变化的,所以叫动态ID(需要关联的数据)
(3)将脚本中需要使用数据的地方用该参数代替
5.怎么做关联?
(1)录制两次相同操作的脚本
(2)两次脚本,做比较 Tools--Compare with Script..
(3)白底表示相同部分,黄底表示不同,黄色的大块,不用太关注,因为和数据包的先后有关,找出动态ID(动态ID一般是一串无规律的字符串)
(4)关联类型;手动关联(常用)
使用web_reg_save_param()函数(预注册函数,需要写在相应请求之前:寻找相应请求),在源文件中找到需要关联的字符串(动态数据),存入一个参数中
把录制时数据替换为该参数(动态数据)
(5)如何查找到相应请求?(为了在之前写关联函数)
①拷贝动态ID适当长度,从下方的Generation Log的第一行开始查找!!!
如果该动态ID查找到的位置是在服务器的应答包中(Response Body...),说明查找正确。(第一次,是从服务器发出的ID)
②查找到之后,选取适当长度的左右边界,拷贝下来,准备写函数。
③先向下慢慢翻找,找到与当前应答id号相同的id号的请求,该请求即为相应请求。 (90%的情况都是在下方不远处,Request 和 Event 都是请求)
web_url("... "Snapshot=t7.inf", ); 快照名是唯一的,作为线索
寻找脚本中t7.inf对应的请求位置。将拷贝的串信息粘贴到请求之前
④找到相应请求之后,在请求之前写关联函数,并将后续脚本中用到动态ID的位置用函数中的参数名替代。
web_reg_save_param("uid", //参数名称
"LB=name=userSession value=", //左边界
"RB=>", //右边界
LAST);
相应请求;
⑤之后,将脚本中的ID值,用参数uid代替:
"Name=userSession", "Value=121571.58890239zcfDDDipzAtVzzzHDHfcApADVzcf", ENDITEM,
改为:
"Name=userSession", "Value={uid}", ENDITEM,
即可。{uid} 取得LR的变量值,LR语法范围内有效的。
⑥再次回放购票脚本,购票成功
三、参数化设置步骤
1.目的:模拟真实场景,例如,登录操作,不可能所有的用户名都一致
2.打开参数设置,两种方式
(1)工具栏中的倒数第二按钮,<p>--Open Parameter List(Ctrl+L)
(2)Vuser--Parameter List..
3.新建参数(以飞机票为例,注册用户)
(1)new三个参数,命名为username、pwd1、pwd2
三种方式:手动增加行增加列,输入、可通过笔记本导入、连接数据库导入
(2)调用参数取值的方式
①手动填写 {参数名},如{username}
②选中值,右击,Replace with a Parameter,用参数替换,选择参数,ok
4.脚本只实现注册一次的功能,5个参数,所以需要注册5次,即脚本运行5次
Run-tine Settings---Run logc,设置5次
5.运行脚本,最后验证是否注册成功,用注册的这些值去登录,看是否可以登录
四、参数池策略
1.select next row(取值方式)
(1)Sequential 顺序:对于每个VU,都是从第一行开始,顺序依次向下取值
(2)Random 随机:对于每个VU,取值随机,值可以重复
(3)Unique 只用一次:对于每个VU,从第一行开始,唯一依次向下取值
(4)和xx一样:同行步调一致,具备一定关系
2.Update value on(何时取?when?)
(1)Each iteration 每次迭代:每次脚本循环(默认Action)时更新参数的值
(2)Each occurrence 每次遇到就更新:脚本运行时,只要遇到该参数即更新
(3)Once 仅取一次:从头到尾只用这个值
3.Out of value(越界方式===参数池数据不够时,Unique)
(1)放弃VU:直接放弃该虚拟用户,
(2)以循环方式继续:循环从第一行继续取
(3)以最后一个值继续:一直使用最后一个值
4.以两个输出函数为例,test为3个参数,依次为ABC
(1)Sequential +Each iteration
迭代第一次,输出:AA
迭代第二次,输出:BB
迭代第三次,输出:CC
(2)Sequential+Each occurrence
迭代第一次,输出:AB
迭代第二次,输出:CD
(3)Sequential+Once
迭代N次,输出:A A
(4)Random+Each iteration
迭代N次,输出:A or B or C
(5)Random +Each occurrence
迭代N次,输出:A or B or C
(6)Random+Once
迭代N次,输出:A or B or C
(7)Unique +Each iteration
迭代第一次,输出:AA
迭代第二次,输出:BB
(8)Unique +Each occurrence
迭代第一次,输出:AB
迭代第二次,输出:C D
(9)Unique+Once
迭代N次,输出:A A
五、控制台
1.设置场景
(1)Start Vusers 双击-->设置一个小的递增
(2)Duration双击(Action脚本)
六、分析结果
1.报告讲解
(1)Transcation Name 事务名称
(2)最小值、平均值、最大值
(3)Std.Deviation 标准方差值,越小越好,越趋近于0,表示所有用户执行该事务的响应时间越接近,表示系统越稳定
(4)90 Percent 90%响应时间:表示该组中90%的用户在0.XX秒内完成操作
(5)网络带宽充足的情况下,当吞吐量(Throughput)随着点击率(Hits per second)的升高而升高,说明AUT的服务器处理能力充足
2.性能测试分析
(1)如发现某些事务响应时间超长(最普遍)该怎么处理?
①通过分析报告中几个比较重要的图表进行查看,初步定位问题,再通过网页细分图(网页诊断图)去确定响应时间长在系统的哪个部分,大多情况,时间长在服务器端
(响应时间=客户端时间+网络时间+服务器时间)
②如果是应用服务器发生问题,调整服务器配置参数即可
③大多数情况是数据库服务器
(2)Web Page Breakdown网页诊断图
①DNS: 域名解析系统,将服务器的域名和服务器的IP地址对应起来的系统,可以将域名解析为IP地址
②Connection时间:
③First Buffer:第一次缓冲(第一个数据包,可以细分为网络及服务器处理时间+数据库时间,发请求到收到第一个缓冲)
④Receive:获取到所有数据包的接收时间,该时间可以衡量网络质量情况。如果时间较长,一般说明网络不好,如果确定测试环境是内网,网络不是问题,则可能是客户端,也可能是服务器的问题