Day6
一、练习
1、参数化的三种策略是什么?第一个策略指的是什么?
答:取值方式、更新方式、越界后处理方式——用户注册脚本,使用控制台,则参数池的策略为:Unique+ Each Iteration+Abort Vuser(U+E+A)
第一个策略指的是选择下一行参数的方式
2、LR中参数化的取值方式分为哪几种?
答:按照顺序(suquential)、Unique(唯一的) 、Random(随机的) 、Same line as XXX:2个参数如果取值需要保持一致,则设置好其中一个后,另外的一个参数的取值方式可以选择Same line as XXX
3、根据你的理解,尝试写出在线综合场景测试的要点
答:1)多个脚本(三个以上)
2)每个脚本的Think time移到事务之外
3)控制台的设置:
A、虚拟用户数
B、虚拟用户的部署(加载、持续时间设置)
C、所有脚本的runtime settings
D、WindowsResources(资源监控)
4、性能测试过程中何时需要监控资源,何时不需要监控资源?
答:性能测试过程中都需要监控资源,各种类型性能测试都需要监控服务器(如果有多台服务器,则每台都需要监控),比如基准测试、并发测试、(在线)综合场景测试(如果没有特殊说明,则一般为在线)、疲劳强度测试。
做测试备用数据(注册脚本,注册出30个用户,为后面的测试做准备)或者背景数据(数据库中的容量数据,比如某大型系统,背景数据是2千万)时,则不需要监控被测系统。因为是准备阶段,还没有开始测试。
5、注意:
1)录制脚本过程中,要稍微放慢速度,待当前页面资源下载完毕后再进行下一步,否则脚本录制不完全,回放或者增强脚本时会失败,而且很难修复,修复的方法——重新录制。
2)web_add_cookie:脚本中的该句代码往往和本机的浏览器设置有关,如果脚本中出现该类代码,尽量不要删除,因为某些大型软件(尤其是银行系统)
会将有用的信息写入cookie中。
二、本章总结
1、手动设置场景(必会)
2、多机联合测试(必须掌握)
3、面向目标的场景类型(可以不会,了解)
三、控制台设置
1、当控制台中虚拟用户数为百分比时,可以通过new新场景中的设置(百分比对勾取消)修改
2、企业中,一般的并发测试为几百居多
3、Duration:如果Duration设置为30分钟,则当30分钟到达时,所有的VUs运行完当前的action,然后再退出。Duration中包含的是完整的action。
4、正常的在线综合场景,测试结束后不应该报错,但是如果在线综合场景报错,是不是测试工程师的错?
1)如果报错的位置在脚本的登录过程中,即500用户在线只有490个用户登录成功,则该性能测试工程师执行的综合场景不规范,则没有达到500用户在线。
2)如果所有的虚拟用户全部登录成功,在Duration阶段报错数很少,没有达到场景总事务的5%(依不同单位不同项目而定),则视为场景成功。
3)如果所有的虚拟用户全部登录成功,大量报错, 超过场景总事务数的5%,则场景不通过(不是性能测试工程师的责任)。
5、在线综合场景测试如果有性能需求,则按照需求指标设置运行时间(Duration),如果没有具体需求,则按照常规(经验)设置为1个小时或(50分钟)。
四、注意
1、控制台中跑完后查看走势图时,不光看线型的走势,还要看纵轴的单位,结合纵轴单位,就可以知道该图示曲线是否平稳。
2、在带宽充足的情况下,完美的吞吐量应该随着点击率的升高而升高。如果点击率的增加,而吞吐量持平或者降低,则说明当前的AUT处理能力不充足,当前AUT有可能会遇到响应时间增长甚至报错的情况。
3、在做性能测试之前,要将AUT的数据库备份。
4、运行完成后左侧Available Graph中的图:黑色表示没有监控(没有数据),蓝色表示有数据。
五、初始监控资源(笔试:写出你常用的5个资源)
1、如果把CPU比较画家,则画家面前的桌子就是内存,如果内存中找不到想要取得东西,则需要跑到地下室去取,该处的地下室就相当于磁盘
2、内存的运行速度可以是磁盘的成千上万倍,所以我们要尽可能的减少磁盘的I/O,这也是性能测试调优的一个重要的原则。
3、磁盘的读写可以减少,但不能为0
4、处理器队列:等待处理的线程(或者进程)。比如:一个理发店3个理发师,来了6个顾客,则3个人要排队,则当前的队列就是3。
六、按组设置综合场景
1、要求:在原来场景的基础上增加注册脚本(regis)(1个用户,迭代10次),其中注册脚本先执行,执行完毕后,其余的脚本再执行30分钟,请设置。
Schedule by:Group
1)首先设置regis(选中它)的Group Schedule(还需要将它的迭代次数设置为10),设置结果如下图:
2) 其次分别scan、search、buy的GroupSchedule(它们三个设置相同),设置结果如下图:
注意:按组设置综合场景,一定要随时观察VU预览图:
七、多机联合测试(联机测试)
1、联机测试时,对方机器需要准备:
1)安装了Load Generator
2)开启Loadrunner AgentProcessor
2、LR的四大组件中的Load Generator不仅可以安装在Windows机器上,还可以安装在Linux机器上,但是其余的三大组件只能安装在Windows系统上。
3、LR安装在Windows机器上,是不是只能测试Windows的AUT?
——不是,被测系统的平台和测试机器的平台无关,例如:百度的程序搭建在Linux环境,但是依然可以测试。
4、练习:
联机测试要求:
1) 订票2张,使用自己的和同桌的压力生成器(各1个VU)(我没办法实现,只有一台机器)
2) 2张票都要订在自己的网站上(LR自带的tours)。
步骤:
1) 确认联网(使用ping命令可以ping通)
2) 确认2台机器联机成功(对方开启Load Generator agent)
3) 脚本中URL地址中所有的127.0.0.1修改成本机(控制台机器)的物理IP(假设是198.16.11.209),刷新脚本到控制台(172.1.1.98是联合的另外一台机器的地址)
4) 上步原因:如果脚本中URL地址为127.0.0.1,则不同的压力生成器执行时都是向压力生成器的本机发送请求,所以会订票到2台机器。第2个代码中的URL修改成控制台所在的机器的IP,则订票的请求都指向同一机器(控制台机器)
我的脚本这里运行不成功,因为没有能联合的机器
5、企业中做联机测试需要修改代码吗?
答:不需要。因为企业中服务器一般情况下不是自己的客户机,所以脚本中网站的URL地址是确定的服务器的IP地址,而不是127.0.0.1.
八、脚本参数化
1、参数池策略:
1)作业一、
使用脚本empty,写出如下输出结果(单脚本循环10次),不打开控制台(一个参数name,取值a1 a2 a3、、、、a30):
A、顺序+每次迭代:a1, a2, a3、、、 a10
B、唯一+每次迭代:a1, a2, a3、、、 a10
C、随机+每次迭代:a1, a5, a10、、、a20
D、顺序+每次遇到:a1, a2, a3、、、、a10
E、唯一+每次遇到:a1, a2, a3、、、、a10
F、随机+每次遇到:a1, a3, a10、、、a21
G、顺序+一次:a1, a1,a1, a1, a1、、、、
H、唯一+一次:a1, a1, a1, a1, a1、、、、
I、随机+一次:ax,ax, ax, ax, ax、、、、
2、参数池策略:
1)取值(下一行)方式:
A、顺序
B、随机
C、唯一
D、跟XX取一样的行
2)更新方式:
A、每次迭代:当脚本在每次循环时更新参数(去取值)
B、每次遇到:当脚本执行过程中遇到该参数(比如name参数)即更新这个参数(实际场景很少可以用到)
举例:如果脚本的action中password参数出现2次,则脚本循环一次会遇到该参数2次;循环n次,遇到该参数2n次,即更新2n次。
C、一次(once):脚本执行过程中,只取值一次(不更新值)。
2)越界的处理方式(只有取值方式为唯一时才会出现此选项):
A、放弃虚拟用户
B、使用最后一个值继续
C、使用循环的方式继续
三、作业2
1)在线综合场景继续练习
2)如果1)已经没有问题,练习按照组设计综合场景
3)得出报告结果,并上传