Loadrunner9.5Flex性能测试_第1页
Loadrunner9.5Flex性能测试_第2页
Loadrunner9.5Flex性能测试_第3页
Loadrunner9.5Flex性能测试_第4页
Loadrunner9.5Flex性能测试_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Loadrunner 9.5 flex 性能测试Loadrunner 9.5 flex性能测试(一)准备工作性能测试是一项浩大的工程,若你只想随便找台机器装上LoadR unner后,造几条数据,弄几个并发用户简单跑一下出来结果就可以万事大吉了,那你就大错特错了!这样得出的测试结果没有任何价值和意义,当然更无法依此评估出你贵公司系统的性能了。性能测试真正开始执行之前除了编写详细的性能测试计划所需的资源(软 件+硬件+人力)、设计测试脚本、准备测试数据、搭建测试环境外,还需要注 意一下细节: 如何保证性能测试的顺利开展和执行?1. 首先考虑你性能测试的目标是什么,需要哪些人员协助你才能完成,然后

2、协调相关人员(DBA网管、开发人员等),保证在真正开展过程中能有 效得到他们的协助和支持(性能测试不是一个人就能完成的,除非你“全才”啦);2. 你计划中需要申请的资源,比如运行con toller的机器,是否符合你的预 期要求,Cpu是否有足够的处理能力,安装的操作系统是否符合你的要求(loadrunner9.5 除load Generator 外都不能安装在64位机操作系统下,若没看清楚安装文件(安装程序下 helpinstall.pdf)中system requireme nts for in stalli ng说明的话,你安装完成会发现自己白忙活了,还得重装os然后重来一次);3. 你

3、要测试的程序是否功能都没问题了, 若程序还有变更,请千万不要在录 制部分后又变更了,你需要的版本是一个功能稳定的版本,能顺利录制脚 本的的版本);4. 在测试执行前你是否召集开发和相关人员对程序中明显需要优化的地方(你功能测试执行时系统有些功能就无法忍受的慢) 进行了优化,这样可 以大大缩短你的性能测试周期;5. 在选择loadrunner工具前,一定要慎重,你的程序设计语言和架构及其 所运用的技术,此工具是否都支持,不然后续你需要自行开发的脚本就太 多了,可能面临重新选择测试工具的严重问题);6. 分险分析:技术风险、风险分析、分险应对措施和风险监控方法。设计测试脚本?1. 识别可能的系统性

4、能问题,多与相关人员分析讨论。2. 你所测系统的重点业务是什么?都有哪些角色参与?业务逻辑是什么样 的?用户频繁使用的功能是否都考虑周全了?3. 参数化数据的来源?都需要哪些检查点?脚本的精简程度?准备测试数据?1. 基础数据:要更符合实际需求,人员、角色、初始化数据等;2. 业务数据;要更符合实际业务,数据最好不要相同的数据,无效的数据, 要类别丰富、覆盖所有业务逻辑的基础数据;可以通过自动化工具直接生 成;数据库脚本生成(单一数据,关联几个表的数据最好不用脚本生成); 用Id生成。搭建测试环境?1. 网络(带宽、可使用的有效ip地址个数);2. 服务器的配置;3. 当前测试环境的局限性(无

5、法模拟的测试环境都有哪些) 需求分析和需求转化客户的性能需求不可测试、没有需求、需求模糊,要通过与客户、开发人员的沟 通获得可测试、可衡量和可量化的性能需求1.8/2原则2. 经验值3. 平均并发用户数C= nL/T (n:用户数量login session 的数量,L:用 户平均使用时长login session 的时长,T:考察的时间段)4. 并发用户峰值:C1= C+ 3VCeg1 :见图 example1、-I I b ': J- .20 r .141 ; fl上;I di廿啊1D0Ij7- HJP15 的收徐 血屮h; i"务1小1收為;以- 1'70 hj

6、. -.1 lJ'(. -ijr m交琳谄剧的业养ttw中毎酱业齐需/ H: ! - i- j 15, J ;1'丁 J翼陆蔺個為试需掩現"业务M的两倍皿耐.押卜0曲山;址为(100115 :.x7+TDOx7O *5+1 OQk15%x3)x2-10OO h讪 j: 100160»6.25 u J '即叫i'.匸铠対:W25WX8O将科8曲啊 x3600)->B.6B JP-汕LVQ r "JiLoadrunner 9.52flex性能测试(二)程序安装和配置1、 从hp官方网站上下载loadrunner9.5 的试用版程序

