度过了一个冬眠,在春末夏初之际,补充自己的营养,努力学习,努力工作!

软件测试工具LoadRunner关联详解

上一篇 / 下一篇  2011-09-15 16:57:26 / 个人分类:LR文档

原文地址:http://softtest.chinaitlab.com/LoadRunner/843431.html
v&eK~JvM,o$a051Testing软件测试网 }1P:mD%~%B"@:LJ$r

l;meJf Utg!^0当录制脚本时,VuGen会拦截client端(浏览器)与server端(网站服务器)之间的对话,并且通通记录下来,产生脚本。在VuGen的Recording Log中,您可以找到浏览器与服务器之间所有的对话,包含通讯内容、日期、时间、浏览器的请求、服务器的响应内容等等。脚本和Recording Log最大的差别在于,脚本只记录了client端要对server端所说的话,而Recording Log则是完整纪录二者的对话。

%R;U1E+]?0W%J051Testing软件测试网3Pq/y|^Sg7c6sFg$P

  当执行脚本时,您可以把VuGen想象成是一个演员,它伪装成浏览器,然后根据脚本,把当初真的浏览器所说过的话,再对网站伺服器重新说一遍,VuGen企图骗过服务器,让服务器以为它就是当初的浏览器,然后把网站内容传送给VuGen。

y*{:~@ Ew8H3X;@H!Y0

;K2`@Sg(]Nc M0  所以纪录在脚本中要跟服务器所说的话,完全与当初录制时所说的一样,是写死的(hard-coded)。这样的作法在遇到有些比较聪明的服务器时,还是会失效。这时就需要透过「关联(correlation)」的做法来让VuGen可以再次成功地骗过服务器。

6P6qGc,~6n1p^ qz051Testing软件测试网-k|V~]Ga Yi

  何谓关联(correlation)?

A9D+ar~b}0

6fP%O O2p~3]$~0  所谓的关联(correlation)就是把脚本中某些写死的(hard-coded)数据,转变成是撷取自服务器所送的、动态的、每次都不一样的数据。

k*L#wKT7Q9i6M0

Zt\Q:Pzi0  举一个常见的例子,刚刚提到有些比较聪明的服务器,这些服务器在每个浏览器第一次跟它要数据时,都会在数据中夹带一个唯一的辨识码,接下来就会利用这个辨识码来辨识跟它要数据的是不是同一个浏览器。一般称这个辨识码为Session ID。对于每个新的交易,服务器都会产生新的Session ID给浏览器。这也就是为什么执行脚本会失败的原因,因为VuGen还是用旧的Session ID向服务器要数据,服务器会发现这个Session ID是失效的或是它根本不认识这个Session ID,当然就不会传送正确的网页数据给VuGen了。

j xs-e7n0

%L@1U-X'p(u c]0  下面的图示说明了这样的情形:51Testing软件测试网*\-T0O4C5~ Jq7|5A K

f] Ab*E7OiG4fm0  当录制脚本时,浏览器送出网页A的请求,服务器将网页A的内容传送给浏览器,并且夹带了一个ID=123的数据,当浏览器再送出网页B的情求时,这时就要用到ID=123的数据,服务器才会认为这是合法的请求,并且把网页B的内容送回给浏览器。

H1z\ V#C"x0DD051Testing软件测试网0{t2L QjY){5veu

  在执行脚本时会发生什么状况?浏览器再送出网页B的请求时,用的还是当初录制的ID=123的数据,而不是用服务器新给的ID=456,整个脚本的执行就会失败。

{&Ekt'Q(P0

Ro~)Uh7IQa0  要对付这种服务器,我们必须想办法找出这个Session ID到底是什么、位于何处,然后把它撷取下来,放到某个参数中,并且取代掉脚本中有用到Session ID的部份,这样就可以成功骗过服务器,正确地完成整个交易了。

AcK hH.r5lK V:n0

k|(_)q'm mhn G0  哪些错误代表着我应该做关联(correlation)?

7r,bL(g+]S@051Testing软件测试网 Y ZG3t&n rp

  假如脚本需要关联(correlation),在还没做之前是不会执行通过的,也就是说会有错误讯息发生。不过,很不幸地,并没有任何特定的错误讯息是和关联(correlation)有关系的。会出现什么错误讯息,与系统实做的错误处理机制有关。错误讯息有可能会提醒您要重新登入,但是也有可能直接就显示HTTP 404的错误讯息。

4S;n e#MPV051Testing软件测试网/Z+os0HB!ww h T:{4C2s%c

  要如何做关联(correlation)?51Testing软件测试网*?qL4Q1UGH K

51Testing软件测试网`L$t~){rh$C)^c

  关联(correlation)函数51Testing软件测试网x9R8kc/?)?N&s

