Loadrunner 9.5 flex性能测试

    技术2025-11-12  8

     性能测试是一项浩大的工程,若你只想随便找台机器装上ld后,造几条数据,弄几个并发用户简单跑一下出来结果就可以万事大吉了,那你就大错特错了!(这样得出的测试结果没有任何价值和意义,当然更无法依此评估出你贵公司系统的性能了。QvuW#[j0I0

         性能测试真正开始执行之前除了编写详细的性能测试计划【所需的资源(软件+硬件+人力)】、设计测试脚本、准备测试数据、搭建测试环境外,还需要注意一下细节:

    :Gh-D@].j,Y0

    如何保证性能测试的顺利开展和执行?51Testing软件测试网a$n Sp@2_3_#/

    51Testing软件测试网$c7AI%Wc/u

    51Testing软件测试网nl7]d-Z/y%b~9C'D k

    首先考虑你性能测试的目标是什么,需要哪些人员协助你才能完成,然后协调相关人员(DBA、网管、开发人员等),保证在真正开展过程中能有效得到他们的协助和支持(性能测试不是一个人就能完成的,除非你“全才”啦);51Testing软件测试网$c7XhU&hu

     

    cJb4f`p"}c0 51Testing软件测试网3r ^Zf8A2x*b

    51Testing软件测试网#U,KE}-Gq6}

    你计划中需要申请的资源,比如运行contoller的机器,是否符合你的预期要求,Cpu是否有足够的处理能力,安装的操作系统是否符合你的要求(loadrunner9.5除load Generator外都不能安装在64位机操作系统下,若没看清楚安装文件(安装程序下help/install.pdf)中system requirements for installing说明的话,你安装完成会发现自己白忙活了,还得重装OS,然后重来一次);51Testing软件测试网i{Y2D8g,^b8I+z

     

    ^)v X{M*aU0 51Testing软件测试网V[T#n'i^-q

     

    Ks9Xikg0

    你要测试的程序是否功能都没问题了,若程序还有变更,请千万不要在录制部分后又变更了,你需要的版本是一个功能稳定的版本,能顺利录制脚本的的版本);51Testing软件测试网e)j!qX+?.^

     

    o;f.DwhNz?0

    4f4bj8jc qnd7[$K#n051Testing软件测试网)M x#`4['Vw

    在测试执行前你是否召集开发和相关人员对程序中明显需要优化的地方(你功能测试执行时系统有些功能就无法忍受的慢)进行了优化,这样可以大大缩短你的性能测试周期;51Testing软件测试网F4DqMd:F gMh(h

     

    3lj3p+dSA0 51Testing软件测试网0Pv Qx^zx-l/U+g

     

    8Cz/cR-G eI!py0

    在选择loadrunner工具前,一定要慎重,你的程序设计语言和架构及其所运用的技术,此工具是否都支持,不然后续你需要自行开发的脚本就太多了,可能面临重新选择测试工具的严重问题);

    &uf2X,Y D*@cu0

    51Testing软件测试网ea r)W%Um

    51Testing软件测试网VnoRx

     

    y)l`_~-YF.R^8C"p0

    分险分析:技术风险、风险分析、分险应对措施和风险监控方法。51Testing软件测试网f4dB){7s1a4Ei(A i%E

     

    0u.r^9BP$~:n0

    *sJSkOL3w0

    9^u,sv[)Cb#E(Y0

    设计测试脚本?

    r8W0}t'z'Q0

    识别可能的系统性能问题,多与相关人员分析讨论。 你所测系统的重点业务是什么?都有哪些角色参与?业务逻辑是什么样的?用户频繁使用的功能是否都考虑周全了? 参数化数据的来源?都需要哪些检查点?脚本的精简程度?          

    c/P ?7v)W Ue-R0

    8a1/7wZ0xA0

    准备测试数据?

    P9Mt$q^6|)D/z0

    基础数据:要更符合实际需求,人员、角色、初始化数据等; 业务数据;要更符合实际业务,数据最好不要相同的数据,无效的数据,要类别丰富、覆盖所有业务逻辑的基础数据;可以通过自动化工具直接生成;数据库脚本生成(单一数据,关联几个表的数据最好不用脚本生成);用ld生成。

    ^u!E4v,iw8]051Testing软件测试网lC!h)av*mL

    搭建测试环境?51Testing软件测试网WGqn;bs]I&fN-_2@

    网络(带宽、可使用的有效ip地址个数); 服务器的配置; 当前测试环境的局限性(无法模拟的测试环境都有哪些)。

    51Testing软件测试网 pe/? my5c0t

    51Testing软件测试网 Cm[f:R.eTr Dh;G

    需求分析和需求转化

    :P)| A5_n;P |0

    客户的性能需求不可测试、没有需求、需求模糊,要通过与客户、开发人员的沟通获得可测试、可衡量和可量化的性能需求51Testing软件测试网 FKcK4Je

    1.8/2原则

    9N akD!s"m^2E0

    2.经验值

    }d^8o~}E{0

    3.平均并发用户数C=nL/T(n:用户数量[login session的数量],L:用户平均使用时长[login session的时长],T:考察的时间段)51Testing软件测试网E/kvC'D1i

    4.并发用户峰值:C1=C+3√C51Testing软件测试网3v#RkE6[

    1、从hp官方网站上下载loadrunner9.5的试用版程序(有windows和linux的版本);51Testing软件测试网c_%MLH.x

    2、按照步骤进行安装(安装之前先安装必须的.net框架和其他组件);51Testing软件测试网 s/`$g cRrH;S

    3、安装文件的目录及文件存放路径一定不能含有中文,防止错误;另外最好不要选择根目录下,要新建一个文件夹,命名,然后安装其下,安装完成后,重启。

    (Q.?;|}] S /0

    4、从http://support.openview.hp.com/selfsolve/document/KM750376下载LoadRunner9.51 patch安装LoadRunner_951.msp文件

    qoH(X,S0

    然后http://support.openview.hp.com/selfsolve/document/KM793318下载LoadRunner 9.52 patch安装LoadRunner_952.exe文件51Testing软件测试网_d e RV9]G%T|d

    Ld9.50对flex的支持有以下问题:51Testing软件测试网yI Y5JHH

    l 无法解析flex内部的对象;

    'NAB'?E0

    l 在一台机器上录制的脚本无法在另一台机器上正确运行;报错如:51Testing软件测试网$l"Rt^,c)c7^

    java.io.IOException: file c:/jars/syswincrm3.jar is not found51Testing软件测试网f1^K+Qb(B5[-IM8p

       at hp.flex.ClassLoaderManipulator.loadClassPathString(ClassLoaderManipulator.java:58)

    'p/1V'Q-s J6Y9P2|0

    (这是在调试日志中显示的/HP_FLEX_JAVA_LOG_FILE/,下面是在界面中的Replay log中显示的)51Testing软件测试网e0p4|&S6O)VO2Mg"U

    Error: Encoding of AMF message failed. Error is : Exception Occurred while invoking WriteObject method - java.lang.ClassNotFoundException: flex.messaging.io.amf.Amf3Output

    )@oQ5eg+B&l1_7Js0

       at java.net.URLClassLoader$1.run(URLClassLoader.java:200)

    _#yf/Z0

       at java.security.AccessController.doPrivileged(Native Method)51Testing软件测试网 /o5Y^ WUet%B"r

       at java.net.URLClassLoader.findClass(URLClassLoader.java:188)

    2CT#c-g9~[)V0

       at java.lang.ClassLoader.loadClass(ClassLoader.java:306)51Testing软件测试网wIKT:f

       at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)51Testing软件测试网AZfZB m

       at java.lang.ClassLoader.loadClass(ClassLoader.java:251)51Testing软件测试网#{l:{/.F#|a6mh

       at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)51Testing软件测试网lE"y3HY"T,]YK

       at java.lang.Class.forName0(Native Method)

    W"IlZ*oG/C:Fa6R0

    at java.lang.Class.forName(Class.java:164)   

    w!sp])Im@?;lY$V0

    at hp.flex.HPExternalizableWrapper.GetLCDSObjectOutputStream(HPExternalizableWrapper.java:155) 

    L!X7`u!|#oZ0

    at hp.flex.HPExternalizableWrapper.GetObjectOutputStream(HPExternalizableWrapper.java:215)

    )s(D;Z#~]'L,UE@0

    at hp.flex.HPExternalizableWrapper.WriteObject(HPExternalizableWrapper.java:23)51Testing软件测试网R:E1[/|wb4O o3@

    l 在Controller中添加其他ip地址(已经安装了agent process)Load Generators,运行报错;51Testing软件测试网_tV9L'a+^$yc

    l Results Analysis中的Set Global Filter中没有thinktime选项,这样就不能查看不包含thinktime的事务响应时间了;

    6o'{7o3fM0

    l 其他问题可在安装后的readme.htm中查看

    /Y*H3]Zy$sy0

    升级到Ld9.52后则解决了此问题,这两个补丁所解决的问题可以在下载的压缩包中解压的readme.htm文件中查看。51Testing软件测试网` tF.M p3W6_;S

    5、然后用传统的破解方法进行破解即可。google,破解方法如下(仅供学习研究人员参考,请大家支持正版软件!):51Testing软件测试网7Y%Yl1B ~z1m+r

    l 用LR8.0中的mlr5lprg.dll、lm70.dll覆盖LR9.5安装目录下“bin”文件夹中的对应文件;

    :e4q.H.s_9Up0

    l 手动修改注册表,删除下面内容:

    (pyq"G%` S c8M(k0

    [HKEY_LOCAL_MACHINE/SOFTWARE/Mercury Interactive/LoadRunner/License2]

    %a5D5`^G4u)p@0

    [HKEY_LOCAL_MACHINE/SOFTWARE/MercuryInteractive/LoadRunner/License2/History]"AIBGEBFW-JVED-ZKEKEKEKEKEBDNQAF-KBRDN"="" [HKEY_LOCAL_MACHINE/SOFTWARE/MercuryInteractive/LoadRunner/License2/PermanentLicense] @="AIBGEBFW-JVED-ZKEKEKEKEKEBDNQAF-KBRDN"

    KS.eQP O0

    "last"="AIBGEBFW-JVED-ZKEKEKEKEKEBDNQAF-KBRDN" [HKEY_LOCAL_MACHINE/SOFTWARE/MercuryInteractive/LoadRunner/License2/TemporaryLicense]@="AEBGEBFS-AKEKEKEKE-KAUCA" [HKEY_LOCAL_MACHINE/SOFTWARE/Classes/Interface/{87B3ADD4-21EB-11d5-93EF-00105AA0FD2D}] @="IControl"

    SC/ t2bvo0

    //当然也可以直接执行删除注册的文件lr_Del_license(regedit).exe。

    mr/|6b(Q$T d0

    l 然后使用老的注册码就可以使用了;

    `{3?j:W:Sj9x0

    global-100: AEAMAUIK-YAFEKEKJJKEEA-BCJGI51Testing软件测试网#y'Ai|0sg

    web-10000: AEABEXFR-YTIEKEKJJMFKEKEKWBRAUNQJU-KBYGB

    3R9O.Rg5q0

    or(Ok――1000个用户的Global License:AEACFSJI-YASEKJJKEAHJD-BCLBR)

    U(R5r]-ki#Whn(N0

    6、安装后的配置:51Testing软件测试网B]^,jtH

    l 在用户环境变量中增加HP_FLEX_JAVA_LOG_FILE的debug参数 ;value为:目录/日志文件名称。51Testing软件测试网|&| _8a+Z

    Eg:  C:/ldlog/flex.log51Testing软件测试网4h2|3T0B7{5JV

    l 在录制脚本的Vugen中的Toole->Recording Options->Flex ->Externalizable Objects下添加Lib文件,这样就可以正常解析测试系统中的定义的类和对象了,并且使得脚本中的文件结构更加清晰。

    2j#r Te N;iR0

    添加的文件:51Testing软件测试网%b1O}f!j4L

    flex-messaging-common.jar51Testing软件测试网/P Wc5bq4w;N M

    flex-messaging-core.jar

    %{,q(DN2e m5AMR:@.q0

    其他与flex和spring相关的文件;51Testing软件测试网q(S2R0R5|k3d,^

    测试系统自定义的jar包,如:syswincrm31.jar

    8F0zC.O SG#d ~0

    这样就可以正常解析flex协议下所有请求数据了,并且可以使得录制的文件的结构更加清晰,方便参数化。51Testing软件测试网 Py e!mI*H

    1、  录制时无法弹出IE,google一下,解决办法如下:

    @+m x:U;V p*l;v0

    l  主要是LR的注册信息被修改,无法找到IE路径。如何重新注册LR呢?在lr的安装目录(例如D:/Program Files/Mercury/LoadRunner/bin)下,单击register_vugen.bat文件,注册信息被重新改写了。不过别忘了最后一步。重新启动一下,好了;

    -JY }1{ m!y1M Yn0

    l  有多个浏览器时,将IE置为默认浏览器;由于IE的第三方插件的影响,IE工具-》Internet选项…-》高级,把“启用第三方浏览器扩展”的选中去掉即可;

    7Z&B-g5F*bh7DO0

    l  对于Windows2003上无法录制IE6/7,导致IE Crash,iedw.exe(IE Crash Detection)报告错误事件,可能原因是Windows Server默认对IE加载DEP(数据执行保护)特性,而Vugen.exe刚好又跟DEP冲突。方法:我的电脑>右键属性->高级->“性能”部分的“设置”->“数据执行保护”->点击“添加”按钮->将LR安装目录bin下的vugen.exe添加进去->点击确定,重启一下LR,就可以录制了。

    o)n3y(F:o.@{,RW+YN b0

     

    S+Q#m!K%_0

    2、 录制不到脚本51Testing软件测试网Jh'v1q1q0T#z.{

    l  选择的协议不对,有时需要选择多个协议,这个需与开发、系统架构师沟通;51Testing软件测试网*a'n j'[jYpD

    l  没有选择jar包;

    N v8^fgK9S}0

    l  检查防火墙个杀毒软件,关闭所有的网络监测;51Testing软件测试网 dI#L];TU/d5p

    l  早期的版本(Ld8.0以前的版本)不能很好的支持IE6以上的版本,换成IE6即可;

    }/Qc6/D0

    l  Flex需要客户端下安装flash,并且IE选项的安全设置中设置可以访问所有active控件;

    JX)W#}_0

     

    1R#zV-ju3Ob0

    3、 录制的脚本回放错误51Testing软件测试网$A4YZ^] fm?,in

    l  选择的协议不对(应选择多个协议或其他协议);

    !rv j7^H~ivl0

    l   没有选择jar包,无法解析数据;51Testing软件测试网 e2O?d+m~G/ U

    l  自动关联错误;

    U$Bw [,b5s0

    l  动态数据没有做关联;

    l0/Zy*P2_&B$I0

    Flex协议录制的脚本没有办法产生自动关联时,需要下面的Ld中自带的函数进行自定义:51Testing软件测试网d _~T6u-{z

    l  选择另一台机器上录制的ld9.50版本的脚本,原来选择的http/flex两个协议的脚本,回放报错Replay log如下:51Testing软件测试网n@DV+H(La7_x6nA

    Error: Encoding of AMF message failed. Error is : Exception Occurred while invoking WriteObject method51Testing软件测试网Nb-JXzI u:q

       - java.lang.ClassNotFoundException: flex.messaging.io.amf.Amf3Output51Testing软件测试网'UV6ry-]?7p,Q&GM7o

      (Enter to WriteObject WriteObject throws exception:

    j By.W2wWv/7dF0

     java.lang.ClassNotFoundException: flex.messaging.io.amf.Amf3Output――后台debug log)51Testing软件测试网j9u,m)v+@K

      at java.net.URLClassLoader$1.run(URLClassLoader.java:200)

    We0b+?bQ(L]0

      at java.security.AccessController.doPrivileged(Native Method)

    u#/zwK9eep4Np]p/nK0

      at java.net.URLClassLoader.findClass(URLClassLoader.java:188)51Testing软件测试网$e#_H&wRy)N

      at java.lang.ClassLoader.loadClass(ClassLoader.java:306)

    Q4E0rA!vzb2RD0

      at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)

    %gg(T/@_Z0

      at java.lang.ClassLoader.loadClass(ClassLoader.java:251)51Testing软件测试网)g0r-xdf~ H9u

      at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)51Testing软件测试网:N2d_ j#tL1g(il.`

      at java.lang.Class.forName0(Native Method)51Testing软件测试网|4l`}O#pI&E

      at java.lang.Class.forName(Class.java:164)

    h^-Y6eIxkv0

      at hp.flex.HPExternalizableWrapper.GetLCDSObjectOutputStream(HPExternalizableWrapper.java:155)51Testing软件测试网5PXE?qu:@a

      at hp.flex.HPExternalizableWrapper.GetObjectOutputStream(HPExternalizableWrapper.java:215)51Testing软件测试网3|+RnH$K1koH

    at hp.flex.HPExternalizableWrapper.WriteObject(HPExternalizableWrapper.java:23)

    '?*h*h~-OVn uN0

    无法解析,原来机器上的jar包的位置在本机器上不同引起的

    (hc)]A;M/?0

    因缺少录制时候选择的jar包,选择的jar包的位置变化了或者引用的jar包已经删除了。

    'TCp0m _:He/sX0

    解决方法:重新在Run-time settings->Flex->Externalizable Objects中增加jar包(因为原来引用的jar包的位置已经发生变化了),增加Recording Options中的jar是没用的。51Testing软件测试网(zZdlFr`6m%bG

    l  重复记录导致:Error: Server returned error for message #1 : "AMF call returned an error, described in XML seen in extended log"可以用打开所有log(Run-time Setting->General->Log->Extended log,全部选择上),然后回放脚本,进行具体问题的跟踪,一般是由于程序中限定不允许数据重复(或数据记录的某个字段不能重复导致的,一般发生在新建和修改里面。(有些可能不是程序中作限定,而是数据库中有唯一性限制,索引或主健等),删除相关的所有记录后再次回放即可。(本系统中的此次测试出现这个错误是由于删除了客户台帐的新建客户数据,但在客户会中生成的主数据没有删除导致的)

    .?I(~x+i0

    l  版本不兼容,在一个ld版本下录制的脚本在一个版本下使用。

    y#R)i B o9E'} Lrs#}0

    l  请求超时或修改了程序(但你不知道)。

    4{+Y.}(_4K }7/Or(A0

    l  根据Replay log的具体错误内容查看原因(结合Replay log(F10单步执行)、web服务的后台日志和程序综合分析)注:web服务后台日志的显示级别在/WEB-INF/classes/log4j.properties或者中application-context.xml中的props设置(最好只显示错误,不然日志文件太大,不容易分析)。51Testing软件测试网%qqqI X{3S

    4、 录制的可以回放的脚本却不能操作成功51Testing软件测试网$x y"j1aR{EQ

    l 对动态数据没有做关联;51Testing软件测试网AO G+N-o9S

    l  有验证码:如果请求进去后,服务器虽然判别请求非法,但是它仍能成功处理,告诉你请求数据有问题,那么它返回的http代码仍是200!只是页面上会有它的提示信息错误!LR只判断请求的状态是否正确,不判断业务数据是否正确!如果要做判断得自己写检查点判别!

    B5Yi4yt|$dzL,i0

    l  web服务器后台日志显示Unknown AMF question的错误,请求无效导致51Testing软件测试网KnS%dQ.^Ng"m

    l  选择的协议不完整,录制的脚本不完整导致的;51Testing软件测试网s3[cy#~7Z a

    l  打开Extended Log单步执行查看Replay log和web服务后台日志,然后分析51Testing软件测试网nz8N;Y:eJ,B-/

    1、 脚本参数化之前所做的工作51Testing软件测试网yIZ-p Ld(Z

    l  保存录制好的一个原始的脚本;然后另存一份进行参数化(备份一份,以防参数化错误导致无法恢复初始脚本而重新录制脚本,浪费时间);

    ;j:[m#b l0R5iR&}_0

    l  然后把需要关联的进行关联,然后回放成功且测试系统中成功(eg:能看到新增的相应记录)再保存一份;

    I nN!`~bP0

    l  脚本中是否有注释,没有则添加注释,增加脚本可读性,方便参数化和以后重用;

    }R2u%H.Xh(]XY0

    l  脚本中是否建立了事务的开始和结束点(录制时需要考虑的);51Testing软件测试网QA:~fZOm;^

    l  Session和动态数据是否正确和全部进行了参数化替换,(注意一个参数录制后分行的情况,要截取一部分通过查找功能一一检查脚本;参数前面的特殊字符不进行替换)eg如下:51Testing软件测试网M Dv O[ P8xV

    flex_web_request("amf;jsessionid="

    6`uNG8hV^Q,e%w0

              "LFgVY20Tly1K0pQqprsXvwFpKhvqg5KznhJn43syvgXGGpyDNh42!1755959435",

    3qB&j+V f.g0

              "URL=http://erp.syswin.com/messagebroker/amf;jsessionid="51Testing软件测试网w b:k }3g5| l

              "LFgVY20Tly1K0pQqprsXvwFpKhvqg5KznhJn43syvgXGGpyDNh42!1755959435",51Testing软件测试网m1D4RnK/H!R

              "Method=POST",

    6wW.q^W#X:S0

              "Resource=0",

    :g!O-sx^_*B0

              "RecContentType=application/x-amf",

    &u9}2d)~%?2EO{,c0

              "Referer=http://erp.syswin.com/syswincrm3.swf",

    3k!v.W!Idj NYo Dz _0

              "Snapshot=t3.inf",

    GX W9H b0

              "Mode=HTML",

    ){Z3i;? `0

              "EncType=application/x-amf",

    /[;cypf ZZ!]4}0

              "BodyBinary=//x00//x03//x00//x00//x00//x01//x00//x04null//x00//x02/"51Testing软件测试网-f$d)q5?"y+o@,v3P

              "1//x00//x00//x01//x18/n//x00//x00//x00//x01//x11/n"51Testing软件测试网s$D$dkW:{H.J}R

              "//x81//x13Oflex.messaging.messages.RemotingMessage//x13operation/r"51Testing软件测试网 d O%E0|6h[7c%A f;/

              "source/t"

    y)kX*My#T ~,BY n1`0

              "body//x13messageId//x11clientId//x15timeToLive//x13timestamp//x0Fheade"51Testing软件测试网*S+u:@#[O-JDz

              "rs//x17destination//x06//x0Blogin//x01/t//x05//x01//x06//x07gwa//x06/r"51Testing软件测试网Q,l/)BA:V

              "666666//x06IAACD40DF-FFC4-8641-4CB8-02F1481FB0F4//x01//x04//x00//x04//"

    {:y+[w"}0

              "x00/n//x0B//x01//x15DSEndpoint//x06/rmy-amf/t"51Testing软件测试网U1E*m"U#b9k0x

              "DSId//x06I3E3B399F-351B-D1FC-FC78-81B50BD94526//x01//x06//x1DsessionSe"

    5K@ J(pL0

              "rvice",

    zE:o,hp3^:?0

                      LAST);51Testing软件测试网?4Ux1E^ P GA.[6["q

    flex_amf_call("AMF3_call_1",51Testing软件测试网ZQ4tt)z QoR5[

              "Gateway=http://erp.syswin.com/messagebroker/amf;jsessionid="51Testing软件测试网XF.s5O"t8U)y7Je

              "LFgVY20Tly1K0pQqprsXvwFpKhvqg5KznhJn43syvgXGGpyDNh42!1755959435",

    5S7g4tP2v j~2L0

              "Snapshot=t4.inf",51Testing软件测试网S*k7d%MB6z$Im

              MESSAGE,51Testing软件测试网:a$Q$RT g

              "Method=null",

    P%l6O-u*vX7t Z0

              "TargetObjectId=/2",51Testing软件测试网 ^+p$RO(C3`

              BEGIN_ARGUMENTS,51Testing软件测试网'L5[M){0[YCySK%C

              "<AMF3><object-externalizable-custom>"51Testing软件测试网VZx d v

              "<flex.messaging.messages.RemotingMessage>/n <destination"51Testing软件测试网v~;{d`&d

              ">sessionService</destination>/n <messageId"51Testing软件测试网&p4]n6B C9s^

              ">4ADBA44D-56DE-48EF-3CF0-02F14929E669</messageId>/n <timestamp>0</"

    !]1Bwo)[:{y$Y0

              "timestamp>/n <timeToLive>0</timeToLive>/n <headers>/n   <entry>/n "

    4J;o#yYUc8X0

              "   <string>DSEndpoint</string>/n     <string>my-amf</string>/n   </"51Testing软件测试网y0r&qUTx]d

              "entry>/n   <entry>/n     <string>DSId</string>/n     <string"

    }z,H?`h0

              ">3E3B399F-351B-D1FC-FC78-81B50BD94526</string>/n   </entry>/n </"51Testing软件测试网V-Y@ Z6IgB

              "headers>/n <operation>getLoginInfo</operation>/n <parameters/>/n</"51Testing软件测试网Tc]`*H:[ E:@g2_]i$A

              "flex.messaging.messages.RemotingMessage></object-externalizable-custom"

    #Xhx n"y8m0

              "></AMF3>",

    a)P8C0Q Rm`k:c0

              END_ARGUMENTS,51Testing软件测试网.O u1K-X m/m8n'd

                      LAST);51Testing软件测试网@*V^~a)lkg5|

    上面录制的脚本通过回放对比(脚本的View Tree模式下的Server Response可以很明显的看到jsessionid需要关联,直接关联参数化替换即可;而DSid也需要关联,然而通过对比脚本的上下文发现前面的x06I并不需要参数化(后面的此相关内容中都没有x06I)51Testing软件测试网a3Mi [%^/bI Y/

    l  保存脚本后,在每个脚本中增加readme文件,简要描述一下脚本的录制内容、多少个参数及其参数运行机制等。51Testing软件测试网 T s0W,F_$yi

    l  以上的文件保存还有参数化及其脚本中的注释一律用英文(Ld对中文支持的不好)

    $R5` erS;k0

     

    &Lo#R5O;X-Qp0

    2、 Flex中sessionid如何关联?51Testing软件测试网'^:s Du;`v-/

    l  首先在Generation Log中查找第一返回sessionid的AMF Response的xml文件(也可以在View Tree模式下查看第一个flex amf call 后的Server response中返回的内容,然后右侧选择Snapshot (Both+XML)得到如下xml文件,但目前的版本中没有看到此文件)eg:

    rv'P+v`0

     

    1Gix2OB'w@E8?0

    AMF notify: AMF Response xml51Testing软件测试网'b.Gx9g5?

     

    Bdw6T*u"p$W0

    <AMFPacket AMF_version="3">51Testing软件测试网xWwDz RC2u a"d/i

     <AMFHeaders>51Testing软件测试网$v.E]lj1Q&h+A DVf

      <AMFHeader name="AppendToGatewayUrl" must_understand="true">

    m`}9P//)v B+d0

       <string>;jsessionid=LFgVY20Tly1K0pQqprsXvwFpKhvqg5KznhJn43syvgXGGpyDNh42!1755959435</string>51Testing软件测试网El&f0Q D/Rkj!Bf U

      </AMFHeader>51Testing软件测试网 ~]Zzn

     </AMFHeaders>

    4X1J V/T.jr0

     <Messages>

    Q'Zv*tp1?I?H0

      <Message method="/1/onResult" target="">

    &vq_'Cd} j0

       <AMF3>51Testing软件测试网1N Y7Krv1[

        <object-externalizable-custom>51Testing软件测试网_*HjR5V

         <flex.messaging.messages.AcknowledgeMessageExt>51Testing软件测试网p8H'X8X D;_

          <byte>-88</byte>51Testing软件测试网&C.{$~x+~)F^

          <byte>3</byte>

    te#k8}Id0

          <flex.messaging.io.amf.ASObject serialization="custom">

    T.Lw0O2J.q`~0

           <unserializable-parents/>51Testing软件测试网 xxH7GcG

           <map>51Testing软件测试网Ze'cVhq @x

            <default>

    4E EGa Dl2a0

             <loadFactor>0.75</loadFactor>51Testing软件测试网#^H'] X3r

             <threshold>12</threshold>

    H ps.y PQ7qm8L0

            </default>51Testing软件测试网3ff7h6ji V4m5J^M

            <int>16</int>51Testing软件测试网#D Y/ZZ:COJ

            <int>2</int>

    6?b'LT2gQ4pfY*`I0

            <string>DSId</string>51Testing软件测试网 J7bXi4dS K8E,pB

            <string>3E3B399F-351B-D1FC-FC78-81B50BD94526</string>

    F3V{2O5j2?N0FO0

            <string>DSMessagingVersion</string>51Testing软件测试网OQ f}0GV5d;e

            <double>1.0</double>51Testing软件测试网I#zd$g g-w:c

           </map>

    %?'r1e)_.v:M0

           <flex.messaging.io.amf.ASObject>51Testing软件测试网um-^(Y/n'^7|C L?

            <default>

    NW*Z$E3M _0

             <inHashCode>false</inHashCode>51Testing软件测试网u/c"e:j b6f

             <inToString>false</inToString>

    1gf!u5_"hY0

            </default>51Testing软件测试网|%hP$z+lP8/NT

           </flex.messaging.io.amf.ASObject>

    ,t ?Z7x,Y0

          </flex.messaging.io.amf.ASObject>

    Kz?8p X g2^O0

          <long>1267065045765</long>

    "~ ]-C+g)I"RaZ@0

          <byte-array>Pjs5nzUreVPrVzhfC43tVg==</byte-array>51Testing软件测试网*]MU[ ~ GY9~

          <byte-array>Pjs5nzU9e4JlWT2jzHpllQ==</byte-array>51Testing软件测试网0oYeNegvBAy x

          <byte>2</byte>51Testing软件测试网N7i:E8jL

          <byte-array>k/Z0Cs1L2rKvVALxSC+pkg==</byte-array>

    0Z|P5S.N.x,].h0

          <byte>0</byte>51Testing软件测试网1TH1OHD3BJ G^*M

         </flex.messaging.messages.AcknowledgeMessageExt>51Testing软件测试网j4i0tYY/a(h

        </object-externalizable-custom>51Testing软件测试网#]7N+]%]N

       </AMF3>

    Oy*]L(P}0

      </Message>51Testing软件测试网/F H(nh:J{8e~UP ~ z

     </Messages>

    W]S1g!^b1m0

    </AMFPacket>51Testing软件测试网I_1`t9@"`"D"}g3s

    l 关联的函数放在第一个flex_amf_call请求的后面,在第一个出现session id的请求前面(即服务器返回的带有session的响应数据是在第一个请求后返回到客户端的)51Testing软件测试网Qwk$p2Y%C*y.X/h3Gr~C

     lr_message("resp %s", lr_eval_string( "{resp}"));

    K$p)KMR./-I4V ja0

     lr_xml_get_values("XML={resp}", "ValueParam=seid","Query=/AMFPacket/AMFHeaders/AMFHeader/string",LAST);

    @"o w6C.R B0

     lr_xml_get_values("XML={resp}", "ValueParam=dsid","Query=//string[position() mod 4 = 2]",LAST);51Testing软件测试网 D&F#oV/I j$w _

     lr_message("seid %s", lr_eval_string( "{seid}"));51Testing软件测试网8Rd)Rq"~/

     lr_save_var(lr_eval_string("{seid}") + 12, 64, 0, "sid");51Testing软件测试网/fM5I!@YST2_n

     lr_message("sid %s", lr_eval_string( "{sid}")); //output sid

    9q#EwE K%?0

     lr_message("dsid %s", lr_eval_string( "{dsid}")); //output dsid51Testing软件测试网`AM o*z p(l

    l 在第一个flex_amf_call请求中的MESSAGE前面增加一行

    7jX}T!s1qO0

    "ResponseParameter=resp", //用于获取服务器响应中的内容51Testing软件测试网y i-n/S-mi+mD-I

     

    L{i*a3pbjN$/0

    3、 脚本参数化时的注意事项:

    ,D i:r?,D6|0

    l  分析脚本,对需要参数化的内容进行参数化;

    _-N4^s@{0

    l  参数化时,对于录制的数据和参数化的数据长度不一致而脚本解析不同时,需修改参数与其一致;51Testing软件测试网(@K1vDKsp,R1ru

    Eg: 密码: 666666->脚本解析为->/r66666651Testing软件测试网P;T o/G$} f&h*m

    1    ->脚本解析为->/x01

    olPq{U ?0

    l  对于不需参数化的变量(项目名称或ID等),给出注释,写明变量名称,便于后续的分析和查找有无遗漏的参数;51Testing软件测试网 UL0Lf S;vx6S

    l  对于换行的参数,替换时要完全替换,但换行符要保留;51Testing软件测试网,pIs+O0B Z

    l  参数化数据可通过连接数据库查询得到(必须安装Oracle客户端并建立本地Net服务名后方可)。Eg:51Testing软件测试网9lPL:k3C @.?

    在脚本中选择要替换的参数值,选择Replace with a Parameter->properties->Data Wizard…->Specify SQLstatement manu-Next->Create->新建文件数据源->选择Oracle in OraDb10g_home1->输入一个名字(如cc)->完成->在Oracle ODBC Driver Connect窗口中Service Name中输入在客户端程序(Net Configuration Assistant中创建一个本地Net服务名配置且测试成功)中配置的名字(大写,注不用输入数据库的IP地址),然后输入登陆数据库的用户名和密码->确定->选择cc数据源->确定->再次输入服务名(Service Name)/用户名(User Name)/密码(Password)[此时只输入空白处的密码即可,其他两项已经有刚才设置的数据了]->OK ->在Connection出显示一串数据eg:DRIVER={Oracle in OraDb10g_home1}; SERVER=SYSWIN25; UID=crm39;PWD=crm39; DBQ=SYSWIN25; DBA=W;APA=T; EXC=F;XSM=Default;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;BTD=F;BAM=IfAllSuccessful;NUM=NLS;DPM=F;MTS=T;MDI=Me;CSR=F;FWC=F;FBS=60000;TLO=O;51Testing软件测试网.z{lEZ+GWb%q

    然后在下面SQL中输入相应的查询语句即可->Finish,在参数列表中就可以看到数据了。

    (K%a!JlG IB%Fj`0

    l  对于参数化的数据最后是有规律的数据,这样可以通过excel表格下拉+1的方式生成;

    YKen1@,}2{'KU0

    l  对于有数据关联的情况,可以建立一个*.dat文件,然后从数据库中查询后导入,然后生成多列的参数化文件;

    #xArdz!d tbf2R~ {4E0

    l  一一检查需要参数化的内容,以防遗漏,全部参数化后,回放,回放无误后,另存一份脚本。Eg: login1_OK。51Testing软件测试网([ _/Yw t9v

    最新回复(0)