7、(有 windows和linux 的版本);2、 按照步骤进行安装(安装之前先安装必须的.net框架和其他组件);3、安装文件的目录及文件存放路径一定不能含有中文,防止错误;另外最好不要选择根目录下,要新建一个文件夹,命名,然后安装其下,安装完成后,重启。4、从 下载 LoadRunner9.51 patch安装 LoadRunner_951.msp文件然后 下载 LoadRunner 9.52 patch 安装 LoadRunner_952.exe 文件Ld9.50对flex的支持有以下问题:无法解析flex内部的对象;在一台机器上录制的脚本无法在另一台机器上正确运行;报错如:java .i

8、o.IOException: file c:jarssyswincrm3.jar is not foundat hp.flex.ClassLoaderMa nipulator.loadClassPathStri ng(Class LoaderMa ni pulator.java:58)(这是在调试 日志中显示的/HP_FLEX_JAVA_LOG_FILE下面是在界面中 的Replay log中显示的)Error: En cod ing of AMF message failed. Error is : Excepti on Oc curred while invoking WriteObjec

9、t method - java .Ian g.ClassNotF oun dExcepti on: flex.messag in g.io.amf.Amf3Outputat java. net.URLCIassLoader$1.ru n( URLCIassLoader.java:200)at java.security.AccessC on troller.doPrivileged(Native Method)at java. net.URLClassLoader.fi ndClass(URLCIassLoader.java:188)at java .Ian g.ClassLoader.loa

10、dClass(ClassLoader.java:306)at sun. misc.La un cher$AppCIassLoadero adCIass(La un cher.java: 268)at java .Ian g.ClassLoader.loadClass(ClassLoader.java:251)at java.la ng.ClassLoader.loadClassl ntern aI(CIassLoader.java:319)at java.la ng.Class.forName0(Native Method)at java.la ng.CIass.forName(CIass.j

11、ava:164)at hp.flex.HPExternalizableWrapper.GetLCDSObjectOutputStream(HPExtern alizableWrapper.java:155)at hp.fIex.HPExternaIizabIeWrapper.GetObjectOutputStream(HPExternaIiz abIeWrapper.java:215)at hp.flex.HPExter nalizableWrapper.WriteObject(HPExter nalizableWrappe r.java:23)在Con troller 中添加其他ip地址(已

12、经安装了 age nt process ) Load Generators,运行报错;Results Analysis中的 Set Global Filter中没有 thinktime 选项,这样就不能查看不包含thinktime的事务响应时间了;其他问题可在安装后的readme.htm中查看升级到Ld9.52后则解决了此问题,这两个补丁所解决的问题可以在下载的压缩包中解压的readme.htm文件中查看。5、然后用传统的破解方法进行破解即可。google,破解方法如下(仅供学习研究人员参考,请大家支持正版软件!):用 LR8.0 中的 mlr5lprg.dll 、lm70.dll 覆盖 LR

13、9.5 安装目录下“ bin ”文 件夹中的对应文件;手动修改注册表,删除下面内容:HKEY_LOCAL_MACHINESOFTWAREMercury In teractive'LoadRu nn erLice nse2HKEY_LOCAL_MACHINESOFTWAREMercuryI nteractive'LoadRu nn erLice ns e2History"AIBGEBFW-JVED-ZKEKEKEKEKEBDNQAF-KBRDN"="" HKEY_LOCAL _MACHINESOFTWAREMercuryI nteracti

14、ve'LoadRu nn erLice nse2Perma nen tLice nse ="AIBGEBFW-JVED-ZKEKEKEKEKEBDNQAF-KBRDN" "last"="AIBGEBFW-JVED-ZKEKEKEKEKEBDNQAF-KBRDN" HKEY_LOCAL_MACHINESOFTWAREMercuryI nteractive'LoadRu nn erLice nse2TemporaryLice nse="AEBGEBFS-AKEKEKEKE-KAUCA" HKEY_LOC