51Testing软件测试网?(Z8PJ"ET$Z

  关联(correlation)会用到下列的函数:51Testing软件测试网0q3e:oC8HmOm

7k3k.jP N0  * web_reg_save_param:这是最新版,也是最常用来做关联(correlation)的函数。51Testing软件测试网N o,M9\,Wq-b1D

b.[MFd h0  语法:51Testing软件测试网z ?u9df9|

-UA,d5I.E'W#vP0  web_reg_save_param ( “Parameter Name” , < list of Attributes >, LAST );

B7Ic qnr0

H} SE$sMy0  * web_create_html_param、web_create_html_param_ex:这二个函数主要是保留作为向前兼容的目的的。建议使用 web_reg_save_param 函数。

o+} K }/I3IR1[051Testing软件测试网4}7aN/rz6?.CcY-Q

  详细用法请参考使用手册。在VuGen中点选【Help】>【Function reference】>【Contexts】>【Weband Wireless Vuser Functions】>【Correlation Functions】。

g+m:GDb"|*j0j/m:x:c)E+Y051Testing软件测试网$eQ Rl+y:}OH

  如何找出要关联(correlation)数据

l"p.m N \R051Testing软件测试网a5l4d~O3QX

  简单的说,每一次执行时都会变动的值,就有可能需要做关联(correlation)。51Testing软件测试网q*S0e?'oz8V

51Testing软件测试网"g.bL @#~B

  VuGen提供二种方式帮助您找出需要做关联(correlation)的值:51Testing软件测试网1Ft-_oC-ylmbkF

51Testing软件测试网n1v8C)k5RA P;U I

  1. 自动关联51Testing软件测试网X#N3j@'oi(HHT

51Testing软件测试网y.? m'N0Bo%x&j

  2. 手动关联51Testing软件测试网 e8ECbvd l-D

"S8_Zj/?Cy0  自动关联

7[N/j!?#P%bVL0

p ]&f6JxMh0  VuGen内建自动关联引擎(auto-correlation engine),可以自动找出需要关联的值,并且自动使用关联函数建立关联。

^E6wXNc3dU0

