四、Loadrunner的运行
双击打开Loadrunner程序(Win7和Vista中需要在图标上右击鼠标选择以管理员身份运行)。
左侧依次为录制编辑脚本文件,运行脚本文件和分析负载结果。我们点击第一项创建和录制脚本进入后点击新建脚本由于是WEB测试所以选择HTTP模式.
点击Create按钮
在这个窗口中主要有录制的类型这里选择网络程序,如果是本地的选择WIN32程序;第二个选择默认值“浏览器”;第三个是输入要录制的URL连接;第四个输入保存脚本的路径;第五个是默认名称,可以点击NEW修改。
设置好路径和要录制的URL后点击OK 后开始录制脚本
注:如果录制脚本中中文显示乱码,则需要对LR进行设置
1、Tools ——Recording Options
在回放脚本之前:Vuser-->运行时设置-->浏览器-->浏览器仿真-->更改-->使用浏览器-->语言下来选择 “中文(中国)”;
2、设置录制脚本的执行的次数
点击Tools——Run-time Setting—General—Run Logic打开设置窗口(注:如果脚本中用户名参数化,如果写入的人员都需要执行,有几个用户写执行几次;编码中如果存在多个参数化字段,将第一个跟其他的参数化字段合并)
注:如果录制脚本中增加了参数化或设置了关联,需要在录制脚本Vuser——Run time Setting 下设置“miscellaneous中选择difine each action as a transaction”(定义任意一个活动为一个事务);如不设置则运行脚本时通过事务数、失败事务数、错误数均显示0
注意:参数化脚本(如流水号、文号)中如果选择Unique Number(唯一值),使用该类型必须注意数据表中有足够的数据。比如在Controller中设定20个虚拟用户进行5次循环,那么编号为1的虚拟用户取前5个数,编号为2的虚拟用户取6-10的数,依次类推,数据表中至少有100个数据,否则Controller 运行中会返回一个错误。例如:Error: Parameter 'num2': All values in unique block already used. Block size is 10. The parameter continues with last value of the range according to "When Out Of Values" policy.
3、运行脚本
Manual Scenario为手工场景(其中“使用百分比模式运行”可以勾选也可以不勾选)
Goal-Oriented Scenario面向目标的场景(注意不要选择该项,该项是验证系统能否达到预期目标,适用场合等有明确的目标,如验收测试)
然后选择一个录制好的脚本如send071802.1点击Add添加进来
添加后可以进行运行的时间设定可以设置初始用户数量,可以设定增加用户的间隔比如每隔10S增加一个用户。达到最大用户数量后持续运行多长时间比如达到10个人同时访问后持续运行10分钟.可以选择单个用户还是以组的形式运行;同时可以设置“服务水平协议”(SLA,设定性能测试的目标,便于确定是否达标)
点击左下角的RUN按钮可以看见正在运行脚本曲线状态图:
4、运行结果
点击左下角的Design按钮可以看见整个脚本运行过程的系统负载图可以直观了解到当前系统的负载情况.
上图左侧的边栏显示的是每一个图表的包含信息如平均响应时间图表中就含有多长时间刷新一次图表,右边是同时显示4个图,通过选项可以显示1,2,4,8个图表;如下图所示.还可以自定义显示“Custom Number”,如显示3个或6个图表.
注:如果需要生成web资源图,则需要下图中的配置
Running Vusers:运行的虚拟用户数
Elapsed Time:运行时间
Hits/Second:平均点击数
Passed Transaction:通过事务数
Failed Transaction:失败事务数
Errors:错误数
左边图片是运行控制栏可以控制脚本的运行,暂停,继续和重置查看每一个事物等操作.右边的图显示的是正在运行脚本的结果可以看到有运行的时间平均的响应时间,有多少运行成功,多少失败还有有多少是有错误。
5、分析结果
测试完毕后系统会给出每一个事物的详细结果。如平均的响应时间,CUP和内存的占有率,系统的负载情况
点击上方的不同标签可以查看不同的结果如图看到的是统计运行的成功和失败图表.
在运行结果界面可以通过点击工具栏的“筛选”按钮来查找想要的内容,比如只想查看运行PASS的实例这时就可以通过筛选来实现.还可以点击工具栏的打印按钮,HTML按钮存成MID和HTML文件以及打印结果.
通过点击工具栏像时钟一样的图表可以得到整个运行周期的负载情况.
点击保存按钮可以把结果保存在电脑上以便以后导入查看.
保存时可能会比较卡请耐心等待.
在左侧目录中单击这几个标签可以查看详细的结果和文件的路径和脚本运行的总时间,以及创建脚本时间等.
通过这几个标签可以大致分析出系统当前存在的瓶颈,如内存太小或网络环境不佳以及网站的负载能力太差等问题都可以通过这几个标签查看.
注:设置用户的并发集合点,在进行性能测试时在集合点策略中设置同时有多少用户同时对服务器发出请求。
集合点的意思时等到特定的用户数后再一起执行某个操作,比如一起保存,一起提交(我们通常意义上的并发数并不是指一起提交或者一起保存),一般情况下使用不到集合点,不过,订票系统或者促销类需要用到,比如说某个促销品的促销时间在8点到8点30,这样的话,就可能出现在8点时很多人一起提交的场景(在线并不等于并发)
五、LR性能分析图解释
Transactions(用户事务分析):
用户事务分析是站在用户角度进行的基础性能分析。
1、Transation Sunmmary(事务综述)
对事务进行综合分析是性能分析的第一步,通过分析测试时间内用户事务的成功与失败情况,可以直接判断出系统是否运行正常。
2、Average Transaciton Response Time(事务平均响应时间)
“事务平均响应时间”显示的是测试场景运行期间的每一秒内事务执行所用的平均时间,通过它可以分析测试场景运行期间应用系统的性能走向。
例:随着测试时间的变化,系统处理事务的速度开始逐渐变慢,这说明应用系统随着投产时间的变化,整体性能将会有下降的趋势。
3、Transactions per Second(每秒通过事务数/TPS)
“每秒通过事务数/TPS”显示在场景运行的每一秒钟,每个事务通过、失败以及停止的数量,使考查系统性能的一个重要参数。通过它可以确定系统在任何给定时刻的时间事务负载。分析TPS主要是看曲线的性能走向。
将它与平均事务响应时间进行对比,可以分析事务数目对执行时间的影响。
例:当压力加大时,点击率/TPS曲线如果变化缓慢或者有平坦的趋势,很有可能是服务器开始出现瓶颈。
4、Total Transactions per Second(每秒通过事务总数)
“每秒通过事务总数”显示在场景运行时,在每一秒内通过的事务总数、失败的事务总署以及停止的事务总数。
5、Transaction Performance Sunmmary(事务性能摘要)
“事务性能摘要”显示方案中所有事务的最小、最大和平均执行时间,可以直接判断响应时间是否符合用户的要求。
重点关注事务的平均和最大执行时间,如果其范围不在用户可以接受的时间范围内,需要进行原因分析。
6、Transaction Response Time Under Load(事务响应时间与负载)
“ 事务响应时间与负载”是“正在运行的虚拟用户”图和“平均响应事务时间”图的组合,通过它可以看出在任一时间点事务响应时间与用户数目的关系,从而掌握系统在用户并发方面的性能数据,为扩展用户系统提供参考。此图可以查看虚拟用户负载对执行时间的总体影响,对分析具有渐变负载的测试场景比较有用。
7、Transaction Response Time(Percentile)(事务响应时间(百分比))
“事务响应时间(百分比)”是根据测试结果进行分析而得到的综合分析图,也就是工具通过一些统计分析方法间接得到的图表。通过它可以分析在给定事务响应时间范围内能执行的事务百分比。
8、Transaction Response Time(Distribution)(事务响应时间(分布))
“事务响应时间(分布)”显示在场景运行过程中,事务执行所用时间的分布,通过它可以了解测试过程中不同响应时间的事务数量。如果系统预先定义了相关事务可以接受的最小和最大事务响应时间,则可以使用此图确定服务器性能是否在可以接受的范围内。
Web Resources(Web资源分析):
Web资源分析是从服务器入手对Web服务器的性能分析。
1、Hits per Second(每秒点击次数)
“每秒点击次数”,即使运行场景过程中虚拟用户每秒向Web服务器提交的HTTP请求数。
通过它可以评估虚拟用户产生的负载量,如将其和“平均事务响应时间”图比较,可以查看点击次数对事务性能产生的影响。通过对查看“每秒点击次数”,可以判断系统是否稳定。系统点击率下降通常表明服务器的响应速度在变慢,需进一步分析,发现系统瓶颈所在。
2、Throughput(吞吐率)
“吞吐率”显示的是场景运行过程中服务器的每秒的吞吐量。其度量单位是字节,表示虚拟用在任何给定的每一秒从服务器获得的数据量。
可以依据服务器的吞吐量来评估虚拟用户产生的负载量,以及看出服务器在流量方面的处理能力以及是否存在瓶颈。
“吞吐率”图和“点击率”图的区别:
“吞吐率”图,是每秒服务器处理的HTTP申请数。
“点击率”图,是客户端每秒从服务器获得的总数据量。
3、HTTP Status Code Summary(HTTP状态代码概要)
“HTTP状态代码概要”显示场景或会话步骤过程中从Web服务器返回的HTTP状态代码数,该图按照代码分组。HTTP状态代码表示HTTP请求的状态。
4、HTTP Responses per Second(每秒HTTP响应数)
“每秒HTTP响应数”是显示运行场景过程中每秒从Web服务器返回的不同HTTP状态代码的数量,还能返回其它各类状态码的信息,通过分析状态码,可以判断服务器在压力下的运行情况,也可以通过对图中显示的结果进行分组,进而定位生成错误的代码脚本。
5、Pages Downloader per Second(每秒下载页面数)
“每秒下载页面数”显示场景或会话步骤运行的每一秒内从服务器下载的网页数。使用此图可依据下载的页数来计算Vuser生成的负载量。
和吞吐量图一样,每秒下载页面数图标是Vuser在给定的任一秒内从服务器接收到的数据量。但是吞吐量考虑的各个资源极其大小(例,每个GIF文件的大小、每个网页的大小)。而每秒下载页面数只考虑页面数。
注:要查看每秒下载页数图,必须在R-T-S那里设置“每秒页面数(仅HTML模式)”。
6、Retries per Second(每秒重试次数)
“每秒重试次数”显示场景或会话步骤运行的每一秒内服务器尝试的连接次数。
在下列情况将重试服务器连接:
A、初始连接未经授权
B、要求代理服务器身份验证
C、服务器关闭了初始连接
D、初始连接无法连接到服务器
E、服务器最初无法解析负载生成器的IP地址
7、Retries Summary(重试次数概要)
“重试次数概要”显示场景或会话步骤运行过程中服务器尝试的连接次数,它按照重试原因分组。将此图与每秒重试次数图一起使用可以确定场景或会话步骤运行过程中服务器在哪个时间点进行了重试。
8、Connections(连接数)
“连接数”显示场景或会话步骤运行过程中每个时间点打开的TCP/IP连接数。
借助此图,可以知道何时需要添加其他连接。
例:当连接数到达稳定状态而事务响应时间迅速增大时,添加连接可以使性能得到极大提高(事务响应时间将降低)。
9、Connections Per Second(每秒连接数)
“每秒连接数”显示方案在运行过程中每秒建立的TCP/IP连接数。
理想情况下,很多HTTP请求都应该使用同一连接,而不是每个请求都新打开一个连接。通过每秒连接数图可以看出服务器的处理情况,就表明服务器的性能在逐渐下降。
10、SSLs Per Second(每秒SSL连接数)
“每秒SSL连接数”显示场景或会话步骤运行的每一秒内打开的新的以及重新使用的SSL连接数。当对安全服务器打开TCP/IP连接后,浏览器将打开SSL连接。
Web Page Breakdown(网页元素细分)
“网页元素细分”主要用来评估页面内容是否影响事务的响应时间,通过它可以深入地分析网站上那些下载很慢的图形或中断的连接等有问题的元素。
1、Web Page Breakdown(页面分解总图)
“页面分解”显示某一具体事务在测试过程的响应情况,进而分析相关的事务运行是否正常。
“页面分解”图可以按下面四种方式进行进一步细分:
1)、Download Time Breaddown(下载时间细分)
“下载时间细分”图显示网页中不同元素的下载时间,同时还可按照下载过程把时间进行分解,用不同的颜色来显示DNS解析时间、建立连接时间、第一次缓冲时间等各自所占比例。
2)、Component Breakdown(Over Time)(组件细分(随时间变化))
“组件细分”图显示选定网页的页面组件随时间变化的细分图。通过该图可以很容易的看出哪些元素在测试过程中下载时间不稳定。该图特别适用于需要在客户端下载控件较多的页面,通过分析控件的响应时间,很容易就能发现那些控件不稳定或者比较耗时。
3)、Download Time Breakdown(Over Time)(下载时间细分(随时间变化))
“下载时间细分(随时间变化)” 图显示选定网页的页面元素下载时间细分(随时间变化)情况,它非常清晰地显示了页面各个元素在压力测试过程中的下载情况。
“下载时间细分”图显示的是整个测试过程页面元素响应的时间统计分析结果,“下载时间细分(随时间变化)”显示的事场景运行过程中每一秒内页面元素响应时间的统计结果,两者分别从宏观和微观角度来分析页面元素的下载时间。
4)、Time to First Buffer Breakdown(Over Time)(第一次缓冲时间细分(随时间变化))
“第一次缓冲时间细分(随时间变化)”图显示成功收到从Web服务器返回的第一次缓冲之前的这段时间,场景或会话步骤运行的每一秒中每个网页组件的服务器时间和网络时间(以秒为单位)。可以使用该图确定场景或会话步骤运行期间服务器或网络出现问题的时间。
5)、First Buffer Time:是指客户端与服务器端建立连接后,从服务器发送第一个数据包开始计时,数据经过网络传送到客户端,到浏览器接收到第一个缓冲所用的时间。
2、Page Component Breakdown(页面组件细分)
“页面组件细分”图显示每个网页及其组件的平均下载时间(以秒为单位)。可以根据下载组件所用的平均秒数对图列进行排序,通过它有助于隔离有问题的组件。
3、Page Component Breakdown(Over Time)(页面组件分解(随时间变化))
“页面组件分解(随时间变化)”图显示在方案运行期间的每一秒内每个网页及其组件的平均响应时间 (以秒为单位)。
4、Page Download Time Breakdown(页面下载时间细分)
“页面下载时间细分”图显示每个页面组件下载时间的细分,可以根据它确定在网页下载期间事务响应时间缓慢是由网络错误引起还是由服务器错误引起。
“页面下载时间细分”图根据DNS解析时间、连接时间、第一次缓冲时间、SSL握手时间、接收时间、FTP验证时间、客户端时间和错误时间来对每个组件的下载过程进行细分。
5、Page Download Time Breakdown(Over Time)(页面下载时间细分(随时间变化))
“页面下载时间细分(随时间变化)”图显示方案运行期间,每一秒内每个页面组件下载时间的细分。使用此图可以确定网络或服务器在方案执行期间哪一时间点发生了问题。
“页面组件细分(随时间变化)”图和“页面下载时间细分(随时间变化)”图通常结合起来进行分析:首先确定有问题的组件
分析结果中无WINDOWS监控信息
一:在Scenario中鼠标右键点击Windows Resource图(在Run栏中),选择Add Measurement,然后添加你要监控的服务器的IP或名称,最后运行Scenario
二:Scenario运行完成后,在Analysis的菜单栏中点击Graph,然后点击add new graph,选择windows resource就可以了
参数化:
由于系统文号必须是唯一值,于是尝试loadrunner自动的参数化功能,
例如:
如果start=1,Block size per Vuser=10000时,就相当于给每个用户分配了10000个惟一数字,第一个用户从1开始,第二个用户从10001开始,第三个用户从20001开始,依次加10000;
但是如何设置好start 和Block size per Vuser这也是一门学问,设置不好就会出现数字不够用的情况,刚开始我就在这块走了很多弯路,经过百度发现如果一下个公式供大家参考:
设:块大小设置为:B(block),起始值为:S(start),当前用户为:N(number),当前取值为V(value)
则:V = B*(N-1)+S
LoadRunner参数类型的含义:
Date/Time:运行时,参数用脚本执行时的日期和时间来代替
Group Name:运行时,参数用执行脚本的VU所属组的名称来代替
Iteration Number:运行时,参数用脚本执行的当前迭代次数来代替
Load Generator Name:运行时,参数用产生执行脚本VU的负载产生器(Load Generator)的名称来代替
Random Number:运行时,参数用一个随机的整数来代替
Unique Number:运行时,参数用一个唯一的整数来代替
Vuser ID:运行时,参数用Controller应用为每个VU分配唯一的ID来代替
Data File/Table:最常用的参数类型,二者基本相同,均可以利用数据文件为参数提供数据池,并设置参数依据某种规则从数据池中取出数据代替脚本中的参数
User-Defined Functions:LoadRunner保留的一个扩展接口
Each Iteration,表示在每次迭代时更新参数的值;Each Occurrence,表示在参数每次出现时更新参数的值;Once,表示VU在执行的时候,只在第一次迭代时为参数取一次值,以后每次迭代使用相同的值。其中,对Each Iteration而言,一个VU执行时,每次迭代时更新参数的值,如果在一个迭代过程中某参数出现了多次,参数取相同的值;而对Each Occurrence而言,如果在一个迭代过程中某参数出现了多次,每次都取不同的之。
When out of values选项只在Select next row设置为Unique时才有效,当数据池中的数据量不能支持迭代和Unique要求的数据量时,可以通过设置该选项的值指示LoadRunner的处理方法:设置为Abort VUser,则遇到这种情况,VU停止运行;设置为Continue in a cyclic manner,则遇到这种情况,重新从数据池的第一个取值开始循环;设置为Continue with last value,则遇到这种情况,所有不足的取值都用最后一个取值来代替。
只要将Select next row设置为Sequential,Update value on设置为Each Occurrence即可。
Sequential:虚拟用户 Vuser 按照行顺序的进行读取参数文件中的数据,如果参数文件中没有足够的数据,则返回到第一个值,并一直循环到结束。例:如上图我们这里有 测试1、测试2、测试3 三个数据,假设我们有 5 个Vuser,那么第 1 个 Vuser 读到的参数为 测试1,于此类推,到第 4 个 Vuser 的时候, 这里表中已经没有数据了, 于是又从第一个数据开始读取, 故第4 个 Vuser读到的数据是 测试1,第 5 个 Vuser读到的数据是 测试2。
注:运行脚本时建议关闭360安全卫士,否则可能提示超时。