15、AL_MACHINESOFTWAREC lassesI nterface87B3ADD4-21EB-11d5-93EF-00105AA0FD2D ="ICo ntr ol"/当然也可以直接执行删除注册的文件lr_Del_license(regedit).exe。然后使用老的注册码就可以使用了;global-100: AEAMAUIK-YAFEKEKJJKEEA-BCJGIweb-10000: AEABEXFR-YTIEKEKJJMFKEKEKWBRAUNQJU-KBYGBor( Ok1000 个用户的 Global License : AEACFSJI-YASEKJJKEA

16、HJD-BCLBR)6安装后的配置:在用户环境变量中增加HP_FLEX_JAVA_LOG_FI的debug参数;value为:目录日志文件名称。Eg: C:ldlogflex.log在录制脚本的 Vugen 中的 Toole >Recording Options->Flex ->Externa lizable Objects 下添加Lib文件,这样就可以正常解析 测试系统中的 定义的类和对象了,并且使得脚本中的文件结构更加清晰。添加的文件:flex-messagi ng-commo n.jarflex-messagi ng-core.jar其他与flex和spring相关的文

17、件;测试系统自定义的jar包,如:syswincrm31.jar这样就可以正常解析flex协议下所有请求数据了,并且可以使得录制的文件的结构更加清晰,方便参数化。Loadrunner 9.52 flex性能测试(三)脚本录制和回放1、录制时无法弹出IE , google 一下,解决办法如下:主要是LR的注册信息被修改,无法找到IE路径。如何重新注册LR呢?在lr的安装目录(例如D:Program FilesMercuryLoadRunnerbin )下,单击 register_vugen.bat 文件,注册信息被重新 改写了。不过别忘了最后一步。重新启动一下,好了;有多个浏览器时,将IE置为默

18、认浏览器;由于IE的第三方插件的影响,IE工具-Internet选项- 高级,把 启用第三方浏览器扩展”的选中去掉即可;对于 Windows 2003 上无法录制 IE6/7,导致 IE Crash,iedw.exe(IE Crash Detection)报告错误事件, 可能原因是Windows Server默认对IE加载DEP数据执行保护)特性,而Vugen.exe刚好又跟DEP冲突。方法:我的电脑 右键属性-高级- 性能”部分的 设置”数据执行保护”点击 添加” 按钮-将LR安装目录bin下的vugen.exe添加进去-点击确定,重启一下LR,就可以录制了。2、录制不到脚本选择的协议不对,

19、有时需要选择多个协议,这个需与开发、系统架构师沟通; 没有选择jar包;检查防火墙个杀毒软件,关闭所有的网络监测;早期的版本(Ld8.0以前的版本)不能很好的支持IE6以上的版本,换成IE6即可;Flex需要客户端下安装flash,并且IE选项的安全设置中设置可以访问所有active控件;3、录制的脚本回放错误选择的协议不对(应选择多个协议或其他协议);没有选择jar包,无法解析数据;自动关联错误;动态数据没有做关联;Flex协议录制的脚本没有办法产生自动关联时,需要下面的Ld中自带的函数进行自定义:选择另一台机器上录制的ld9.50版本的脚本,原来选择的 http/flex两个协议的脚本,回

20、放报错Replay log 女口下:Error: Encoding of AMF message failed. Error is : Exception Occurred while invoking WriteObject method-javaang.ClassNotFoundException:flex.messaging.io.amf.Amf3Output(Enter to WriteObject WriteObject throws exception:java.lang.ClassNotFoundException:flex.messaging.io.amf.Amf3Output

21、后台 debug log)at .URLCIassLoader$1.run(URLCIassLoader.java:200)at java.security.AccessController.doPrivileged(Native Method)at .URLCIassLoader.findClass(URLCIassLoader.java:188)at java.lang.ClassLoader.loadClass(ClassLoader.java:306)at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)at j

22、ava.lang.ClassLoader.loadClass(ClassLoader.java:251)at java.lang.ClassLoader.loadClasslnternal(ClassLoader.java:319)at java.lang.Class.forName0(Native Method)at java.lang.Class.forName(Class.java:164)at hp.flex.HPExternalizableWrapper.GetLCDSObjectOutputStream(HPExternalizableWrapper.java:155)at hp.