v`SyQ"I$irCOM0  自动关联提供下列二种机制:

vA HvV5[0

&?G_FXcZce0  * Rules Correlation:在录制过程中VuGen会根据订定的规则,实时自动找出要关联的值。规则来源有两种:

^"B'Za3c5x+\H0

3cEFC5Y|H7C0  o 内建(Built-in Correlation):51Testing软件测试网OTh.m9qm:UZa

51Testing软件测试网]-c*Nb N%eb+LM

  VuGen已经针对常用的一些应用系统,如AribaBuyer、BlueMartini、BroadVision、InterStage、mySAP、NetDynamics、Oracle、PeopleSoft、Siebel、SilverJRunner等,内建关联规则,这些应用系统可能会有一种以上的关联规则。您可以在【Recording Options】>【Internet Protocol】>【Correlation】中启用关联规则,则当录制这些应用系统的脚本时,VuGen会在脚本中自动建立关联。

Gk nS+?&F6B%D051Testing软件测试网};M8Dw;K qj

  您也可以在【Recording Options】>【Internet Protocol】>【Correlation】检视每个关联规则的定义。

+W `uI[8SA[1zH051Testing软件测试网!n v7Y4Dke%@B

  o 使用者自订(User-defined Rules Correlation):

([oh5L+yD7r$_G051Testing软件测试网6fN-[YV6u

  除了内建的关联规则之外,使用者也可以自订关联规则。您可以在【Recording Options】>【Internet Protocol】>【Correlation】建立新的关联规则。

{^N;z;E\~?0

K7p]? o0  * Correlation Studio:有别于Rules Correlation,Correlation Studio则是在执行脚本后才会建立关联,也就是说当录制完脚本后,脚本至少须被执行过一次,Correlation Studio才会作用。Correlation Studio会尝试找出录制时与执行时,服务器响应内容的差异部分,藉以找出需要关联的数据,并建立关联。51Testing软件测试网6Dxa%b!U"@wM

51Testing软件测试网9p K&TcLQ

  Rule Correlation51Testing软件测试网 n}F]CDnD

H~k|o$Nx)r0  请依照以下步骤使用Rule Correlation:

7fXD5L/Z%L,y0

%\b4Y*exQSX0  1. 启用auto-correlation51Testing软件测试网*xr/kv#l??;Y

51Testing软件测试网2H2b(`zb$i-fGl

  1. 点选VuGen的【Tools】>【Recording Options】,开启【Recording Options】对话窗口,选取【Internet Protocol】>【Correlation】,勾选【Enable correlation during recording】,以启用自动关联。51Testing软件测试网:gh5q Vn$`Aj c,B

0{ d&O.JO L1W0  2. 假如录制的应用系统属于内建关联规则的系统,如AribaBuyer、BlueMartini、BroadVision、InterStage、mySAP、NetDynamics、Oracle、PeopleSoft、Siebel、SilverJRunner等,请勾选相对应的应用系统。51Testing软件测试网5y*g5W4B }*S T

.T'WJ$l0l!V4w0  3. 或者也可以针对录制的应用系统加入新的关联规则,此即为使用者自订的关联规则。51Testing软件测试网U%^)sm^w;I S/nJ}

51Testing软件测试网3pvW4P2F

  4. 设定当VuGen侦测到符合关联规则的数据时,要如何处理:

o @qyn_d%Y&I0

}8OIG#g Vk%f7{+_@0  § 【Issue a pop-up message and let me decide online】:跳出一个讯息对话窗口,询问您是否要建立关联。

-k+Dj`$N/XN(S051Testing软件测试网PrU!h&h8q} J

  § 【Perform. correlation in sceipt】:直接自动建立关联

\XE ?,xv/M051Testing软件测试网(ptt~jMOd6s

  2. 录制脚本

z!Z"{2^4q051Testing软件测试网Ti&[(i j3L}?

  开始录制脚本,在录制过程中,当VuGen侦测到符合关联规则的数据时,会依照设定建立关联,您会在脚本中看到类似以下的脚本,此为BroadVision应用系统建立关联的例子,在脚本批注部分可以看到关联前的数据为何。51Testing软件测试网 {{3r h@9t `3B$N J

51Testing软件测试网| np8G5UE.d

  3. 执行脚本验证关联是OK的。

l a b6| }6QIP051Testing软件测试网D*fAZ#V\(C&C

  Correlation Studio

0{r&Qab ]o~k]0

0Hx"@:U(SlT e0  当录制的应用系统不属于VuGen预设支持的应用系统时,Rule Correlation可能既无法发挥作用,这时可以利用Correlation Studio来做关联。51Testing软件测试网O&x,~&Fq6E6\

51Testing软件测试网&l)Qd @,wvHv'[ L

  Correlation Studio会尝试找出录制时与执行时,服务器响应内容的差异部分,藉以找出需要关联的数据,并建立关联。

*Cbx:t&IY*dd0

7C+wz!A&x:Tq)D0  使用Correlation Studio的步骤如下:

_"d'jP0_0

/ky"w'h6p(Y0  1. 录制脚本并执行

W8[K4_?-]6M.T3i}0c051Testing软件测试网5WRD w6FNi

  2. 执行完毕后,VuGen会跳出下面的【Scan Action for Correlation】窗口,询问您是否要扫描脚本并建立关联,按下【Yes】按钮。

?pt$W ?0

!E8H#c7v \\N/xp0  3. 扫描完后,可以在脚本下方的【Correlation Results】中看到扫描的结果。

#k)T#D {X cR~,`0

y,\gL6t/ZR2M!d0  4. 检查一下扫瞄的结果后,选择要做关联的数据,然后按下【Correlate】按钮,一笔一笔做,或是按下【Correlate All】让VuGen一次就对所有的数据建立关联。

`2p!`$bk&s0

!t#H BL1N9J0  注意:由于Correlation Studio会找出所有有变动的数据,但是并不是所有的数据都需要做关联,所以不建议您直接用【Correlate All】。

