lYMT5BIT`D72047LoadRunner提供了功能强大的API集合,足够应付大多数性能测试的需求。但在某些情况下,这些API仍然有覆盖不到的地方。例如,我们有一个WEB应用,该应用有一个页面输入用户的信息,为了安全起见,用户输入的信息在提交之前都要先进行加密处理,加密处理通过本地的COM组件实现。
Mj1l1K{8@;y[-t7204751Testing软件测试网\2JusL:H0FP4]对这个要求而言,LoadRunner的现有API不能提供直接支持,因为LoadRunner在录制脚本时只录制数据交互,因此,COM的加密处理过程是不能录制下来的。在LoadRunner的脚本中,可能只有类似以下的语句描述了这个过程:
iHS6E l\2M3h72047-qmxuf|+nr72047…………
Tcm p B6rI72047web_url("userinfo",
5q%r _(r$QU_j:m72047"URL=http://testweb/userinfo.aspx",
rT IS'm/yWh? m72047"TargetFrame=",
,tP~K7l:O72047"Resource=0",51Testing软件测试网#VZkc0Of;j.I
"Referer=",51Testing软件测试网K,P3z*ol
LAST);51Testing软件测试网Z-l)pYp9N
\^'\3}QD72047web_submit_form("login ",
keK q4i%tG72047"Snapshot=t4.inf",51Testing软件测试网lbj^P0s:c!r&~
ITEMDATA,
)@(G2X\z7VP9X.H72047"Name=username", "Value=4e92Sh6d394g", ENDITEM,
RhIP3C72047"Name=password", "Value=932A2hf34U18", ENDITEM,51Testing软件测试网v"ZO9r3}Pg,u7r
LAST);51Testing软件测试网P]?)z#GGK.}x
…………
1][hk`8bhA,L P72047nrJ0I/tF AA3M@9JE72047从脚本可以看到,输入的数据是加密后的数据,但LR没有录制到加密过程。
;DE"?;Q\7204751Testing软件测试网.N:rMRt$zO假设加密函数所在的DLL名为security.dll,用于加密的函数名为encode,则一种可能的对脚本的修改方法如下代码所示。51Testing软件测试网b5peGc/_-Bt
…………51Testing软件测试网 Y A&iSu]NZ
char *encode_username, *encode_password, *orgin_username, *orgin_password;51Testing软件测试网Ag@zD1Kb
char* uservalue, passvalue;
?p2Ze/C`J R+MKZ72047int ret;51Testing软件测试网1[0_{0]5mb a8xpC
……51Testing软件测试网6H"W,h[)DiNRx
web_url("userinfo",
0_;g1@9v ?Y72047"URL=http://testweb/userinfo.aspx",
t(Hq N]b{72047"TargetFrame=",
2H ?T s+jPf4bl72047"Resource=0",51Testing软件测试网.kZ"qk3T]E
"Referer=",51Testing软件测试网yXC+sOL
LAST);
x5P9[ o![g"M Y @#U5]72047qqr!nl.w!~@+V"o72047orgin_username = lr_eval_string(“{ username }”); //获取参数的值51Testing软件测试网2[v7~Uuczg(rY
orgin_password = lr_eval_string(“{ password }”);
u-xa5c`0tO+^7204751Testing软件测试网/BYZ0T kJret = lr_load_dll(“security.dll”); //加载DLL库
0}s0a*N-Z9H#`7204751Testing软件测试网.I&|8_lP}encode(origin_username, encode_username); //调用encode函数51Testing软件测试网wF+^ S]6ID5w
encode(origin_password, encode_password);
4MA{pW9}VB7204751Testing软件测试网fPlf1~*eT5V
1LCK3]KM#q)^;ea72047sprintf(uservalue, “Value=%s”, encode_username);51Testing软件测试网#?D;l1F#R.oST1Q
sprintf(passvalue, “value=%s”, encode_password);
fMiT9y72047-} pvh;FqQwe72047web_submit_form("login ",
1b{W4O#Z&n_D3Z72047"Snapshot=t4.inf",
+RVBCA H.[]V$t72047ITEMDATA,51Testing软件测试网C"x~3A(G,`
"Name=username", uservalue, ENDITEM,51Testing软件测试网;n%NF'ZYTN
"Name=password", passvalue, ENDITEM,51Testing软件测试网/u"yF%\)l
LAST);51Testing软件测试网!l)o@+I7SY6Jg
…………
3_!{&\*y&g V"Z72047
C a n:^D72047