如何在脚本中做关联(在网络上搜到的)
如何在 LoadRunner 脚本中做关联 (Correlation)51Testing软件测试网8fOQR$cE#[Jr
当录制脚本时,VuGen会拦截client端(浏览器)与server端(网站服务器)之间的对话,并且通通记录下来,产生脚本。在VuGen的Recording Log中,您可以找到浏览器与服务器之间所有的对话,包含通讯内容、日期、时间、浏览器的请求、服务器的响应内容等等。脚本和Recording Log最大的差别在于,脚本只记录了client端要对server端所说的话,而Recording Log则是完整纪录二者的对话。51Testing软件测试网-J-]:B#F0Sin
51Testing软件测试网1Z3S/Jm,KwBD
当执行脚本时,您可以把VuGen想象成是一个演员,它伪装成浏览器,然后根据脚本,把当初真的浏览器所说过的话,再对网站伺服器重新说一遍,VuGen企图骗过服务器,让服务器以为它就是当初的浏览器,然后把网站内容传送给VuGen。
H6ds"x-g w^0所以纪录在脚本中要跟服务器所说的话,完全与当初录制时所说的一样,是写死的(hard-coded)。这样的作法在遇到有些比较聪明的服务器时,还是会失效。这时就需要透过「关联(correlation)」的做法来让VuGen可以再次成功地骗过服务器。51Testing软件测试网L g x V2esNG
何谓关联(correlation)?51Testing软件测试网'q-v D\%bV
所谓的关联(correlation)就是把脚本中某些写死的(hard-coded)数据,转变成是撷取自服务器所送的、动态的、每次都不一样的数据。
T\ Lt"l&}R\0举一个常见的例子,刚刚提到有些比较聪明的服务器,这些服务器在每个浏览器第一次跟它要数据时,都会在数据中夹带一个唯一的辨识码,接下来就会利用这个辨识码来辨识跟它要数据的是不是同一个浏览器。一般称这个辨识码为Session ID。对于每个新的交易,服务器都会产生新的Session ID给浏览器。这也就是为什么执行脚本会失败的原因,因为VuGen还是用旧的Session ID向服务器要数据,服务器会发现这个Session ID是失效的或是它根本不认识这个Session ID,当然就不会传送正确的网页数据给VuGen了。 (比如饭票,当月使用可以,下月使用就过期了,食堂和用户手里都有这个饭票)51Testing软件测试网y!P(^O6_ZI n I)sV4x%L
下面的图示说明了这样的情形:51Testing软件测试网sf;d|)rOyI[$I3O7W
当录制脚本时,浏览器送出网页A的请求,服务器将网页A的内容传送给浏览器,并且夹带了一个ID=123的数据,当浏览器再送出网页B的情求时,这时就要用到ID=123的数据,服务器才会认为这是合法的请求,并且把网页B的内容送回给浏览器。
*H$?b(vI;N*oj0在执行脚本时会发生什么状况?浏览器再送出网页B的请求时,用的还是当初录制的ID=123的数据,而不是用服务器新给的ID=456,整个脚本的执行就会失败。
m"x QPOU,S\?051Testing软件测试网&NtQ yY*~%nOU3w k$r
要对付这种服务器,我们必须想办法找出这个Session ID到底是什么、位于何处,然后把它撷取下来,放到某个参数中,并且取代掉脚本中有用到Session ID的部份,这样就可以成功骗过服务器,正确地完成整个交易了。
'_"O4]^@-V*A0哪些错误代表着我应该做关联(correlation)?51Testing软件测试网`Xb#D"Ls5p.~
假如脚本需要关联(correlation),在还没做之前是不会执行通过的,也就是说会有错误讯息发生。不过,很不幸地,并没有任何特定的错误讯息是和关联(correlation)有关系的。会出现什么错误讯息,与系统实做的错误处理机制有关。错误讯息有可能会提醒您要重新登入,但是也有可能直接就显示HTTP 404的错误讯息。
9biT({$c][1{G0要如何做关联(correlation)?51Testing软件测试网&m5vkI w(s+n;N
关联(correlation)函数
GD$k7l%Tmy0关联(correlation)会用到下列的函数:
w| J;^jL7\T0R1k0• web_reg_save_param:这是最新版,也是最常用来做关联(correlation)的函数。
/r:uz,bGHW|0语法:
t+|6`,rVX0web_reg_save_param ( “Parameter Name” , < list of Attributes >, LAST );
.NV S/A.s^[^;_+@0• web_create_html_param、web_create_html_param_ex:这二个函数主要是保留作为向前兼容的目的的。建议使用 web_reg_save_param 函数。51Testing软件测试网,gXaU5H
详细用法请参考使用手册。在VuGen中点选【Help】>【Function reference】>【Contexts】>【Web and Wireless Vuser Functions】>【Correlation Functions】。51Testing软件测试网'\,U;F-J @8~+I MF
如何找出要关联(correlation)数据
Qc*F7c0^&Z/{0简单的说,每一次执行时都会变动的值,就有可能需要做关联(correlation)。51Testing软件测试网n6_e0l(jO!{/h_
VuGen提供二种方式帮助您找出需要做关联(correlation)的值:
Au Y+Tl8c^7d01. 自动关联
&tN+kp`Ov%{o02. 手动关联
,b0Q8C:U1`wX0自动关联51Testing软件测试网)P+M(H ZlB.R
VuGen内建自动关联引擎(auto-correlation engine),可以自动找出需要关联的值,并且自动使用关联函数建立关联。
S)afUhzeU0自动关联提供下列二种机制:51Testing软件测试网l$AX#S5_4I3s:hP
• Rules Correlation:在录制过程中VuGen会根据订定的规则,实时自动找出要关联的值。规则来源有两种:
xg(wyLC U A%j{+n0o 内建(Built-in Correlation):
"s;zH7U2`&o&B Ji0VuGen已经针对常用的一些应用系统,如AribaBuyer、BlueMartini、BroadVision、InterStage、mySAP、NetDynamics、Oracle、PeopleSoft、Siebel、SilverJRunner等,内建关联规则,这些应用系统可能会有一种以上的关联规则。您可以在【Recording Options】>【Internet Protocol】>【Correlation】中启用关联规则,则当录制这些应用系统的脚本时,VuGen会在脚本中自动建立关联。51Testing软件测试网b(L.zUBf
您也可以在【Recording Options】>【Internet Protocol】>【Correlation】检视每个关联规则的定义。
&y(Ej @ZJ0o 使用者自订(User-defined Rules Correlation):51Testing软件测试网1D D4_+p3YA
除了内建的关联规则之外,使用者也可以自订关联规则。您可以在【Recording Options】>【Internet Protocol】>【Correlation】建立新的关联规则。51Testing软件测试网0U\,i7y9{A;LJ
• Correlation Studio:有别于Rules Correlation,Correlation Studio则是在执行脚本后才会建立关联,也就是说当录制完脚本后,脚本至少须被执行过一次,Correlation Studio才会作用。Correlation Studio会尝试找出录制时与执行时,服务器响应内容的差异部分,藉以找出需要关联的数据,并建立关联。51Testing软件测试网u*[j+LS+H-Zge+F
Rule Correlation
6}An$]pqL_"}0请依照以下步骤使用Rule Correlation:
"Tb@T7uH01. 启用auto-correlation51Testing软件测试网Z6G ]kgULBKL&V U
1. 点选VuGen的【Tools】>【Recording Options】,开启【Recording Options】对话窗口,选取【Internet Protocol】>【Correlation】,勾选【Enable correlation during recording】,以启用自动关联。
k1r!vQS02. 假如录制的应用系统属于内建关联规则的系统,如AribaBuyer、BlueMartini、BroadVision、InterStage、mySAP、NetDynamics、Oracle、PeopleSoft、Siebel、SilverJRunner等,请勾选相对应的应用系统。
M8cw3x{u/L03. 或者也可以针对录制的应用系统加入新的关联规则,此即为使用者自订的关联规则。51Testing软件测试网~_7BmEf
4. 设定当VuGen侦测到符合关联规则的数据时,要如何处理:51Testing软件测试网*hB4~I%{^
【Issue a pop-up message and let me decide online】:跳出一个讯息对话窗口,询问您是否要建立关联。51Testing软件测试网Wj/`b"nd
【Perform correlation in sceipt】:直接自动建立关联51Testing软件测试网?Pb JN9Z8El
2. 录制脚本
W2}qkONu0开始录制脚本,在录制过程中,当VuGen侦测到符合关联规则的数据时,会依照设定建立关联,您会在脚本中看到类似以下的脚本,此为BroadVision应用系统建立关联的例子,在脚本批注部分可以看到关联前的数据为何。
0g9b$r-r!G_j t1HG0
} H(^r_T^7]"Q)d03. 执行脚本验证关联是OK的。51Testing软件测试网FJ^8q2Q%E}l
Correlation Studio
tv.W)n2a0当录制的应用系统不属于VuGen预设支持的应用系统时,Rule Correlation可能既无法发挥作用,这时可以利用Correlation Studio来做关联。
pYO0uwW5aA0Correlation Studio会尝试找出录制时与执行时,服务器响应内容的差异部分,藉以找出需要关联的数据,并建立关联。51Testing软件测试网$xVDfwQq%_
使用Correlation Studio的步骤如下:
Q F} ob!yO(wC01. 录制脚本并执行51Testing软件测试网)m-S0_/w\)^
2. 执行完毕后,VuGen会跳出下面的【Scan Action for Correlation】窗口,询问您是否要扫描脚本并建立关联,按下【Yes】按钮。51Testing软件测试网 YJ7lr!_"`4T5wh4J
NNam_(c1H03. 扫描完后,可以在脚本下方的【Correlation Results】中看到扫描的结果。51Testing软件测试网 a+rN1Fy&To
51Testing软件测试网C;^B%?*qj)y
4. 检查一下扫瞄的结果后,选择要做关联的数据,然后按下【Correlate】按钮,一笔一笔做,或是按下【Correlate All】让VuGen一次就对所有的数据建立关联。
){]]eH%}/e0注意:由于Correlation Studio会找出所有有变动的数据,但是并不是所有的数据都需要做关联,所以不建议您直接用【Correlate All】。51Testing软件测试网%z!XX0m*]1` |
5. 一般来说,您必须一直重复步骤1~4直到所有需要做关联的数据都找出来为止。因为有时前面的关联还没做好之前,将无法执行到后面需要做关联的部份。
XHm7U5]P$u(p.`0有可能有些需要做关联的动态数据,连Correlation Studio都无法侦测出来,这时您就需要自行做手动关联了。51Testing软件测试网9?&csylX+G'P
手动关联
D3A9m7i#E~"Uk0手动关联的执行过程大致如下:51Testing软件测试网_6bLc.eN k
1. 使用相同的业务流程与数据,录制二份脚本51Testing软件测试网;R+U N,L"@/Xaz
2. 使用WinDiff工具协助找出需要关联的数据51Testing软件测试网7ei fg'~/Qmtj
3. 使用web_reg_save_param函数手动建立关联51Testing软件测试网Gx,RV4U:}M_i
4. 将脚本中有用到关联的数据,以参数取代51Testing软件测试网PH%Dh@xBE
接下来将详细的说明如何执行每个步骤51Testing软件测试网_+W9^6Pdm
使用相同的业务流程与数据,录制二份脚本51Testing软件测试网 H0c7fD/~}:{
1. 先录制一份脚本并存档。51Testing软件测试网l;Vh4I"WPjU
2. 依照相同的操作步骤与数据录制第二份脚本并存盘。注意,所有的步骤和输入的数据一定都要一样,这样才能找出由服务器端产生的动态数据。
5qM5k l+vR ?0有时候会遇到真的无法使用相同的输入数据,那您也要记住您使用的输入数据,到时才能判断是您输入的数据,还是变动的数据。
|+T!f6m+frmYX0使用WinDiff工具协助找出需要关联的数据
1lC2i:O+s,B01. 在第二份脚本中,点选VuGen的【Tools】>【Compare with Vuser…】,并选择第一份脚本。
1X Yu[0m)C6|d1o1?7g02. 接着WinDiff会开启,同时显示二份脚本,并显示有差异的地方。WinDiff会以一整行黄色标示有差异的脚本,并且以红色的字体显示真正差异的文字。(假如没看到红色字体,请点选【Options】>【View】>【Show Inline Differences】)。
$Jg!nTiO-Y03. 逐一检视二份脚本中差异的部份,每一个差异都可能是需要做关联的地方。选取差异的脚本,然后复制。51Testing软件测试网;V$gJ q$s*\ Y z
在复制时,有时并不需要取整行脚本,可能只会选取脚本中的一部分。51Testing软件测试网y |&aFg~O*K
注意:请忽略lr_thik_time的差异部份,因为lr_thik_time是用来模拟每个步骤之间使用者思考延迟的时间。51Testing软件测试网d|(OM5|)MQ XII
gJW^s04. 接着要在Recording Log(单一protocol)或是Generation Log(多重protocol)中找这个值。将鼠标光标点到Recording Log的第一行开头,按下Ctrl+F,开启【Find】窗口,贴上刚刚复制的脚本,找出在Recording Log第一次出现的位置。
*}&^![m1HJ1_!{.N0
WOdgY]o(z| G0结果会有二种:
"{*f a(ggG7? }#uF&c0o 在Recording Log中找不到要找的数据,这时请先确认您找对了脚本,毕竟现在开启了二个几乎一样的脚本,很容易弄错。
.m:m+QD}6zQ0o 在Recording Log中找到了要找的数据,这时要确认数据是从服务器端传送过来的。首先可以先检查数据的标头,从标头的Receiving response可以知道数据是从服务器端传送到client端的。假如此数据第一次出现是在Sending request中,则表示此数据是由client端产生,不需要做关联,但是有可能需要做参数化(parameterized)。51Testing软件测试网2Yw#zq[*j%e'e,\T(G
您要找的标头格式如下:
a3}{-`} [cx|7_0*** [tid=b9 Action1 2] Receiving response from host astra.merc-int.com:80 ( 25/11/2002 12:04:00 )
D9T;A!s3C+g051Testing软件测试网 EgGy;Jwk Z/^*p
5. 现在您已经找到录制二次都不一样,而且是由服务器所产生的动态数据了,而此数据极有可能需要做关联。
Yq6o5X h%S0使用web_reg_save_param函数手动建立关联
+] FU3@~Lw0在找到是由服务器所产生的动态数据之后,接下来要做的就是找出适当的位置,使用web_reg_save_param函数,将这个动态数据撷取到某个参数中。51Testing软件测试网R1L"x;]a!vv1}
1. 要在哪里使用web_reg_save_param函数?51Testing软件测试网4J.cx+p9w;X
在之前的步骤,我们已经在Execution Log找到可能需要关联的动态数据。在Execution Log中选取动态数据前的文字然后复制,我们将会利用这段文字,来帮助我们找出要关联的动态数据。51Testing软件测试网/Q*M L/nreifi
51Testing软件测试网5PL r M1b\n*Z
不过在这之前我们要先找出使用web_reg_save_param函数的正确位置,所以我们要再重新执行一遍脚本,而且这次会开启所有的Log。51Testing软件测试网'\M7l(_r$o:^
1. 在VuGen中点选【Vuser】>【Run-Time Settings】。51Testing软件测试网 nW Nh5^1xq,q5z
2. 点选【General】>【Log】。51Testing软件测试网[]*gk5O[.A#XT
3. 勾选【Enable logging】、【Always sends messages】、【Extended log】,以及【Extended log】下的所有选项。
I^tljtb3t0Q%h04. 按下【OK】就可以执行脚本了。51Testing软件测试网#wNy3cD5w [+x Su
执行完脚本之后,在Execution Log中搜寻刚刚复制的字符串。找到字符串后,在字符串前面会有A.tion1.c(7),这个7就是到时候要插入web_reg_save_param函数的位置,也就是要插入到脚本的第7行。
9K*q ll }1_B&o0在脚本的第7行前插入一行空白行,然后输入
当录制脚本时,VuGen会拦截client端(浏览器)与server端(网站服务器)之间的对话,并且通通记录下来,产生脚本。在VuGen的Recording Log中,您可以找到浏览器与服务器之间所有的对话,包含通讯内容、日期、时间、浏览器的请求、服务器的响应内容等等。脚本和Recording Log最大的差别在于,脚本只记录了client端要对server端所说的话,而Recording Log则是完整纪录二者的对话。51Testing软件测试网-J-]:B#F0Sin
51Testing软件测试网1Z3S/Jm,KwBD
当执行脚本时,您可以把VuGen想象成是一个演员,它伪装成浏览器,然后根据脚本,把当初真的浏览器所说过的话,再对网站伺服器重新说一遍,VuGen企图骗过服务器,让服务器以为它就是当初的浏览器,然后把网站内容传送给VuGen。
H6ds"x-g w^0所以纪录在脚本中要跟服务器所说的话,完全与当初录制时所说的一样,是写死的(hard-coded)。这样的作法在遇到有些比较聪明的服务器时,还是会失效。这时就需要透过「关联(correlation)」的做法来让VuGen可以再次成功地骗过服务器。51Testing软件测试网L g x V2esNG
何谓关联(correlation)?51Testing软件测试网'q-v D\%bV
所谓的关联(correlation)就是把脚本中某些写死的(hard-coded)数据,转变成是撷取自服务器所送的、动态的、每次都不一样的数据。
T\ Lt"l&}R\0举一个常见的例子,刚刚提到有些比较聪明的服务器,这些服务器在每个浏览器第一次跟它要数据时,都会在数据中夹带一个唯一的辨识码,接下来就会利用这个辨识码来辨识跟它要数据的是不是同一个浏览器。一般称这个辨识码为Session ID。对于每个新的交易,服务器都会产生新的Session ID给浏览器。这也就是为什么执行脚本会失败的原因,因为VuGen还是用旧的Session ID向服务器要数据,服务器会发现这个Session ID是失效的或是它根本不认识这个Session ID,当然就不会传送正确的网页数据给VuGen了。 (比如饭票,当月使用可以,下月使用就过期了,食堂和用户手里都有这个饭票)51Testing软件测试网y!P(^O6_ZI n I)sV4x%L
下面的图示说明了这样的情形:51Testing软件测试网sf;d|)rOyI[$I3O7W
当录制脚本时,浏览器送出网页A的请求,服务器将网页A的内容传送给浏览器,并且夹带了一个ID=123的数据,当浏览器再送出网页B的情求时,这时就要用到ID=123的数据,服务器才会认为这是合法的请求,并且把网页B的内容送回给浏览器。
*H$?b(vI;N*oj0在执行脚本时会发生什么状况?浏览器再送出网页B的请求时,用的还是当初录制的ID=123的数据,而不是用服务器新给的ID=456,整个脚本的执行就会失败。
m"x QPOU,S\?051Testing软件测试网&NtQ yY*~%nOU3w k$r
要对付这种服务器,我们必须想办法找出这个Session ID到底是什么、位于何处,然后把它撷取下来,放到某个参数中,并且取代掉脚本中有用到Session ID的部份,这样就可以成功骗过服务器,正确地完成整个交易了。
'_"O4]^@-V*A0哪些错误代表着我应该做关联(correlation)?51Testing软件测试网`Xb#D"Ls5p.~
假如脚本需要关联(correlation),在还没做之前是不会执行通过的,也就是说会有错误讯息发生。不过,很不幸地,并没有任何特定的错误讯息是和关联(correlation)有关系的。会出现什么错误讯息,与系统实做的错误处理机制有关。错误讯息有可能会提醒您要重新登入,但是也有可能直接就显示HTTP 404的错误讯息。
9biT({$c][1{G0要如何做关联(correlation)?51Testing软件测试网&m5vkI w(s+n;N
关联(correlation)函数
GD$k7l%Tmy0关联(correlation)会用到下列的函数:
w| J;^jL7\T0R1k0• web_reg_save_param:这是最新版,也是最常用来做关联(correlation)的函数。
/r:uz,bGHW|0语法:
t+|6`,rVX0web_reg_save_param ( “Parameter Name” , < list of Attributes >, LAST );
.NV S/A.s^[^;_+@0• web_create_html_param、web_create_html_param_ex:这二个函数主要是保留作为向前兼容的目的的。建议使用 web_reg_save_param 函数。51Testing软件测试网,gXaU5H
详细用法请参考使用手册。在VuGen中点选【Help】>【Function reference】>【Contexts】>【Web and Wireless Vuser Functions】>【Correlation Functions】。51Testing软件测试网'\,U;F-J @8~+I MF
如何找出要关联(correlation)数据
Qc*F7c0^&Z/{0简单的说,每一次执行时都会变动的值,就有可能需要做关联(correlation)。51Testing软件测试网n6_e0l(jO!{/h_
VuGen提供二种方式帮助您找出需要做关联(correlation)的值:
Au Y+Tl8c^7d01. 自动关联
&tN+kp`Ov%{o02. 手动关联
,b0Q8C:U1`wX0自动关联51Testing软件测试网)P+M(H ZlB.R
VuGen内建自动关联引擎(auto-correlation engine),可以自动找出需要关联的值,并且自动使用关联函数建立关联。
S)afUhzeU0自动关联提供下列二种机制:51Testing软件测试网l$AX#S5_4I3s:hP
• Rules Correlation:在录制过程中VuGen会根据订定的规则,实时自动找出要关联的值。规则来源有两种:
xg(wyLC U A%j{+n0o 内建(Built-in Correlation):
"s;zH7U2`&o&B Ji0VuGen已经针对常用的一些应用系统,如AribaBuyer、BlueMartini、BroadVision、InterStage、mySAP、NetDynamics、Oracle、PeopleSoft、Siebel、SilverJRunner等,内建关联规则,这些应用系统可能会有一种以上的关联规则。您可以在【Recording Options】>【Internet Protocol】>【Correlation】中启用关联规则,则当录制这些应用系统的脚本时,VuGen会在脚本中自动建立关联。51Testing软件测试网b(L.zUBf
您也可以在【Recording Options】>【Internet Protocol】>【Correlation】检视每个关联规则的定义。
&y(Ej @ZJ0o 使用者自订(User-defined Rules Correlation):51Testing软件测试网1D D4_+p3YA
除了内建的关联规则之外,使用者也可以自订关联规则。您可以在【Recording Options】>【Internet Protocol】>【Correlation】建立新的关联规则。51Testing软件测试网0U\,i7y9{A;LJ
• Correlation Studio:有别于Rules Correlation,Correlation Studio则是在执行脚本后才会建立关联,也就是说当录制完脚本后,脚本至少须被执行过一次,Correlation Studio才会作用。Correlation Studio会尝试找出录制时与执行时,服务器响应内容的差异部分,藉以找出需要关联的数据,并建立关联。51Testing软件测试网u*[j+LS+H-Zge+F
Rule Correlation
6}An$]pqL_"}0请依照以下步骤使用Rule Correlation:
"Tb@T7uH01. 启用auto-correlation51Testing软件测试网Z6G ]kgULBKL&V U
1. 点选VuGen的【Tools】>【Recording Options】,开启【Recording Options】对话窗口,选取【Internet Protocol】>【Correlation】,勾选【Enable correlation during recording】,以启用自动关联。
k1r!vQS02. 假如录制的应用系统属于内建关联规则的系统,如AribaBuyer、BlueMartini、BroadVision、InterStage、mySAP、NetDynamics、Oracle、PeopleSoft、Siebel、SilverJRunner等,请勾选相对应的应用系统。
M8cw3x{u/L03. 或者也可以针对录制的应用系统加入新的关联规则,此即为使用者自订的关联规则。51Testing软件测试网~_7BmEf
4. 设定当VuGen侦测到符合关联规则的数据时,要如何处理:51Testing软件测试网*hB4~I%{^
【Issue a pop-up message and let me decide online】:跳出一个讯息对话窗口,询问您是否要建立关联。51Testing软件测试网Wj/`b"nd
【Perform correlation in sceipt】:直接自动建立关联51Testing软件测试网?Pb JN9Z8El
2. 录制脚本
W2}qkONu0开始录制脚本,在录制过程中,当VuGen侦测到符合关联规则的数据时,会依照设定建立关联,您会在脚本中看到类似以下的脚本,此为BroadVision应用系统建立关联的例子,在脚本批注部分可以看到关联前的数据为何。
0g9b$r-r!G_j t1HG0
} H(^r_T^7]"Q)d03. 执行脚本验证关联是OK的。51Testing软件测试网FJ^8q2Q%E}l
Correlation Studio
tv.W)n2a0当录制的应用系统不属于VuGen预设支持的应用系统时,Rule Correlation可能既无法发挥作用,这时可以利用Correlation Studio来做关联。
pYO0uwW5aA0Correlation Studio会尝试找出录制时与执行时,服务器响应内容的差异部分,藉以找出需要关联的数据,并建立关联。51Testing软件测试网$xVDfwQq%_
使用Correlation Studio的步骤如下:
Q F} ob!yO(wC01. 录制脚本并执行51Testing软件测试网)m-S0_/w\)^
2. 执行完毕后,VuGen会跳出下面的【Scan Action for Correlation】窗口,询问您是否要扫描脚本并建立关联,按下【Yes】按钮。51Testing软件测试网 YJ7lr!_"`4T5wh4J
NNam_(c1H03. 扫描完后,可以在脚本下方的【Correlation Results】中看到扫描的结果。51Testing软件测试网 a+rN1Fy&To
51Testing软件测试网C;^B%?*qj)y
4. 检查一下扫瞄的结果后,选择要做关联的数据,然后按下【Correlate】按钮,一笔一笔做,或是按下【Correlate All】让VuGen一次就对所有的数据建立关联。
){]]eH%}/e0注意:由于Correlation Studio会找出所有有变动的数据,但是并不是所有的数据都需要做关联,所以不建议您直接用【Correlate All】。51Testing软件测试网%z!XX0m*]1` |
5. 一般来说,您必须一直重复步骤1~4直到所有需要做关联的数据都找出来为止。因为有时前面的关联还没做好之前,将无法执行到后面需要做关联的部份。
XHm7U5]P$u(p.`0有可能有些需要做关联的动态数据,连Correlation Studio都无法侦测出来,这时您就需要自行做手动关联了。51Testing软件测试网9?&csylX+G'P
手动关联
D3A9m7i#E~"Uk0手动关联的执行过程大致如下:51Testing软件测试网_6bLc.eN k
1. 使用相同的业务流程与数据,录制二份脚本51Testing软件测试网;R+U N,L"@/Xaz
2. 使用WinDiff工具协助找出需要关联的数据51Testing软件测试网7ei fg'~/Qmtj
3. 使用web_reg_save_param函数手动建立关联51Testing软件测试网Gx,RV4U:}M_i
4. 将脚本中有用到关联的数据,以参数取代51Testing软件测试网PH%Dh@xBE
接下来将详细的说明如何执行每个步骤51Testing软件测试网_+W9^6Pdm
使用相同的业务流程与数据,录制二份脚本51Testing软件测试网 H0c7fD/~}:{
1. 先录制一份脚本并存档。51Testing软件测试网l;Vh4I"WPjU
2. 依照相同的操作步骤与数据录制第二份脚本并存盘。注意,所有的步骤和输入的数据一定都要一样,这样才能找出由服务器端产生的动态数据。
5qM5k l+vR ?0有时候会遇到真的无法使用相同的输入数据,那您也要记住您使用的输入数据,到时才能判断是您输入的数据,还是变动的数据。
|+T!f6m+frmYX0使用WinDiff工具协助找出需要关联的数据
1lC2i:O+s,B01. 在第二份脚本中,点选VuGen的【Tools】>【Compare with Vuser…】,并选择第一份脚本。
1X Yu[0m)C6|d1o1?7g02. 接着WinDiff会开启,同时显示二份脚本,并显示有差异的地方。WinDiff会以一整行黄色标示有差异的脚本,并且以红色的字体显示真正差异的文字。(假如没看到红色字体,请点选【Options】>【View】>【Show Inline Differences】)。
$Jg!nTiO-Y03. 逐一检视二份脚本中差异的部份,每一个差异都可能是需要做关联的地方。选取差异的脚本,然后复制。51Testing软件测试网;V$gJ q$s*\ Y z
在复制时,有时并不需要取整行脚本,可能只会选取脚本中的一部分。51Testing软件测试网y |&aFg~O*K
注意:请忽略lr_thik_time的差异部份,因为lr_thik_time是用来模拟每个步骤之间使用者思考延迟的时间。51Testing软件测试网d|(OM5|)MQ XII
gJW^s04. 接着要在Recording Log(单一protocol)或是Generation Log(多重protocol)中找这个值。将鼠标光标点到Recording Log的第一行开头,按下Ctrl+F,开启【Find】窗口,贴上刚刚复制的脚本,找出在Recording Log第一次出现的位置。
*}&^![m1HJ1_!{.N0
WOdgY]o(z| G0结果会有二种:
"{*f a(ggG7? }#uF&c0o 在Recording Log中找不到要找的数据,这时请先确认您找对了脚本,毕竟现在开启了二个几乎一样的脚本,很容易弄错。
.m:m+QD}6zQ0o 在Recording Log中找到了要找的数据,这时要确认数据是从服务器端传送过来的。首先可以先检查数据的标头,从标头的Receiving response可以知道数据是从服务器端传送到client端的。假如此数据第一次出现是在Sending request中,则表示此数据是由client端产生,不需要做关联,但是有可能需要做参数化(parameterized)。51Testing软件测试网2Yw#zq[*j%e'e,\T(G
您要找的标头格式如下:
a3}{-`} [cx|7_0*** [tid=b9 Action1 2] Receiving response from host astra.merc-int.com:80 ( 25/11/2002 12:04:00 )
D9T;A!s3C+g051Testing软件测试网 EgGy;Jwk Z/^*p
5. 现在您已经找到录制二次都不一样,而且是由服务器所产生的动态数据了,而此数据极有可能需要做关联。
Yq6o5X h%S0使用web_reg_save_param函数手动建立关联
+] FU3@~Lw0在找到是由服务器所产生的动态数据之后,接下来要做的就是找出适当的位置,使用web_reg_save_param函数,将这个动态数据撷取到某个参数中。51Testing软件测试网R1L"x;]a!vv1}
1. 要在哪里使用web_reg_save_param函数?51Testing软件测试网4J.cx+p9w;X
在之前的步骤,我们已经在Execution Log找到可能需要关联的动态数据。在Execution Log中选取动态数据前的文字然后复制,我们将会利用这段文字,来帮助我们找出要关联的动态数据。51Testing软件测试网/Q*M L/nreifi
51Testing软件测试网5PL r M1b\n*Z
不过在这之前我们要先找出使用web_reg_save_param函数的正确位置,所以我们要再重新执行一遍脚本,而且这次会开启所有的Log。51Testing软件测试网'\M7l(_r$o:^
1. 在VuGen中点选【Vuser】>【Run-Time Settings】。51Testing软件测试网 nW Nh5^1xq,q5z
2. 点选【General】>【Log】。51Testing软件测试网[]*gk5O[.A#XT
3. 勾选【Enable logging】、【Always sends messages】、【Extended log】,以及【Extended log】下的所有选项。
I^tljtb3t0Q%h04. 按下【OK】就可以执行脚本了。51Testing软件测试网#wNy3cD5w [+x Su
执行完脚本之后,在Execution Log中搜寻刚刚复制的字符串。找到字符串后,在字符串前面会有A.tion1.c(7),这个7就是到时候要插入web_reg_save_param函数的位置,也就是要插入到脚本的第7行。
9K*q ll }1_B&o0在脚本的第7行前插入一行空白行,然后输入