dx(q6J'A,i051Testing软件测试网4czm^W

  5. 一般来说,您必须一直重复步骤1~4直到所有需要做关联的数据都找出来为止。因为有时前面的关联还没做好之前,将无法执行到后面需要做关联的部份。51Testing软件测试网#^7o"b#Bs!d-{%M8wP;R

51Testing软件测试网xU[ I3kf&~-G&f1f:\5U

  有可能有些需要做关联的动态数据,连Correlation Studio都无法侦测出来,这时您就需要自行做手动关联了。

Icz!WL)v0

1fR4B$@:gS1dg uR0  手动关联51Testing软件测试网f b}!T*D5p Ti

`0MXgBv5J0  手动关联的执行过程大致如下:

{3_3B6t%S| ^@Q7On051Testing软件测试网u~7TA4sW8ck h&l

  1. 使用相同的业务流程与数据,录制二份脚本51Testing软件测试网v4L~8[2t @I%V

{m,@3|%K0  2. 使用WinDiff工具协助找出需要关联的数据51Testing软件测试网jW"l4uq9U%J6Q1~

9X0G8rI Y?1E0  3. 使用web_reg_save_param函数手动建立关联

;g u5[9SE\Y-_0E051Testing软件测试网t]U o9p1r4S yg

  4. 将脚本中有用到关联的数据,以参数取代51Testing软件测试网c;v/o"a$v^L

w5mFV}ffm0  接下来将详细的说明如何执行每个步骤

WclvU-c \h,M~0

oA2U I#?[;X e"Q0  使用相同的业务流程与数据,录制二份脚本

#Fe u5t;QYy051Testing软件测试网$B;e)[C1K%N6l&a

  1. 先录制一份脚本并存档。51Testing软件测试网;lv w%XK\B%J

"H*W0} V;Nb8{r0  2. 依照相同的操作步骤与数据录制第二份脚本并存盘。注意,所有的步骤和输入的数据一定都要一样,这样才能找出由服务器端产生的动态数据。51Testing软件测试网V'U"p y6|0jv2a

i5F+U-J u2a0f0  有时候会遇到真的无法使用相同的输入数据,那您也要记住您使用的输入数据,到时才能判断是您输入的数据,还是变动的数据。

B-kn-zX051Testing软件测试网4FM5EI$U)I}S

51Testing软件测试网9AE9t+]{L)h

51Testing软件测试网*K _5L'T!Y!\[0OE

使用WinDiff工具协助找出需要关联的数据

R+dypWK2p6`c4j051Testing软件测试网`8Q(oM0tMR

  1. 在第二份脚本中,点选VuGen的【Tools】>【Compare with Vuser…】,并选择第一份脚本。

q2L7Uc `&C i051Testing软件测试网%\bp(gthO

  2. 接着WinDiff会开启,同时显示二份脚本,并显示有差异的地方。WinDiff会以一整行黄色标示有差异的脚本,并且以红色的字体显示真正差异的文字。(假如没看到红色字体,请点选【Options】>【View】>【Show Inline Differences】)。51Testing软件测试网i2@(| a-?(Uc/T

G~pD+IfYF ^ rc0  3. 逐一检视二份脚本中差异的部份,每一个差异都可能是需要做关联的地方。选取差异的脚本,然后复制。

*Nc$K4I#c#J0

et%fxZ?0  在复制时,有时并不需要取整行脚本,可能只会选取脚本中的一部分。

9iV a6wRXCN)`+Gd051Testing软件测试网;Q9|zY.r(GQ

  注意:请忽略lr_thik_time的差异部份,因为lr_thik_time是用来模拟每个步骤之间使用者思考延迟的时间。51Testing软件测试网 C[x-{|V O,F y2|

Z@ e9jHA/N]0  4. 接着要在Recording Log(单一protocol)或是Generation Log(多重protocol)中找这个值。将鼠标光标点到Recording Log的第一行开头,按下Ctrl+F,开启【Find】窗口,贴上刚刚复制的脚本,找出在Recording Log第一次出现的位置。51Testing软件测试网7b&N"[4TB5B

3JOk D|~ eD.E0  结果会有二种:51Testing软件测试网F0]qO-IF(R

51Testing软件测试网^hF`X ]:s&X

  o 在Recording Log中找不到要找的数据,这时请先确认您找对了脚本,毕竟现在开启了二个几乎一样的脚本,很容易弄错。

SjmD8Z5@'H1D0

'F\h:l&s%yEF0  o 在Recording Log中找到了要找的数据,这时要确认数据是从服务器端传送过来的。首先可以先检查数据的标头,从标头的Receiving response可以知道数据是从服务器端传送到client端的。假如此数据第一次出现是在Sending request中,则表示此数据是由client端产生,不需要做关联,但是有可能需要做参数化(parameterized)。

Jq.v0u;KL4e/Z0

-f&a Fh1L(I0  您要找的标头格式如下:51Testing软件测试网#F]E'_ |}0N

51Testing软件测试网,PbE9vjVQ/n

  *** [tid=b9 Action1 2] Receiving response from host astra.merc-int.com:80 ( 25/11/2002 12:04:00 )

-a@!]w,hmT051Testing软件测试网M']E7R'x-?%W%o;`]W

  5. 现在您已经找到录制二次都不一样,而且是由服务器所产生的动态数据了,而此数据极有可能需要做关联。51Testing软件测试网YUA#Mo#Bb

-lu9i v'rj0  使用web_reg_save_param函数手动建立关联51Testing软件测试网SXPH C)~

'G QZpf2lL~'J7F0  在找到是由服务器所产生的动态数据之后,接下来要做的就是找出适当的位置,使用web_reg_save_param函数,将这个动态数据撷取到某个参数中。

&j.S/N]_m5nul})Pp0

;C5~y ABe/H g0  1. 要在哪里使用web_reg_save_param函数?

9P,r0c:G+~ P$?r!j0

z'j;j9|B/Q:`p d0  在之前的步骤,我们已经在Execution Log找到可能需要关联的动态数据。在Execution Log中选取动态数据前的文字然后复制,我们将会利用这段文字,来帮助我们找出要关联的动态数据。51Testing软件测试网X5l.H]Ix

