《LoadRunner性能测试应用.docx》由会员分享,可在线阅读,更多相关《LoadRunner性能测试应用.docx(16页珍藏版)》请在三一办公上搜索。
1、LoadRunner性能测试应用LoadRunner是一个强有力的压力测试工具。它的脚本可以录制生成,自动关联;测试场景可以面向指标,多方监控; 测试结果可以用图表显示,并且可以拆分组合。作为专业的性能测试工具,通过模拟成千上万的用户对被测系统进行操作和请求,能够在实验室环境中重现生产环 境中可能出现的业务压力,再通过测试过程中获取的信息和数据来确认和查找软件的性能问题,分析性能瓶颈。2.1 LoadRunner创建测试脚本开发LoadRunner脚本需要经过图2-1所示的几个步骤。在录制脚本时要遵循以下录制原则:1 .提高脚本执行效率所录制的脚本内容要精练,而且是用户的真实操作,不可增加多余
2、或重复性的操作,这样的脚本执行起来更能准确 地模拟用户的真实行为,减少了执行时间,执行结果更准确。2. 录制具有代表性的功能在一个软件中有很多不同的功能,但要录制所有的功能几乎是不可能的,所以要选择常用的、使用频率较高的业务 功能来进行测试。3. 选择具有影响的事务测试人员要对被测功能具有一定的认识和了解,选择一些对于整个测试过程中有影响的事务来测试,否则测试结果 是无意义的。当启动Visual User Generator后会出现选择脚本类型的对话框,在此对话框中,请选择我们常用的脚本类型,也就是Web(HTTP/HTML)协议,这是最为常见的。以下脚本介绍以此类型为例。2.1.1录制普通脚
3、本启动Visual User Generator,在弹出的对话框中选择需要新建的协议脚本,通过VuGen可以采用单协议或多协议 模式,进行脚本的录制。选择单协议还是多协议,根据测试程序的实际需要而定。2.开始录制假设需要测试的是Web应用,选择“Web (HTTP/HTML) ”协议,单击“OK”按钮确定后,进入主窗体,如图2-5所 示。图2-5录制结果的主窗体单击工具栏中“Start Record”按钮,根据录制的对话框,输入要测试程序的地址,开始进行录制。通过Vuser ”菜单来启动录制脚本的命令,如图2-6所示。图2-6选择录制按钮也可以在工具栏中直接单击“Start Recording
4、按钮,但录制之前还要进行相应的设置,如图2-7所示。图2-7录制配置界面(1) 环境设置首先,勾选“Record the application startup,单击OK”后,就会自动启动要测试的程序,还可以选择要把录制的脚 本放到哪一个部分,默认情况下是“Actionl”。然后,单击左下角的“Options ”按钮,进入录制环境设置界面,如图2-8所示。 “Recording标签页:默认情况下选择“HTML-based Script,说明脚本中采用HTML页面的形式,这种方式的Script 脚本容易维护和理解,推荐用这种方式录制。“URL-based Script”说明脚本中的表示采用基于U
5、RL的方式,WAS和ACT 中的录制方式就是这种,这种方式看上去比较乱。其他标签页功能说明如下,如有需要可作相应的设置。 Browser”标签页:浏览器的选择。 Recording Proxy ”标签页:浏览器上的代理设置。图2-8环境设置界面 Advanced标签页:可以设置录制时的思考时间(Think Time)、支持的字符集标准等。 “Correlation标签页:手工设置关联,通过关联可在测试执行过程中保存动态值。使用这些设置可以配置VuGen 在录制过程中执行的自动关联的程度。(2)脚本内容在录制过程中,可以单击“Pause”(暂停录制)按钮,在脚本中插入事务、注释和集合,防止在录制
6、完成后再插入 这些事务找不到具体位置。当业务流程完成后,单击Stop”(停止录制)按钮,会自动生成脚本,退出录制过程,如图 2-6所示。单击“Save”(保存)按钮,起个与实际业务有关系的名字,保存到相应的位置。使用VuGen录制之后生成的每个Vuser脚本都至少包含vuser_init、一个或多个Actions及vuser_end等三部分。在通常情况下,将登录到服务器的活动记录在vuser_init部分中,将客户端活动录制到Actions部分中,并将注销过程录制到vuser_end部分中。因为运行多次迭代的Vuser脚本时,只有脚本的Actions部分重复,而vuser_init和 vuse
7、r_end部分将不重复。脚本图例如图2-9所示。2 Kl J- 1/ i|村心心-,静:待-tl“Y,.:m: is,弗为We卜L_kV土 :y c.A -硕. 5 T-_: .i::、t -r_fcr图2-9脚本图例在录制脚本期间,发出的消息可以通过日志来查看,选择View”Output Window,然后选择“Recording Log”选项卡。可以在“Run time Setting”的“Log”选项卡中设置该日志的详细级别,如图2-10所示。-If?rTilrr*p. itH a1 - rirk怀 t twr . oftic: t图2-10录制日志录制时,VuGen会创建一系列配置、数
8、据和源代码文件。这些文件包含Vuser运行时和设置信息。VuGen会将这 些文件连同脚本一起进行保存。至此,一个完整的Vuser脚本录制完成。多协议脚本的录制与单协议脚本的录制过程基本相同,只是比单协议脚本的录制多一个选项界面,如图2-11所示。在此界面中单击协议,可以进行添加和删除协议的操作。在协议前的复选框中打对号,即为选中,否则删除。图2-11添加协议2.1.2 录制 Web Services 脚本在进行性能测试时,大部分对Web性能测试,选择“Web(HTTP/HTML)”协议即可,但录制完脚本后,回放脚本 过程中有时会发生中断或停止的情况,查看错误时,如果无法找到SOAP文件字样时,
9、就需要考虑更换脚本录制协议了。 通常首先考虑更换Web Services协议,再次录制脚本,问题就相应解决了。在录制Web Services脚本前,首先对Web Services做一个简要的介绍,这样有助于读者或者测试人员能够更好地 利用Web Services协议录制脚本。1 .什么是 Web ServicesWeb Services是一种构建应用程序的普通模型,并能在所有支持Internet通信的操作系统上实施运行。Web Services令基于组件的开发和Web的结合达到最佳,基于组件的对象模型,如:分布式组件对象模型(DistributedComponent Object Model,
10、 DCOM)、远程方法调用(Remote Method Invocation, RMI)、互联网内部对象请求代理协 议(Internet Inter-Orb Protocol, IIOP)都已经发布很长时间,但是它们都依赖于特殊对象模型协议。而Web Services利用SOAP和XML对这些模型在通信方面作了进一步的扩展,以消除特殊对象模型的障碍。进一步地,Web Services还基于HTTP和SOAP协议,使得Web用户通过Web调用的方法使用SOAP和HTTP 来调用远程对象,确保业务数据得以在Web上传输。2. Web Services 结构客户根据WSDL描述文档,会生成一个SOA
11、P请求消息。Web Services都是放在Web服务器(如IIS)后面的, 客户生成的SOAP请求会被嵌入在一个HTTP POST请求中,发送到Web服务器,Web服务器再把这些请求转发给 Web Services请求处理器。请求处理器的作用在于,解析收到的SOAP请求,调用Web Services,然后再生成相应的 SOAP应答。Web服务器得到SOAP应答后,会再通过HTTP应答的方式把信息送回到客户端。3. Web Services 体系Web Services体系主要包括以下几个方面:(1) Web Services 包括 3 种组件。服务提供者:提供服务,进行注册以使服务可用;服务
12、代理者:服务交换所,服务提供者和服务请求者之间的媒体;服务请求者:向服务代理请求服务,调用这些服务创建应用程序。(2) Web Services 提供 3 种操作。发布/不发布(Publish/Unpublish):服务提供者向服务代理者发布(注册)服务或不发布(移去)这些服务的注册;发现(Find):由服务请求者向服务代理者执行发现操作,服务请求者描述要找的服务,服务代理者分发匹配的结 果;绑定(Bind):在服务请求者和服务提供者之间绑定,这两部分协商以使请求者可以访问和调用提供者的服务。(3) UDDI 规范统一描述、发现和集成(Universal Description Discove
13、ry and Integration, UDDI)是一个 Web Services 的信息注 册规范,基于UDDI的Web Services注册可以被发现。UDDI的核心部分是UDDI业务登记逻辑,即在Web上有一种 分布的注册服务,这种服务以一种通用的XML格式进行描述。通过XML中的结构化描述,可以很方便地在互联网上发 现需要的数据,进而方便进行分析和操作。从概念上看,一个UDDI业务登记逻辑所提供的信息包括三个部分:“白页” 包括地址、协议和已有标识;“黄页”包括基于分类标准的工业类型;“绿页”是关于企业所包含的服务技术信息,包括网络 服务说明参考和根据发现机制对各种文件和网址提供的标识
14、支持。(4)网络服务描述语言(WSDL)网络服务描述语言(Web Services Description Language, WSDL)遵循XML语法,为服务提供者提供了描述构建 在不同协议或编码方式之上的Web Services请求基本格式的方法。WSDL用来描述一个Web Services能做什么,它 的位置在哪里,如何调用它等。在假定以SOAP/HTTP/MIME作为远程对象调用机制的情况下,WSDL会发挥最大作用。 UDDI注册描述了 Web Services绝大多数方面,包括服务的绑定细节。WSDL可以看作是UDDI服务描述的子集。WSDL将服务定义为一个网络端点的集合,或者说端口
15、的集合。在WSDL里面,端点及消息的抽象定义与它们具 体的网络实现和数据格式绑定是分离的。这样就可以重用这些抽象定义:消息(需要交换的数据的抽象描述)和端口类 型(操作的抽象集合)。针对一个特定端口类型的具体协议和数据格式规范构成一个可重用的绑定。一个端口定义成网 络地址和可重用的绑定的连接,端口的集合定义为服务。因此,一个WSDL文档在定义Web Services时使用如下的元 素:类型一一使用某种类型系统定义数据类型的容器;消息通信数据抽象的有类型的定义;操作服务支持动作的抽象描述;端口类型一一操作的抽象集合,该操作由一个或多个端点支持;绑定一一针对一个特定端口类型的具体协议规范和数据格式
16、规范;端口一一单一的端点,定义成一个绑定和一个网络地址的链接;服务相关端点的集合。不难看出,WSDL给客户提供了一个模板,方便客户描述和绑定服务。上面简单介绍了 Web Services基本的知识,下面采用Web Services单协议进行简要的脚本录制,读者可结合录制 脚本的过程进一步了解它,具体步骤如下:选择“开始”“程序“LoadRunnerVirtual User Generator(Vuser 生成器),启动 VuGen。在 VuGen 的“File”下 拉菜单中选择“New”,新建一个脚本;从“Category”(类别)列表中选择“Web Services协议,单击“OK”按钮开始
17、录制 Vuser脚本。首先配置Web Services录制向导,配置程序录制的方式。“Record Client Application方式是通过客户端进行录制 的,“Scan WSDL file方式需要录入WSDL文件才可录制,在这里选择Record Client Application行录制,如图2-12 所示。“Specify WSDL files for recording向导用于配置 WDSL 文件,由于选择“Record Client Application的录制方式,所以在此选择“Do not use WSDL file during recording,表示不利用WSDL文件进
18、行录制,如图2-13所示。图 2-12 Web Services 录制界面 1 图 2-13 Web Services 录制界面 2“Specify application to record”向导用于配置程序的访问地址、浏览器和录制脚本中的一些初始化设置。在URL中 添加测试程序的访问地址;如果程序需要其他的浏览器,选择“Record any application进行其他浏览器的设置,这里不 需要特殊的浏览器,所以不选择此项Record into action ”选项用于指定把录制的脚本放到哪一个部分,一般初始化放 在vuser_init中,循环部分在Action中,结束退出部分放在vus
19、er_end中,如图2-14所示。如有需要请单击后面的 “Advanced Details ”按钮,可以详细地配置“Options Recording用来录制脚本,这里不介绍Options Recording,在以后 的章节中有详细的介绍。单击“完成”按钮即可完成Web Services的向导配置。然后VuGen将根据程序的访问地址自动启动应用程序,并显示Recording.”(录制)工具栏,开始脚本的录制, 如图2-15所示。pri i K rjiirfi m rfirrfiiYl I! a J. iuf r 史一H *1 mi邛 出蛇产 +t:t午I图 2-14 Web Services
20、录制界面 3图 2-15 Recording.”工具栏在整个操作过程完成后,单击“停止”按钮,脚本录制结束,LoadRunner自动把录制的内容保存在脚本中。在录制 完毕的脚本中会出现一些函数,在后面章节中会详细介绍这些函数的使用方法。一个生成的Web Services的脚本节选如图2-16所示。#衰EX也mW J.I.-r WFIFteV r!f-4Tl!.|E.:r! x i|_irjHwiKi WV图2-16 Web Services脚本图例这样就完成了 Web Services单协议脚本的录制过程。2.1.3回放脚本及调试录制完脚本后,需要单机运行一下脚本,因为在录制脚本的过程中可能会
21、出现错误。例如:有些连接、图片或界面 无法找到,需要调试;有些地方需要参数化,只有唯一值才能执行通过;还有可能回放脚本时出现404、-500等错误页 面,发生超时等现象。这时就需要把这些问题解决掉。单击工具栏中的“Compile”按钮,查看脚本中是否有语法或者乱码错误,如果出现错误需要手工及时调试,如果没有 错误,在执行日志中显示“No error detected消息提示。然后,单击工具栏中的“Run ”按钮,开始执行脚本,在执行脚本期间,同样可以通过日志来查看发出的一些消息。选择“View”Output Window,再选择Execution Log选项卡。如果有错误,VuGen将会提示错
22、误。双击错误提示,VuGen能够定位到出现错误的那一行,如图2-17所示。见tn it h :inarchedI &二湖咨中支-BCiFTEJil.Iue=-i - 0O1IBJ,,十1 . EW皿示宙好琨,.洒协1 ns/stv le/heru.csa. farephttp: /192.16S. 1.75:S0BD/eEfMBcurllane.do.i rftactiii re/st 打白电洲做 Is. fei t rt r =fi1 tk: 71:EG_ 1G:;. 1.75; 8080.erl nssecur i g 噬 Io2ne ./fn/apphi ne/stylfanB.ca .
23、 efentrhttp! /71SC- IBS-1.75 :SOSO/ezFA-isKur i tv/ife lc.3K_.i5 ./fn/apphi It-hsneI.L TMEnerhttp:/ISfi-168-1-75-削瓯*1 WseoLiiIcaM-da./fn/spphi ne/tty Ian. 1 -TW:E:rEr=http:/192-168_ 1 .?! SOSOiezi wsecur itwfc I匚./fn/apphi ne/ i rirjff sb I el _be. sifi reEfener4Tttp:/1Sl2.19S.1.75:顺 0/5 /=i&,/fpp|-
24、ii n*iflagFF1:促,168,1,75:&1职权&/.*小iy.-/fN/BSPPhl re/l rtawarur=htfp: 5 以 1 网. 1.质二:井口也争MH部#nLMikknhasi*:图2-17提示运行脚本错误单机运行测试脚本后,如果编译通过,就会开始运行,运行结果如图2-18所示。Results SummaryT$4=Run LT.WEd! 2DD9-1D-1S - ju.i:4.33Runndcd : 2OO&-1M5 -10加妥1ICnrirtkHI ReiIN1PaWhIIRriuiirttb*=;在每次单击回放脚本后,都会出现如图2-18所示的运行结果页。在结
25、果页中可以清楚地看到脚本运行的情况,显 示整个运行过程中出现成功、失败和警告情况各自的运行时间,并且记录下整个运行开始、结束的日期和时间。图2-18单机运行脚本结果如果整个运行过程成功,在页面的左侧是整个脚本的树型结构,显示出的每个脚本的控件名称前都有绿色对号的标图2-19运行成功时的结果页单击某个控件,在其右边便显示出其控件的页面或相应的运行步骤,如图2-20所示。图2-20显示运行成功步骤在此结果页中还可以检测脚本中控件或者其他错误,如果脚本回放出现错误的话,会在相应控件前出现红色叉号的错误提示,如图2-21所示。A E 1 AW占TT H,电七h-rl34-h L-n-fiB-u w 一
26、言 msJResults SummaryTes:E iB-HialiilLFniicd2mfUkhd1MI心心EFdllezd7Ft HIMEFdlJcd2rolledIQslartedi i 2K1D-15 - 15:46:4BSCathdcs: of revolted evc-nts- sFW-.hrtHH图2-21运行失败的结果页单击其控件后,在右边出现脚本未通过的具体原因,以便查找出错位置进行改正,如图2-22所示。图2-22定位运行失败脚本录制、调试完成后,还可以通过插入事务、集合点等操作来完善、增强脚本。2.1.4完善脚本为什么要完善增强脚本呢?首先,为了衡量服务器的性能,需要定义
27、事务(Transaction)。例如在脚本中有一个数据查询操作,为了衡量服务 器执行查询操作的性能,可以把这个操作定义为一个事务。这样在运行则试脚本时,LoadRunner运行到该事务的开始 点时,就会开始计时,直到运行到该事务的结束点,计时结束。这个事务的运行时间在测试结果中会有反映。LoadRunner 允许在脚本中插入不限数量的事务。在方案执行期间,控制台将测量执行每个事务所用的时间。方案运行后,可使用LoadRunner的图和报告来分析各 个事务的服务器性能。其次,使用集合点是为了衡量在加重负载的情况下服务器的性能情况。在测试计划中,可能会要求系统能够承受多 人同时提交数据,LoadR
28、unner通过在提交数据操作前面加入集合点的方法,检查同时有多少用户运行到集合点,人数 不足时,LoadRunner会命令已经到集合点的用户等待,当在集合点等待的用户达到要求容纳的人数(如1000人)时, LoadRunner向系统提交数据。在脚本中加入集合点后,控制台运行脚本时,可以对集合点进行策略设置,这样就可以根据实际情况在系统上模拟 用户负载了。再次,在录制过程中最好加入注释,因为在录制完脚本后看到的都是脚本代码,操作复杂的业务无法找到相应的位 置进行关联或者参数化的动作,这时,注释就显得尤为重要。最后,LoadRunner提供了很多函数,有些函数是在录制时根据不同的协议自带的函数。其
29、中有些函数是供手工添 加的,这就要根据实际情况进行添加了。例如脚本关联,有些变量无法实现系统自动关联,只能添加函数进行手动关联。在录制完成的脚本中,还可以根据实际情况,添加事务、集合点、注释、函数等内容来增强脚本,进一步完善。下 面逐一进行介绍。1 .插入事务脚本中插入事务既可以在录制过程中直接插入,也可以在脚本录制结束后经编辑插入。建议采用在脚本的录制过程 中插入事务的方法,这样不至于遗漏程序中应插入事务的操作。在需要插入事务的操作前,通过工具栏上的“Start Transaction,开始事务)按钮插入事务,事务的名称最好有意义, 这样在最后分析系统时,有助于发现系统的瓶颈点是否在具体的事
30、务中。具体的操作方法如下:在录制Vuser脚本时,在需要定义事务的操作前面,单击“录制”工具栏上的“Start Transaction 菜单项,将打开“Start Transaction对话框,如图2-23所示。接着出现如图2-24所示的对话框。图2-23插入事务开始点图2-24输入事务开始名称在给事务起名字时,事务名必须以字母或数字开始,可以包含字母、数字或者下列字符:!、$、&、-、A、 _、|或。填写好事务名称后,就可以对系统进行操作,单击OK”接受该事务名称。VuGen将自动在Vuser脚本中插入事务的起始标志(“lr_start_transaction”)和终点标志(“lr_end_
31、transaction”)。起点和终点之间的内容就是录制或者编写的测试事务脚本。在录制脚本过程中,随时可以单击“录制”工具栏上的“End Transaction”菜单项,结束录制,如图2-25所示。口 1.叫 irn I .*噩避觑挡a WX;就 .i r i IpJi.lre.l. :朋中顼菱cu :洲IZ . I 1:ni!Kui LpTi FvmKKhz.MMW. IE:. I. M:海 二 - ZZ - ll -1.75: EOSCl-ixFwaBajriJki-.心1巧函地i超M冲-M二珞 即,5F.:awL.fw-卫fj =./llivivBxrfii Z iMt*/nrul 3?
32、 jrwi.iiiii iU:*rtr=H;lp:/i,li2.1ES:o 1.斥二成就/BfixMoiri L待话卫b*j ./iH/ixchi rw/enMillac+r_l_ui.c|iif- -RiF-trw-MlE-: iZIN. 13.1U-l =./inopiJac.ii-I ,1.75.ECQ/jariBHauri frv/fl|iJJrl-dw/HFPhire/tab曲*匚比*:5知I稀Jrl心血i/Wk/i 日1.知 fIW. :. .iH.W/tdivi&xrTfrlrwiHtfcilac4w locD.xif . Rl 画余I匚七土*F. i前_1.75:蔺露FheIh
33、/兰淄巾卜* !llrl. .,ih/;pvli nj/ *呻*nhl-1iHLfl l:? |d- 一TA-1 =. /Ir.-!i ns.- -mia-bm-i PTI nUwir:3.iHlili-1hj xrre-sti- WshucmL 玉苴仃血也:们腕.很:顶:萸pVfWsifai而m*kc*e.dbL iv t/oY11. 技weVp、3Eqa_ Ecrcr+Afep /ISQ. 1K.1我&FexlWsonuri eRIevc. *-Jlfl =_./(KltaDhiIjc :安.1f:. i. iV E4t.V*Hxlwk|,iMcui iPH =.,/!.小2871 r*w
34、Ji*h七AES *1iFrHr4nMpc/l92-1ttil. ./j-.safipi-!回:. &*i_Ij If*/ - AAuTicdD-_iluM J_Lv_i I : nrtiL_/iz=T*n ra/ wu/bwtj-V -ikrEi-jT 1Mi JU,.iJri L_/iq/aa3i rXt:Bbl2_b|_R:i I . Rafir -”川如辿F ,m X, 沏 JHndOstaij .JPflanLMi JiRrtnSHinp j图2-25插入事务结束点此时会出现如图2-26所示的结束事务的对话框。单击“Transaction Name”下拉框的箭头获得已打开事务的列表,
35、选择要关闭的事务。事务的状态在默认情况下是 LR_AUTO。一般情况下,也不需要修改,除非在手工编写代码时,有可能需要手动设置事务的状态。单击OK”按钮接 受该事务名称。脚本中事务的代码如图2-27所示。图2-26选择要结束事务的名称图2-27插入事务图例当结束事务时,通过工具栏上的“End Transaction按钮,结束事务。在结束列表中会显示最近定义的事务的名称, 只要选择自己新建的事务的名称即可结束该事务。这样就完成了事务的插入操作。2.插入集合点集合点只能在Action中插入,不能在vuser_init或vuser_end中插入。在需要插入集合点的操作前,通过工具栏上的集合点按钮插入
36、集合点,并在集合点的输入框中输入集合点的名称。集合点的名称最好是有意义的名称,这样有助于在系统分析时,分析系统的瓶颈所在。插入集合点具体的操作方法如下:在录制Vuser脚本时,在需要插入集合点的位置,单击“录制”工具栏上的“集合点”按钮或单击“Insert”菜单下的“Rendezvous”子菜单。将打开Rendezvous”(集合点)对话框,如图2-28所示。Url .n=l nJ iIfrhZiEzf r/i+4旧1就-1翎-1.氏如曲心1二GCElQdi tpcF/l比噂,L虞:啷b妃W.r=h6tp:/iaZ. ISJ.芯;?由ML1 ta. 1.75:8HD/ed-A. EJCra.I . Hlnl 二图2-28插入集合点接着,出现如图2-29所示的对话框。输入该集合点的名称,注意,名称最好能够清楚地说明该集合点所完成的动 作。脚本中集合点的代码如图2-30所示。图2-29输入集合点名称图2-30插入集合点图例