LoadRunner性能测试学习笔记Word下载.docx
《LoadRunner性能测试学习笔记Word下载.docx》由会员分享,可在线阅读,更多相关《LoadRunner性能测试学习笔记Word下载.docx(29页珍藏版)》请在冰点文库上搜索。
目的是发现在什么条件下系统的性能变得不可接受,发现应用程序性能下降的拐点;
StressTesting(使劲折腾)
举例:
一座大桥,桥上写最大载重量的车辆,不超过60吨
但是在桥梁内部建筑资料,最大载重量,不超过70吨
12、吞吐量和点击率的概念、区别?
1)吞吐量(Throughput):
用户从服务器端获得全部数据量,单位是字节(Byte)。
吞吐量/传输时间,就是吞吐率,是服务器每秒处理的数据量。
2)点击率(HitsperSecond):
客户端每秒向服务器提交Http请求数。
(鼠标的一次点击,请求数可能为n个)
说明:
吞吐量是总量,是累计时间内全部数据量。
吞吐率反映服务器的处理速度和性能,也是衡量网络性能的重要指标。
点击率越大,对服务器的压力也越大.
13、并发测试和在线测试的区别?
1)并发和在线的区别:
并发的压力是一种瞬时压力,在线的压力是一段时间的压力。
2)20用户并发的压力相当于200用户在线的压力。
(1:
10比例)
在写测试计划时作为参考依据。
2000用户在线,设计为200用户并发。
(并发操作:
查询、登录、删除、添加)
14、QTP和LoadRunner的区别:
1)QTP:
功能测试工具(自动化)
LR:
性能测试工具可以测多用户
2)QTP关心的是界面(UI),关心的是对象(对象库的概念);
LR只关心客户端和服务器之间的数据包(请求包、应答包),不关心对象,更不需要比对对象的属性值,只关心抓包(捕捉数据包)。
如果用户界面变了,但是业务逻辑不变:
QTP脚本需要变化,LR脚本不需改变。
3)LR关心的是客户端和服务器之间的对话,前提是选择正确的网络协议(相当于网络的语言).
4)LR不能补录.录制失败,从头再来。
注意:
录制过程中出现失误,该次录制作废,从New开始重新录制;
录制时要慢,等待页面资源下载完毕后再进行下一步操作.
二、性能测试的策略
重要的:
基准测试、并发测试、综合场景测试(前3个项目必备)
极限测试、递增测试
次要的:
疲劳强度测试(大型系统中)、内存泄露测试、
数据容量测试.
共同点:
向被测系统发起攻击
1、基准测试:
就是单用户测试(重点)
注意:
还是需要使用控制台,运行场景,自动搜集数据,通过Analysis进行结果分析。
2、递增测试:
每隔一定的时间(1s,5s,10s)逐步加载虚拟用户,逐步加压。
用途:
登录测试时,可以递增测试
3、并发测试:
多用户并发执行某一操作(同一时刻,LR精确到毫秒级别)。
并发测试是一种严格的测试,主要考察系统对瞬时较大压力的承受能力.
4、综合场景测试:
概念:
号称“能够最真实的模拟实际生产环境”。
综合场景的几个要素:
多用户、多个脚本(至少3个)、在线执行一段时间(1个小时、50分钟等)
一般不需要设置并发点。
多用户一起运行,一定会有并发.
比如:
100用户在线综合场景:
100用户共同对被测系统执行操作,其中30用户执行浏览首页操作,50用户执行查询订单操作,20用户执行提交订单操作。
(要真实模拟人数比例)
问题:
为什么不模拟大量的登录操作?
因为用户不可能一直在登录,模拟真实情况.
以上操作,用户在循环执行.
5、响应时间:
业内一般有“358原则”,系统响应时间在3秒以内,则用户能够接受;
响应时间在5秒以内,用户能够忍受;
响应时间超过8秒,用户不能忍受。
一般需求指标,不超过3秒
6、疲劳强度测试:
在一定的强度(压力)下,对系统进行长时间的性能测试,一般为7*24小时、或24小时、12小时等。
比如:
银行系统,7*24*365全天候不间断运行
考察疲劳强度测试时,要考察其平均响应时间,以及各台服务器的各项资源情况。
集群负载均衡、降低成本
7、内存泄露检查:
通过正常的性能测试,如果被测系统的内存曲线走势不正常,则关注其相应的各项重要的内存指标,通过对应走势来确定是否发生内存泄露。
8、数据容量测试:
使用大容量的数据添加到数据库中,观察被测系统是否能够正常运行。
向数据库中添加200G数据量,再进行测试,甚至几个T大数据,一般是T级、P级的数据量
1024Byte=1KB
1024K=1M
1024M=1G
1024G=1T
1024T=1P
9、极限测试:
使用并发测试、在线测试等方法,测试出系统能够承受的极限压力(如最大用户数),或系统能够达到的最大处理能力(如最大吞吐量)。
测试方法可以采用递增测试,比如对系统进行100用户、500用户、1000用户等测试.(也称为:
摸高测试)
三、三大基本测试(基准测试,并发测试和综合场景测试)的具体方法及配置
1、归纳基准测试:
方法1:
单用户循环5次
1)调试好脚本(加检查点,在VuGen中运行成功)
2)打开控制台,设置Run—timeSettings
3)迭代次数:
5
4)Pacing值:
随机2~3(每次迭代之间的时间间隔)
5)Thinktime:
忽略(请求之间的时间间隔)
忽略的原因:
单用户对系统压力较小,忽略与否对结果影响不大。
方法2:
单用户持续运行1分钟
3)Pacing值:
随机2~3
4)Thinktime:
忽略
5)Duration:
1分钟
提示:
配置好后,观察图表状态,有所变动,才修改成功.
当Run—timeSettings中迭代和VU部署设置(Duration)有冲突时,Duration的优先级较高.
Duration选择第二项,就以此为准
Runfor__daysand__(HH:
MM:
SS)
如果选择第一项:
Rununtilcompletion还是听Duration,只是它放权了。
Duration是一把手,让二把手看着办,此时Run-timeSettings说的算.
测试报告中的结果,应该测试三次,取中间值.
0。
1秒0.3秒0。
4秒结果取0.3秒
2、并发测试
a、并发测试两个条件
1)脚本中要有集合点(并发点)
2)控制台中要设置并发策略(选择第一项,所有虚拟用户到达集合点后释放)
集合点:
5个线程,代表5个VU并发执行一次购票
等所有线程到达集合点时,才一起释放,此时的压力最大(瞬时压力)。
注意:
要在事务开始之前,设置并发点
b、并发点只有在并发测试中使用。
案例:
在脚本中添加并发点,执行并发测试
需求:
并发购票
在事务脚本之前添加
lr_start_transction(”buy"
);
在事务开始之前——〉点击Insert-->
Rendezvous
--〉输入集合点名称RendezvousName:
buy一般与事务名相同
就会生成脚本:
lr_rendezvous("
buy”);
-—>
编译Compile(同时会立即保存)
脚本中发生变动(加了检查点、集合点、代码等)
1)一定要点击编译Compile按钮,同时也会自动保存
2)在控制台中要刷新脚本
c、并发策略的设置:
并发策略是在控制台配置:
控制台界面选择Scenario菜单-—〉Randezvours。
..(并发点)
-—>
打开窗口,设置策略——>
点击Policy(策略)按钮
第1项:
Releasewhen100%ofallVusersarriveattherendezvous.(一般都选择此项)
当100%虚拟用户到了集合点时释放虚拟用户VU
(所有VU的n%)10个VU都算10*n%
第2项:
Releasewhen100%ofallrunningVusersarriveattherendezvous。
当100%正在运行的VU到达集合点时释放VU
(所有正在运行的VU的n%)
如果10个VU只有5个正在运行,5*n%
第3项:
Releasewhen1Vusersarriveattherendezvous.
指定n个虚拟用户达到集合点,再释放
d、并发测试案例:
完成5个VU的并发
控制台->
Basicschedule-〉Quantity改为5
StartVusers:
用户数少,登录时间快,不用改
Duration:
选Rununtilcompletion表示瞬时压力
继续设置Run-timeSettings:
RunLogic:
迭代次数1
Pacing:
改为Assoonasthepreviousiterationends。
Log:
默认
Thinktime:
默认忽略Ignorethinktime(好比:
不停地发请求,不给喘息时间)
e、并发测试要点回顾:
1)事务前设置并发点(lr_rendezvous(”buy"
)
2)控制台中设置并发策略
3)要忽略Thinktime
3、综合场景测试
综合场景测试号称能够最真实的模拟实际生产环境
综合场景的几个要素:
多用户、多个脚本(至少3个)、在线执行(多种操作)一段时间(1小时、50分钟等),一般是不加并发点.
只要是多用户,就存在并发
综合场景测试过程中,所有用户循环执行相应的操作
1)录制好3个脚本:
购买机票buy、查询路线search、浏览航班scan
添加好事务点、检查点;
(无需集合点)
转移事务中的Thinktime脚本至事务之外:
lr_think_time(23);
将脚本载入到控制台中,并设置人数比例:
GroupNameQuantity
buy2
search4
scan4
2)设置场景
Scheduleby:
Scenario:
按场景场景中,多个VU统一配置、行动(选择)
Group:
按组每个组,组内VU统一行动(按组行动)
重点设置左下角GlobalSchedule:
以上三个脚本都选中,一次配置三个(出现黑框)—-〉
a、StartVusers双击-〉设置一个小的递增单选第2项
-—〉100:
00:
01[HH:
MM:
SS]-->
OK
该设置表示:
每隔1秒钟加载一个VU--〉及时观察右边效果图:
锯齿状
b、Duration双击
--〉单选第2项:
Runfor0daysand00:
30:
00(HH:
SS)—->
OK
该设置表示:
确定指定测试运行的时间为30分钟(项目中一般50分钟、1小时)
如果第1项:
Rununtilcompletion直到结束,适合于循环,确定次数;
如果第3项:
Runindefinitely一直跑,直到手动停止
3)Run-timeSettings设置
迭代次数默认1具体次数由持续时间决定
a、pacing:
随机4—6秒或5—9秒
正常:
2-3秒,教学机较慢,设置偏大些,保证不出错
b、日志log:
保留原有选项(出错时发送)
原因:
大量日志也会占用磁盘空间。
c、Thinktime:
随机百分比,适当调大200%—300%
d、Continueonerror:
错误时继续
原因:
长时间执行大量事务,个别出错继续运行,不影响全局。
e、Vuser选择线程方式.节省系统资源
f、网络:
模拟用户的网络,使用最大带宽
g、模拟缓存:
选择不模拟
h、Option选项:
3个120改为600
一般疲劳测试设置600足够了。
4)配置Windowsresources
选择Run视图-—>
右击窗口—->
AddMeasurements。
。
.
——〉MoniteredServerMachines:
选机器点击Add.按钮—-〉
MachineInformation:
Name:
localhost指定监控服务器的IP地址,主机名,目前就是本地主机
Platform:
WINXP
——〉OK
ResourceMeasurementson:
localhost清空里面所有选项
自己完成选项的添加(固定13项)——>
点击Add按钮-—>
选择以下内容:
Memory中有4项:
(内存)
AvailableMBytes--〉Add
%CommittedBytesinUse—->
Add
PageFaults/sec-—>
Pages/sec-->
NetworkInterface中有2项:
(网络)
BytesTotal/sec——〉MSTCPLoopbackinter。
.回环——〉Add
本地主机才选回环
Packets/sec—-〉MSTCPLoopbackinter..。
回环—-〉Add
本地主机自己和自己通信,用回环
PhysicalDisk中有4项(2个队列):
(磁盘)见到Total就选
Avg.DiskQueueLength—->
Total-—>
CurrentDiskQueueLength—->
Total—-〉Add
DiskReadBytes/sec——〉Total-—>
DiskWriteBytes/sec—-〉Total-—〉Add
Processor中有2项:
(进程)
%ProcessorTime——>
Total——〉AddTotal表示总和
%UserTime-—>
Total—->
System中有1项:
(系统)
ProcessorQueueLength-—〉Add
--〉OK
以上一共13项windows监控资源,具体说明如下:
运行过程中如果有错误,观察ScenarioStatus中的Errors部分0(点开链接,寻找出错原因)
如果是场景设置问题,需要重新设置场景,重新运行
如果是脚本的问题,需要停止场景并调试脚本,重新运行
四、参数化
1、含义:
同样的业务,出现不同的数据,考虑采用脚本参数化技术
2、步骤:
确定参数化的数据—->
准备数据-—〉提供策略——〉参数化
3、准备数据(目前:
File方式)
1)每个参数使用独立文件(参数池)
2)多个参数共享同一个文件(常用)
Excel工具、Column(序号、列名)、FirstData(从哪开始)
4、参数池的策略(难点)
1)Selectnextrow选择下一行(How?
如何取?
)
a、顺序Sequential:
从第一行开始顺序向下选取
b、唯一Unique:
从第一行开始,唯一向下选取
c、随机Random:
随机取值
d、Samelineasxxx:
取值策略与参数xxx相同(同一行)
2)Updatevalueon更新方式(When?
何时取?
a、每次迭代Eachiteration:
每次迭代时取值。
(Action一次)
b、每次遇到Eachoccurrence:
每次遇到该参数时。
c、取值一次Once:
脚本运行过程中只取值一次。
3)Whenoutofvalues:
选择Unique才有,数据不足时处理情况:
a、放弃虚拟用户AbortVuser
b、以循环的方式继续Continueinacyclicmanner
c、持续最后一个值Continuewithlastvalue
经典需求:
注册脚本,多用户,则参数池策略组合
Unique+Eachiteration+AbortVuser
另外,常用的组合:
SE组合(顺序+每次迭代)
5、综合题(帮助理解参数池的策略)
某参数现有备用数据a1,a2,a3,.。
.a30;
脚本迭代4次;
3个VU;
完成一项结果:
(必须掌握!
1)顺序+每次迭代〈重要>
VU1:
a1a2a3a4顺序每个VU取值序列相同
VU2:
a1a2a3a4每个VU都从第一个开始往下取
VU3:
a1a2a3a4每个VU共迭代4次,取4次值
2)唯一+每次迭代(无特殊说明,块大小为自动分配)〈重要>
a1a2a3a4唯一从第一行依次唯一向下选取
VU2:
a5a6a7a8每个VU都不同
a9a10a11a12每个VU共迭代4次,取4次值
3)随机+每次迭代〈重要>
a18a3a5a17
a20a18a13a22
VU3:
a30a2a28a14
4)顺序+每次遇到
VU1:
a1a2a3a4
顺序:
每个VU都从第一个顺序向下取值Action中参数只出现1次
每次遇到:
每个VU遇到4次
(注意:
使用参数模拟器,会出问题,不能被模拟,因为不确定数据量是否足够)
5)唯一+每次遇到(块大小为6)<
重要>
a7a8a9a10
a13a14a15a16
唯一:
块大小6第一块(a1a2a3a4a5a6)
第二块(a7a8a9a10a11a12)
第三块(a13a14a15a16a17a18)
每次遇到:
每个VU遇到4次,取每块中的前4个
6)随机+每次遇到
a5a8a11a20
a7a5a9a15
a12a17a24a26
每次遇到:
由于参数只出现一次,效果等同于每次迭代
7)顺序+一次〈重要>
a1a1a1a1
顺序:
每个VU取值一样;
一次:
只取第一个值
8)唯一+一次〈重要〉
a2a2a2a2
a3a3a3a3
每个VU从第一开始,唯一向下取值
每个VU取值后,不再换值
9)随机+一次<
重要〉
a5a5a5a5
a16a16a16a16
a18a18a18a18
随机:
每个VU任意取值;
一次:
取值一次,不再换值
10)唯一+每次迭代(块大小为6)注意与2)的区别
唯一:
五、常用函数
1、web_find函数
1)写在相应请求之后
2)Run—timeSettings需要设置:
可用
3)左边界:
RightOf
4)右边界:
LeftOf
5)web_find执行效率低于web_reg_find。
2、lr_output_message是LR的输出函数,经常用于脚本的调试。
3、脚本中快速定位
1)从日志定位到脚本行:
双击日志、根据行号Ctrl+g
2)从脚本行定位到日志中:
右击脚本->
GotoStepinReplaylog
4、检查点函数区别
1)web_find()(LR普通函数)
特点:
从HTML页面中查找指定的文本字符串(比较占资源、效率低、较少使用)
2)web_image_check()
a、alt参数:
当鼠标悬浮在图片上时显示的名字,给用户看的
b、src参数:
图片的路径名及图片名称,给程序员看的
3)web_reg_f