~'o ? g&yRS4\{0  不过在这之前我们要先找出使用web_reg_save_param函数的正确位置,所以我们要再重新执行一遍脚本,而且这次会开启所有的Log。51Testing软件测试网Cq^n]/Q[ N8E%zT

.tAq[D8e:[ Mw0_0  1. 在VuGen中点选【Vuser】>【Run-Time Settings】。51Testing软件测试网D9S)_/s4` c.xe"n

51Testing软件测试网-O9x\]_6a

  2. 点选【General】>【Log】。

1e x L2D^2S0

0[-H?+\!r0  3. 勾选【Enable logging】、【Always sends messages】、【Extended log】,以及【Extended log】下的所有选项。51Testing软件测试网0xsP6s,IcT`9`!a

U u3_"ZTGq0  4. 按下【OK】就可以执行脚本了。

]8@&QVa N"j1x%n0

"^&B3}a&oD6ok8e0  执行完脚本之后,在Execution Log中搜寻刚刚复制的字符串。找到字符串后,在字符串前面会有A.tion1.c(7),这个7就是到时候要插入web_reg_save_param函数的位置,也就是要插入到脚本的第7行。51Testing软件测试网~,YD[W3R&E o

51Testing软件测试网-u!m)jh6sR

  在脚本的第7行前插入一行空白行,然后输入51Testing软件测试网(d,N2gnEloWX R

51Testing软件测试网7iCd#A2_(X0N:?h5f

  web_reg_save_param(“UserSession”,51Testing软件测试网([vB2N? @l

e%H"[M fkUM1j0  “UserSession” 这个 “UserSession” 就是到时要使用的参数名称,建议给个有意义的名字。

2l Yr!F'@$O051Testing软件测试网 ^9A[4q7vO{

  注意:到这里整个web_reg_save_param函数还没完成。51Testing软件测试网jc+iO*T9v&@#_|A8X)fS

51Testing软件测试网5Bc;^ B%h$KR

  2. 找出web_reg_save_param中要用到的边界51Testing软件测试网2eR7GZP

2h {4V-A;Y%N7cY p"F,x0  web_reg_save_param函数主要是透过动态数据的前面和后面的固定字符串,来辨识要撷取的动态数据的,所以我们还需要找出动态数据的边界字符串。

5cz8B|4|q?+K0

0s3c DU;r#pd0m0  找出左边界字符串

-B;t?MHM8e-I#\u0

uCC7y%g;n-M0  再回到Execution Log中,选取动态数据前的字符串并且复制它。51Testing软件测试网 v1k*u4Z7W+e$TCK;];~

51Testing软件测试网 nITGP\P@

  这时会有个问题,到底要选取多少字符串才足以唯一识别要找的动态数据呢?建议是越多越好,但是尽量不要包含到特殊字符。

ez/X]HQY051Testing软件测试网u F!g Z4n*T

  在这边我们选取「input type=hidden name=userSession value=」字符串。选好之后,还要再确认一次这段字符串真的是可以唯一识别的,所以我们在Execution Log中透过Ctrl+F的搜寻,找找看这段字符串是否可以找到要找的动态数据。假如找不到,web_reg_save_param函数还有个ORD参数可以使用,ORD参数可以设定出现在第几次的字符串才是要找的字符串。

Y/_Q*aks0

hb3I$k&T0  将这个边界字符串加到未完成的web_reg_save_param函数中:

Jr i1igO^0

)B"a/TG.@1t#W0  web_reg_save_param(“UserSession”, “LB= input type=hidden name=userSession value=”,

Tt&c2TT6sg051Testing软件测试网]kc7Y_[+|

  找出右边界字符串

u-M%i?'Ju!VW T051Testing软件测试网%e2gco/C7@

  接下来要找出动态数据的右边界字符串,这个字符串就比较好找了,从动态数据的最后一个字符开始,通常就是我们要找的右边界字符串了。51Testing软件测试网#Dsu*~]o `-iZ:J

xouL#B [,o4F0  以这个例子来看,就是「>」,所以再把右边界字符串加入,web_reg_save_param函数中,这时web_reg_save_param函数已经快完成了。最后再加上「LAST);」就完成整个web_reg_save_param函数了。

!B"X"R8SmI"C z;f1P051Testing软件测试网/dXKk/_yna)d

  web_reg_save_param(“UserSession”, “LB= input type=hidden name=userSession value=”, “RB=>”, LAST);51Testing软件测试网7qF [&p p3hv

/V3}6\&Z6]n$J0  将脚本中有用到关联的数据,以参数取代