23、flex.HPExternalizableWrapper.GetObjectOutputStream(HPExternalizableWrapper.java:215)at hp.flex.HPExternalizableWrapper.WriteObject(HPExternalizableWrapper.java:23)无法解析,原来机器上的jar包的位置在本机器上不同引起的因缺少录制时候选择的jar包,选择的jar包的位置变化了或者引用的jar包已经删除了。解决方法:重新在 Run-time settings >Flex >Externalizable Objects 中增加

24、 jar 包(因为原 来引用的jar包的位置已经发生变化了),增加 Recording Options中的jar是没用的。重复记录导致: Error: Server returned error for message #1 : "AMF call returned an error, d escribed in XML seen in extended log"可以用打开所有 log (Run-time Setting->General->L og->Extended log,全部选择上),然后回放脚本,进行具体问题的跟踪,一般是由于程序中限定 不允许数

25、据重复(或数据记录的某个字段不能重复导致的,一般发生在新建和修改里面。(有些可能不是程序中作限定,而是 数据库中有唯一性限制,索引或主健等),删除相关的所有记录后 再次回放即可。(本系统中的此次 测试岀现这个错误是由于删除了客户台帐的新建客户数据,但 在客户会中生成的主数据没有删除导致的)版本不兼容,在一个ld版本下录制的脚本在一个版本下使用。请求超时或修改了程序(但你不知道)。根据Replay log的具体错误内容查看原因(结合 Replay log (F10单步执行)、web服务的后台 日志和程序综合分析)注:web服务后台日志的显示级别在 WEB-INFp

26、erties 或者中application-context.xml中的props设置(最好只显示错误,不然日志文件太大,不容易 分析)。4、录制的可以回放的脚本却不能操作成功对动态数据没有做关联;有验证码:如果请求进去后,服务器虽然判别请求非法,但是它仍能成功处理,告诉你请求数据有 问题,那么它返回的http代码仍是200!只是页面上会有它的提示信息错误!LR只判断请求的状态是否正确,不判断业务数据是否正确!如果要做判断得自己写检查点判别!web服务器后台日志显示 Unknown AMF question的错误,请求无效导致选择的协议不完整,录制的脚本不完整导致的;打开Extended Log

27、单步执行查看 Replay log和web服务后台日志,然后分析Loadrunner 9.5 flex性能测试(四)脚本的参数化和关联1、脚本参数化之前所做的 工作:保存录制好的一个原始的脚本;然后另存一份进行参数化(备份一份,以防参数化错误导致无法恢 复初始脚本而重新录制脚本,浪费时间);然后把需要关联的进行关联,然后回放成功且测试系统中成功(eg :能看到新增的相应记录)再保存一份;脚本中是否有注释,没有则添加注释,增加脚本可读性,方便参数化和以后重用;脚本中是否建立了事务的开始和结束点(录制时需要考虑的);Session和动态数据是否正确和全部进行了参数化替换,(注意一个参数录制后分行的

28、情况,要截 取一部分通过查找功能一一检查脚本;参数前面的特殊字符不进行替换)eg如下:flex_web_request("amf;jsessionid=""LFgVY20Tly1K0pQqprsXvwFpKhvqg5KznhJn43syvgXGGpyDNh42!1755959435II"URL= "LFgVY20Tly1K0pQqprsXvwFpKhvqg5KznhJn43syvgXGGpyDNh42!1755959435II"Method=POST","Resource=0","RecCont

29、entType=application/x-amf","Referer="Snapshot=t3.inf","Mode=HTML","EncType=application/x-amf", "BodyBinary=x00x03x00x00x00x01x00x04nullx00x02/" "1x00x00x01x18nx00x00x00x01x11n""x81x13Oflex.messaging.messages.RemotingMessagex13operation

30、r" "source't""bodyx13messageIdx11clientIdx15timeToLivex13timestampx0Fheade" "rsx17destinationx06x0Bloginx01tx05x01x06x07gwax06r" "666666x06IAACD40DF-FFC4-8641-4CB8-02F1481FB0F4x01x04x00x04" "x00nx0Bx01x15DSEndpointx06rmy-amft""DSIdx06I3

31、E3B399F-351B-D1FC-FC78-81B50BD94526x01x06x1DsessionS e""rvice",LAST);flex_amf_call("AMF3_call_1", "Gateway= "LFgVY20Tly1K0pQqprsXvwFpKhvqg5KznhJn43syvgXGGpyDNh42!1755959435II"Snapshot=t4.inf",MESSAGE,"Method=null","TargetObjectId=/2",B

32、EGIN_ARGUMENTS,"<AMF3><object-externalizable-custom>" "vflex.messaging.messages.RemotingMessage>n <destination" ">sessionService</destination>n vmessageId"">4ADBA44D-56DE-48EF-3CF0-02F14929E669</messageId>n <timestamp>0<

33、/""timestamp>n <timeToLive>0</timeToLive>n <headers>n <entry>n ""<string>DSEndpoint</string>n <string>my-amf</string>n </""entry>n <entry>n <string>DSId</string>n vstring" ">3E3B399F

34、-351B-D1FC-FC78-81B50BD94526</string>n </entry>n </" "headers>n <operation>getLoginlnfo</operation>n <parameters/>n</" "flex.messaging.messages.RemotingMessage></object-externalizable-custom" "></AMF3>",END_ARGU

35、MENTS,LAST);上面录制的脚本通过回放对比(脚本的View Tree模式下的Server Response可以很明显的看至叮sessionid需要关联,直接关联参数化替换即可;而 DSid也需要关联,然而通过对比脚本的 上下文发现前面的X06I并不需要参数化(后面的此相关内容中都没有x06I )保存脚本后,在每个脚本中增加readme文件,简要描述一下脚本的录制内容、多少个参数及其参数运行机制等。以上的文件保存还有参数化及其脚本中的注释一律用英文(Ld对中文支持的不好)2、Flex 中 sessionid 如何关联?首先在 Generation Log 中查找第一返回 sessioni

36、d 的AMF Response的xml文件(也可以在 View Tree模式下查看第一个 flex amf call后的Server response中返回的内容,然后右侧选择 Snap shot (Both+XML)得到如下xml文件,但目前的版本中没有看到此文件)eg :AMF notify: AMF Response xmlvAMFPacket AMF_version="3"><AMFHeaders>vAMFHeader name="AppendToGatewayUrl" must_understand="true&qu

37、ot;><string>jsessionid=LFgVY20Tly1K0pQqprsXvwFpKhvqg5KznhJn43syvgXGGpyDNh42!1755959435</s tring></AMFHeader></AMFHeaders><Messages>vMessage method="/1/onResult" target=""><AMF3><object-externalizable-custom>vflex.messaging.messages.

38、AcknowledgeMessageExt><byte>-88</byte><byte>3</byte>vflex.messaging.io.amf.ASObject serialization="custom"><unserializable-parents/>vmap>vdefault>vloadFactor>0.75v/loadFactor>vthreshold>12v/threshold>v/default>vint>16v/int>vint

39、>2v/int>vstring>DSIdv/string>vstring>3E3B399F-351B-D1FC-FC78-81B50BD94526v/string> vstring>DSMessagingVersionv/string>vdouble>1.0v/double>v/map>vflex.messaging.io.amf.ASObject><default>vinHashCode>false</inHashCode>vinToString>false</inToStrin

40、g></default></flex.messaging.io.amf.ASObject></flex.messaging.io.amf.ASObject>vlong>1267065045765</long><byte-array>Pjs5nzUreVPrVzhfC43tVg=v/byte-array><byte-array>Pjs5nzU9e4JIWT2jzHpllQ=v/byte-array>vbyte>2v/byte>vbyte-array>k/Z0Cs1L2rKvVALxS

41、C+pkg=v/byte-array>vbyte>0v/byte>v/flex.messaging.messages.AcknowledgeMessageExt>v/object-externalizable-custom>v/AMF3>v/Message>v/Messages>v/AMFPacket>关联的函数放在第一个flex_amf_call请求的后面,在第一个岀现session id的请求前面(即服务器返回的带有session的响应数据是在第一个请求后返回到客户端的)lr_message("resp %s", l

42、r_eval_stri ng( "resp");lr_xml_get_values("XML=resp", "ValueParam=seid","Query=/AMFPacket/AMFHeaders/AMFHeader/stri ng",LAST);lr_xml_get_values("XML=resp", "ValueParam=dsid","Query=/stringposition() mod 4 =2",LAST);lr_message("seid %s", lr_eval_str ing( "seid");lr_save_var(lr_eval_string("seid")+ 12, 64, 0, "sid"

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论