热爱测试,主要研究性能测试和自动化测试方面的技术,希望与同样对测试有热情的你一同进步成长

LoadRunner脚本编写(5)-- 检查点,关联等函数

上一篇 / 下一篇  2008-07-07 22:46:35 / 个人分类:性能测试

本文接着前面脚本编写4http://www.51testing.com/?34866/action_viewspace_itemid_70224.html来继续翻译wilsonmar的文章。其中在翻译过程中,都以zibeike注的方式添加了自己对相关知识点的一些经验和理解。转载请注明作者zibeike和出处,谢谢。

A;nw+C U p!MP o0

1. 错误预防和恢复51Testing软件测试网"P(h+w A.S2Vn"^6E r6^

参数默认是用{}括起来的,但也可以指定用<>

z2g)Ur7x0

NTLM或用户登录验证

fK&]0U2s-P-OSn(zk0

web_set_user("X\\Y", "Z", "A.com:80");

O9sr*u~k:b0

在域与X上的用户名为Y的用户,使用密码Z来登录到A.com:80。在windows基本验证的时候这个脚本被默认录制下来,但如果web服务器需要更安全的NTLM或更深层次的验证,需要手动的添加这个函数到脚本中。对于NTML验证,用户名必须在域名之后,并且以\分割。使用\等符号,需要使用\\,前面的\用来做转义用,否则会出现警告提示。

8[!Gu(cC0

 

QEr7\r:}5cXe2h0

zibeike注:在论坛中也看到了一些朋友讨论windows弹出登录框的操作LR无法录制到,导致回放出错,一般出错信息多为“Error -26547: Authentication required, please use web_set_user, e.g. web_set_user("domain\\user", "password", "host:port");   [MsgId: MERR-26547]”,其实这种情况错误信息已经很明显的给你提示了,需要往脚本中添加web_set_user函数即可。51Testing软件测试网hL+]x7d)_pM

 51Testing软件测试网cU7}U)}:p[4U

2. IP欺骗(略)

/v-`o6A0u7z+gW#q"A0

3. 验证检查点

8{:T2s A#h0

通常脚本录制完后需要手动添加些脚本来来确保预期的操作确实进行了正确的响应(如在操作之后后验证显示的一段文本或者图片)。这些检查可以使用正则表达式。

ZA+^|+?:J0

Web虚拟用户脚本中不会录制到检查点,需要手动添加或者使用VuGen的用户接口来添加函数代码。

*A!h `%I~$`R3q0

最常用的检查点函数是web_reg_find。这个注册函数会查找脚本中下一个操作如web_url后产生的一段文本。它是从返回的缓冲区扫描而不是在接收的页面中查找。这是比web_find更高效的一个函数。

k$} ~ L7O}|0

可以使用下面的代码来验证文本出现的次数:

T'O h$I U]OQ(^K0
  • web_reg_find("Text=ABC", "SaveCount=abc_count", LAST);
    $?)B E RF0web_url("Step", "URL=...", LAST);
    Z~0mh/{0if (strcmp(lr_eval_string("{abc_count}"), "0") == 0)

lr_output_message("not found");

:c*T"E2L;pohO0

else51Testing软件测试网0zB`(`1Y\lKx

lr_output_message("{abc_count} found");

ZNq F2r GAw8M0

如果想保存并且显示找到的文本,可以使用web_reg_save_param界定左右边界把找到的信息保存到参数中。如下:51Testing软件测试网^G,M{*G8i0Zf

  • char *str1,*str2;51Testing软件测试网0}};X+R6u'F2NE
    str1="desired text";
    1f,{L-c P5cUYT u0// Register the left and right beacons sought:
    j.D0j1ga9K p#I#S0web_reg_save_param("param","LB/ic=xxx","RB=xxx");
    *| r!i};Bu,s0// Do the monitored deed:
    'ba%Y'x,?A0web_url("some url","URL=www.xxx.com",LAST);51Testing软件测试网"[)^+`;nS'N R
    // Compare:
    8r#^6PK m5D8{p_ z&u0str2=lr_eval_string("{param}");51Testing软件测试网 RT y sCX e~2g
    if(strcmp(str1,str2)==0) {

lr_output_message("param found");

6P)g-I&mG[;`5jd0

}else{

vgE(hSSJ\R}0J%c0

lr_output_message("Value found is %s",str2);

*ip5P aN Q!Nw0

}51Testing软件测试网*}4|VQ,q2`2zG:}j1B

zibeike注:1)这里想跟大家说下注册函数,在web/http协议的脚本中,注册函数均以web_reg为前缀,这种注册型的函数都是从缓冲区扫描或者获得数据,因此需要提前声明即需要在能获得该查找信息的函数之前添加这些注册函数。例如,web_url()请求了一个页面,我需要验证该页面中是否有某个特定的文本,那需要在web_url()函数之前加上web_reg_find,类似的还有关联的函数web_reg_save_para是一样的,需要放到能获得想要的数据的请求的函数之前。但如果想查看这些函数最终保存的结果,如想打印关联函数web_reg_save_para中保存的参数内容,打印的操作就需要放到请求的函数之后了。

&EXyz Dvy0

2web_findweb_reg_find的区别:前面的是查找页面显示的数据,因此需要放在请求页面的函数之后,而且查找的信息是显示的web页面上的信息。后者是注册型函数,需要放到请求的页面之前,而且查找的内容是服务器返回的缓冲数据中查找,所以查找内容应该看html源代码的内容。51Testing软件测试网|p0Aq?6j

基于HTML录制方式的代码,可以使用web_image_checkHTML页面中包含的图片进行验证。并且需要注意的是只有在Runtime Settings > Internet Protocol Preferences选择了"Enable Image and text check"检查点才有效。

"u0WJdU)\~0

   51Testing软件测试网`5K2g-Atn

   下面会讲到数据类型转换,字符串操作等LoadRunner脚本编写知识,今天就到这里了。

]+_ `u;s&yMGd+d*b0

51Testing软件测试网XAF^+OH"[

&g2Hv5O}6P ^0

本文为zibeike原创,转载请注明出处:http://www.51testing.com/?3486651Testing软件测试网|*PO7D8b2y#Zo;g

9^JeFPM*`.o0

TAG: 性能测试 loadrunner脚本编写

引用 删除 liuboying   /   2016-03-05 11:45:29
好早的问题,感觉还是可以回答一下。
你试试在recording option中把HTTP Properties中的Advanced里的support charset去勾选试试
等等~~~~ 引用 删除 zhangtao   /   2008-07-09 11:45:15
web_reg_find位置不会放错的,是在服务器返回值中自动生成的web_reg_find检查函数,但现在就是验证的检查文本如果是汉字就不能通过,为英文字符串可以通过。
zibeike的个人空间 引用 删除 zibeike   /   2008-07-09 09:56:40
1. web_reg_find查找的内容可以为中文汉字,没有问题的。如果不能通过找下原因,可能是函数放的位置不对,或者是查找的内容不对等原因。
2.web_image_check这个我没有对jsp的页面做过试验,但我想只要是最终服务器返回的页面中有要查找的这个图片的链接,那就应该能检查到。
等等~~~~ 引用 删除 zhangtao   /   2008-07-08 11:16:32
最近在做验证点,在lr8.1上发现两个问题:
1.如果web_reg_find查找的文本为中文汉字时不能通过。
2.web_image_check函数是不是只针对html页面,jsp页面通不过。

有什么解决方法吗??
 

评分:0

我来说两句

Open Toolbar