Nly O j9g051Testing软件测试网{&H2iO VgG*~

  当使用web_reg_save_param建立参数后,接下来就是用“UserSession”参数去取代脚本中写死的(hard-coded)资料。51Testing软件测试网 H U;r*_;ch8Ir

51Testing软件测试网g)E/Aon@G0cv

  范例:51Testing软件测试网.lL zq'd}8e%m9J

_,wX;t~X0  将51Testing软件测试网({;c5W(y8`1G v

%?9ha t:rq0  “Name=userSession”, “Value=75893.0884568651DQADHfApHDHfcDtccpfAttcf”, ENDITEM,

_(Jh(^/A]8~ L0

6{Rz9todIP"e g0  换成51Testing软件测试网LD}PZd4}X

51Testing软件测试网&FN-^c"A2Y

  “Name=userSession”, “Value={UserSession}”, ENDITEM,

2j Cn~({K S051Testing软件测试网6W.c4Lj^NaG#L8n:B

  到这里您已经完成了一个关联了,接下来就是执行脚本,是否能成功运行,假如还是有问题,就要检查看看是否还需要再做另一个关联。51Testing软件测试网?$vtp'u,dc \j0F3r

51Testing软件测试网#~@+}*dT}(Ck4k

  关于 web_reg_save_param 函数

+KP)[v A PI0

XV I4i[)}_#T XOY8l0  对于关联(correlation)来说,web_reg_save_param是最重要的一个函数,其功能是在下载的网页内容中,透过设定的边界字符串,找出特定的数据并将其储存在一个参数中,以供后续脚本使用。51Testing软件测试网"at2G:TOt

I.C*`8HN3}|C0  接下来将针对web_reg_save_param做比较详细的说明。51Testing软件测试网x!kq#DBWT"Y

:Q gvW7H1q0  Service and registration type function

X7m"Dr3@'TJ0

{x.[ v,u$z&G0  web_reg_save_param是一个Service function。service function主要是用来完成一些特殊的工作的,如关联、设定proxy、提供认证信息等,当其作用时,不会对网页的内容做任何的修改。51Testing软件测试网RDS$y J'Q5BC!t |

51Testing软件测试网)tf#O |6k7R

  web_reg_save_param同时也是一个registration type function (只要函数名称中包含_reg_的字眼,表示其为registration type function)。registration type function意味着其真正作用的时机是在下一个action function完成时执行的。举例来说,当某个web_url执行时所接收到的网页内容中包含了要做关联的动态数据,则必须将web_reg_save_param放在此web_url之前,则web_reg_save_param会在web_url执行完毕后,也就是网页内容都下载完后,再执行web_reg_save_param找寻要做关联的动态数据并建立参数。

"G!\ L)K6Rv0

f)EEpej8{ ?0  所以要记住一点,要使用registration type function时,要注意其放置的位置必须在要作用的action function之前。

!k*x(c-AVY3K0u051Testing软件测试网Vtrt*P:R

  语法51Testing软件测试网;WP%`4X-\

M*H#ny{] p2w/o0  int web_reg_save_param(const char *ParamName, <list of Attributes>, LAST);51Testing软件测试网a{T5^q oa*q&ppd

51Testing软件测试网 I _ _9?%{9X

  参数说明51Testing软件测试网ols(Kz2F

pq3l o,np0  ParamName:存放动态数据的参数名称51Testing软件测试网/FL|w^c

Y*Uy"^ Np9D?0  list of Attributes:其它属性,包含 Notfound, LB, RB, RelFrameID, Search, ORD, SaveOffset, Convert, 以及 SaveLen。属性值不分大小写,例如 Search=all。以下将详细说明每个属性值的意义:51Testing软件测试网-bBU2jb(C[*R&dI{1Z

Cbog{)HD9Q[0  * Notfound:指定当找不到要找的动态数据时该怎么处置。

5Bm/g7S;U051Testing软件测试网P3n}9W1M?2P/R"d

  o Notfound=error:当找不到动态数据时,发出一个错误讯息。假如没设定此属性,此为LoadRunner的默认值。

\&NuO#Q_mp.u0

"}-G$R m(z!H$Q d,I0  o Notfound=warning:当找不到动态数据时,不发出错误讯息,只发出警告,脚本也会继续执行下去不会中断。在对角本除错时,可以使用此属性值。

3JO6pDW_l2}:Cn0

tT+a*b2] D?0  * LB:动态数据的左边界字符串。此属性质是必须要有的,而且区分大小写。51Testing软件测试网2X[$B~U3]

51Testing软件测试网"g+|]3N Q

  * RB:动态数据的右边界字符串。此属性质是必须要有的,而且区分大小写。51Testing软件测试网/Q.yxw,G+V

r:^;_)AFi0  * RelFrameID:相对于URL而言,欲搜寻的网页的Frame。此属性质可以是All或是数字,而且可有可无。

m*?%M.B#m f0

GR R9O,S)vZ+OO0  * Search:搜寻的范围。可以是Headers(只搜寻headers)、Body(只搜寻body部分,不搜寻header)、Noresource(只搜寻body部分,不搜寻header与resource)或是All(搜寻全部范围,此为默认值)。此属性质可有可无。

!y(fJ4u Vl051Testing软件测试网&a!fhf.B4T7c8s

  * ORD:指明从第几次出现的左边界开始才是要撷取的数据。此属性质可有可无,默认值是1。假如值为All,则所有找到符合的数据会储存在数组中。51Testing软件测试网$b:JNG:M1h)C,o-Z

51Testing软件测试网IoS(^0o

  * SaveOffset:当找到符合的动态数据时,从第几个字符开始才开始储存到参数中。此属性质不可为负数,其默认值为0。

(A E[d6L/wf051Testing软件测试网,n:{ x#i@2rBA

  * Convert:可能的值有二种:51Testing软件测试网 P K#{-};fF1U%P

51Testing软件测试网_'a5xH!Je

  o HTML_TO_URL: 将HTML-encoded数据转成URL-encoded数据格式51Testing软件测试网;~T5\c*v9`e4z.^/`

51Testing软件测试网:S8b!IOF I1AE0}~v|

  o HTML_TO_TEXT:将HTML-encoded数据转成纯文字数据格式

_p.^f @}B3yXE0

*c,nw?lW$H0  * SaveLen:从offect开始算起,到指定的长度内的字符串,才储存到参数中。此参数可有可无,默认值是-1,表示储存到结尾整个字符串。

&j)LC9c'\ E051Testing软件测试网G-A(JPSu8D-j-M

  范例

r^~(n8\d)F0

)ZHK&kTw |0  web_reg_save_param("A", "LB/ic=<a href=", "RB='>", "Ord=All", LAST);nner会搜寻网页中所有以 「<a href=」 开头,且以 「’>」结束,当中包含的字符串,并且储存在「A」参数中。

j5]I+_!U{ LF0[p0

G9p;j-LVk;yS:DNX `8}0  Tips and Tricks

7i]wF.F9r"h4k%z0

?lg,dr1pjv0  以下提供一些关联的常见问题:

uJb4{#z5i l0

@I n@$C,Mot[0  * 如何打印出参数值?51Testing软件测试网UPMxl0rC

51Testing软件测试网4G*zp_ SD!O.D.i

  lr_output_message这二个函数来做到。例如:51Testing软件测试网OR)v UWmI0K

$Ywg;yDq ai0  lr_output_message(“Value Captured = %s”, lr_eval_string(“{ParameterName}”));

Vq0Q+X[G#S^ wP0

CY0z W*X0  lr_eval_string与lr_output_message函数的使用说明请参考LoadRunner Online Function Reference。

(J9A6gY&KX&}{o j!o051Testing软件测试网9l ]r"L1e:q^T ]B

  * 在脚本的data目录下找不到路制时的快照(snapshot)51Testing软件测试网o^ C%X#KRq

/`_ X)]*?/y`GA:LG0  造成在脚本的data目录下找不到路制时的快照(snapshot)的可能原因如下:

\~$VY Ta7EZ0

:ZctY$z l0  o 脚本是由VuGen 6.02或更早的版本所录制的51Testing软件测试网)Xb%Vd3Pkf-\

51Testing软件测试网$af5KYz5O~^

  o 汇入的Action不会包含快照(snapshot)的档案51Testing软件测试网6mq d6j2QO2i

5{&W+T/})U+D(Sm0  o 脚本是储存在只读的目录下,早成VuGen无法储存执行时撷取的快照(snapshot)51Testing软件测试网 xq G8u A1G6K

ur&?v ?|0  o 某些步骤并不会产生快照(snapshot),如浏览某个资源51Testing软件测试网8o/OT s/~@

51Testing软件测试网FTPh(pc

  o 快照(snapshot)功能被取消

\Abmvc(z2x051Testing软件测试网{ILUS%\

  【Tools】>【General options】>【Correlation】tab >【Save correlation information during replay】

|&I-E$P Q*I051Testing软件测试网'KM+N:f.d9OCfh

  * 开启WinDiff时出现「File no longer available」的错误讯息51Testing软件测试网c@WS,l:k

51Testing软件测试网KEPK~5SP

  WinDiff这个工具有些限制,无法开启包含空格符的目录或是脚本,所以建议命名时不要使用空格符,并且尽可能将名称取短一点。51Testing软件测试网4Mry{;K%JM

51Testing软件测试网\*B3Df$s.c,?U

  * 录制时突然跳出【Correlation warning】对话窗口51Testing软件测试网u? }"lS8Uc

51Testing软件测试网f`Y8w7HI%b%_1Mo

  当你有勾选自动关联的【Issue a popup message and let me decide online】选项,当VuGen发现有可能要做关联的数据时,就会跳出【Correlation warning】的窗口,询问你要做关联(Correlation in scrīpt)还是要忽略(Ignore)。51Testing软件测试网 X6GYig

#u#Z;yAO X doq0  另外你也可以勾选【Perform. correlation in scrīpt】,让VuGen自动作关联,不会再跳出询问窗口。51Testing软件测试网F8l dw7U!eU

A;J"G(A,i"c s P T0  或是勾选【Disable correlation engine】,关闭自动关联的功能。

;Dx vi8e+C0

V2P a4|XGd0  * 如何手动启动「Scan action for correlation」的功能

s*E-}dS2C0

q*zM0L:l^1Q0  要手动启动「Scan action for correlation」的功能,请先执行脚本一次后,点选【Vuser】>【Scan Action for Correlation】。51Testing软件测试网aHqtA Q.h5k.|

51Testing软件测试网4u? V Ajh5I;h

  * 执行完脚本后并未出现【Scan Action for Correlation】窗口

"Fa},r7}.|4dm0

8Eh](YKZ(S]4Z t+n0  要启用【Scan Action for Correlation】功能,请点选【Tools】>【General options】>【Correlation】tab,勾选【Show Scan for correlation popup after replay of Vuser】选项。

2_3GR c1]0la8v0
`'\7~2FXvd|0

TAG:

安安 引用 删除 1595819808   /   2011-09-16 11:39:00
好文章  要了
 

评分:0

我来说两句

Open Toolbar