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

LoadRunner学习---脚本编写(4)(比较重要)

上一篇 / 下一篇  2007-12-13 23:45:39 / 个人分类:性能测试

f%F#ju2em-`#[I0   今天接着来翻译http://www.wilsonmar.com/中关于LoadRunner脚本编写部分,下面该翻译脚本编写中一些比较重要的部分了。

I r+K3K;fI;i,`S051Testing软件测试网 e%]8q#td

Web用户Action

auI7l&`A:VvS0

+ax_6~ Kw0    在VuGen中,脚本产生的默认模式是基于HTML的--“描述用户的动作的脚本”直接与用户的动作是对应的:

7^0p,cbrB$L5~'OZGD051Testing软件测试网L2D?o$} b T+Ih-z.M

    *web_url是浏览器地址栏的URL.51Testing软件测试网dgQ] WK(P/W5M

%d,d(E$Lhr+e9[0    *web_link是点击在<ahref= ...>和<a>之间的文本超链接。51Testing软件测试网|%j#zR4fO1q;Y

v#Qrb#VY#m0    *web_image是点击HTML的<imghref= link.

xf {%?b6`bJk!YS0

$f/L'w]0g*g0    *web_submit_form是在前面操作的上下文中的GET或PUT表单上点“提交”--可能前面的操作被VuGen在基于HTML模式下录制下来了。

Rd"O5e XSlJi0P vZ0

8I{+G)[ MZ0    *web_submit_data是在GET或PUT表单上点“提交”,而没有带前面操作的上下文--可能是在基于URL模式下录制,或者是基于HTML模式,并且选择了“A scrīpt containing explicit URLs only”选项。

DgD CaJ9jZ0

-h V'c Y g\6vf R0     不用HTML产生的资源是.gif和.jpg图片。资源属性的列表只能当对这些资源的路直选项设置成“Record within the current scrīpt step”时被插入。这也是默认的设置。

[E0H1QQo:m051Testing软件测试网x ikz_O Hm E

      如果你在“Tools > Internet Procotol > Recording”中选择“a scrīpt containing explicit URLs only”,这将会产生URL-based的脚本录制,只使用web_url和web_submit_data函数,将不会使用 web_link 和 web_image函数,或包含在 applets, XML, ActiveX或javascrīpt中的非HTML元素。

q/] Ud2hN#O051Testing软件测试网4la j FY0y&O)\J s

Idea在进行下一页录制之前(如点击链接或者图标),暂停录制,把该页屏幕的标题拷贝下来粘贴到注释中。录制完成之后,这将会在后面的给事务命名上用到。51Testing软件测试网[[I,F*B+iQv

51Testing软件测试网7]9uAV*T w

Idea在每一个页面显示之后,暂停录制,把决定是否是期望页的文本拷贝下来,粘贴到注释中。录制完成之后,这将会用到文本验证检查点的脚本编写中。51Testing软件测试网^-rB ` U6q C

51Testing软件测试网9n L$_ x3o

     录制中产生的各种信息都保存在RecordingLog.txt文件中,删除它不会对脚本的回放产生影响。51Testing软件测试网'G$T@8S!\:[#tH

0wV!Ih ['^0额外录制的Action脚本

,EOX"yV5~5r(B L,OO5X051Testing软件测试网a y R KsOgJ H

    录制脚本的时候,当浏览器没有安装SSL根证书的时候,会捕获的下面这些代码行。这个信息意思是“这个证书不能被信任证书验证”。51Testing软件测试网2RQ/kX8C

l\,a ISs8A0   web_url("authrootseq.txt",51Testing软件测试网o4L(GiM[O y

    "URL=http://www.download.windowsupdate.com/msdownload/update/v3/static/trustedr/en/authrootseq.txt",
    &vh&d0T OCGv0"Resource=1",
    s1j+YV,~6L/P0"RecContentType=text/plain",51Testing软件测试网L J!i8gZ3yg$s2i
    "Referer=",51Testing软件测试网3M^!Rh%py8P;B
    LAST);51Testing软件测试网 f5M7F&YCmd&E/RRU&J

9U }-p eJ7Io0l@S0web_url("authrootstl.cab",

V] isX ^?/k0
    "URL=http://www.download.windowsupdate.com/msdownload/update/v3/static/trustedr/en/authrootstl.cab",
    qd szuK0"Resource=1",51Testing软件测试网9I#k(I kx6WzH!]H
    "RecContentType=application/octet-stream",
    5HCw!WO J Y _+C0"Referer=",
    H4n;t#w:ji"[0LAST);
     录制脚本的时候,但浏览器遇到Macromedia flash组件的时候,会产生下面的代码行:
    web_url("version_en_win_ax.xml",
      "URL=http://fpdownload.macromedia.com/pub/flashplayer/update/current/xml/version_en_win_ax.xml",
      'zr3~]M#o3Z3@U3R&fA0"Resource=0",
      9dcycs }bx0"RecContentType=text/html",51Testing软件测试网nu N Eh MdNN
      "Referer=",51Testing软件测试网K,w P&R&T
      "Snapshot=t8.inf",51Testing软件测试网^gy+}KR s
      "Mode=HTML",
      +m-A"duQy D"p0LAST);
            如果你安装有Google Toolbar,即使你没有访问Google,也会录制上发到Google的请求。
      脚本语言规则:
       在LoadRunner中,大小写是敏感的,甚至在被检验的值中。所以上面的脚本会因为大写字母的原因,不会识别“Welcome”的。所以Steve Cheney 建议使用“ic”忽略大小写的文字标志:
       web_reg_find("Text/ic=Welcome",LAST);
       括号里的参数包含了LAST是为了指定最后的一个参数。这样做是很方便的,因为上面的例子漏掉了一个指定期望是“found”还是“notfound”的属性。默认是“found”,所有我经常忽略它。
        另一个文本标志是“/BIN”用来指定是二进制的字符集。例如,查找“Adams”:
      web_reg_find("Text/BIN=\\x00A\\x00d\\x00a\\x00m\\x00s",LAST);
      注意两个反斜杠,一个是转义字符,代表是使用了一个符号。如果错误的只使用一个反斜杠,LR会认为它是一个空的终止。
            下面的例子脚本是在UTF8服务器上支持获得newquoteuid为UTF-16编码。因为LoadRunner中,UTF16编码的“Red”用ASCII是 R\x00e\x00d\x00 这样的,所以需要把它保存到buffer中。
      lr_eval_string_ext("{newquoteuid_temp}",51Testing软件测试网"P}Jv+e7M~/smV]|
      strlen("{newquoteuid_temp}") + 2,51Testing软件测试网?-vI)j~7r"h
      &Buf, &BufLen, 0, 0, -1);
       对字符数组变量NewBuf使用lr_save_var函数来去掉额外的填充(x00):
      for (i=0; i if (Buf[i]!=0) NewBuf[NewBufLen++]=Buf[i];
      &K1g-^%B,m y T2Xt0lr_save_var(NewBuf, NewBufLen-1, 0, "newquoteuid");
       注:lr_save_var 需要四个参数(不需要使用LAST)
       1.param_value 参数值
       2 value_len 参数的长度。
       3 options 参数的选项,一般为0
       4。param_name 参数名称
       LoadRunner 7.8不支持正则表达式,但是有他自己的通配符:
       为了使任何[0-9] 的数字在指定的数字位置,使用/DIG做标志:
       web_reg_save_param("pSer","LB/DIG=Serial XXX-###-ZZZZ","RB=\r\n", LAST );
       有三种使用^做通配符的方法:
       * 忽略大小写,并且允许在指定的字符位置使用任意字符:
        web_reg_find("Text/ALNUMIC=^ercury", LAST);
       * 允许任何小写字符[a-z] 在指定位置:
        web_reg_find("Text/ALNUMLC=^ercury", LAST);
       * 允许任何大写字符[A-Z]在指定的字符位置:
        web_reg_find("Text/ALNUMUC=^ercury", LAST);
       把一个字符串变成大写:strupr()
      错误信息:
       请添加一些其他的错误信息来帮助其他人:

      Could not resolve address of host ... [MsgId: MERR-27798]

      如果网络不能用或者域没有注册的话,显示一个404的DNS错误

      (F?R$~(F)C#u051Testing软件测试网 Wn!y3~o

      !i&ZE8E{0

      Contents unexpectedly not in cache. [MsgId: MERR-26549]

      51Testing软件测试网^re hYfb/Eo:iO

      当一个文件为空时会显示该错误。在空文件中添加空格来满足LoadRunner的错误检查。BTW,因为当创建的iframe没有文件时,IE会产生一个错误,这样就指定了一个空文件。51Testing软件测试网6H%b"x2H2a

      51Testing软件测试网x4NH d,T1e

      事务时间脚本编写:51Testing软件测试网Nf;{9v/k z

      51Testing软件测试网j;^(CNh2A

      Idea我更喜欢给一个action命名事务,而不是一个结果页面。51Testing软件测试网1I`M,}U `g2{_

        lr_start_transaction("00.1 Invoke URL");51Testing软件测试网a t\Q} Bt9u(Yd
        ...51Testing软件测试网$_An8z0e gzk
        lr_end_transaction("00.1 Invoke URL",LR_AUTO);51Testing软件测试网/Sx U.r X Ol4O
        ...
        r2kTf(h)D [ B&Yr0lr_start_transaction("01.2 Top menu");51Testing软件测试网 s-S9N%XQ
        ...51Testing软件测试网&CF:LnsQ N6?a
        lr_end_transaction("01.2 Top menu",LR_AUTO);51Testing软件测试网 Q0wt+hs J$s:s

        1YuiE| v B)ZA0lr_start_transaction("02.0 Updating");

          D.{/si&zOV%}0lr_start_sub_transaction("02.1 Update menu","02.0 Updating");51Testing软件测试网]-bg&s/n"ZjcU!|
          web_url( ...51Testing软件测试网x&?Kh/`_~
          lr_end_sub_transaction("02.1 Update menu",LR_AUTO);
          ]o;q"w r)dq[-v2o:sj0lr_start_sub_transaction("02.2 Update submit","02.0 Updating");51Testing软件测试网\p%J%Csduk6L2_
          web_submit_form( ...51Testing软件测试网:tDo)PT8b
          lr_end_sub_transaction("02.2 Update submit",LR_AUTO);51Testing软件测试网_:A| V RA+JZZ!y
          lr_start_sub_transaction("02.3 Update OK","02.0 Updating");
          9^-HC K!d |5P7`a(i$D0web_url( ...51Testing软件测试网-@:\B no"\?
          lr_end_sub_transaction("02.3 Update OK",LR_AUTO);
        51Testing软件测试网8S;SH8I3m
        51Testing软件测试网,s6TLCX3g1O x~
        lr_end_transaction("02.0 Updating",LR_AUTO);

      j@vh8]?0Idea我喜欢在一个层次结构中使用0填充的事务名称,这样来确保控制器能够正确的给事务排序。51Testing软件测试网 ~?3q6l/I9I&x'tP E F

      Idea我对不同类型的action上的事务名称上加不同的关键字
    • ContactLink= Click "Contact" link on Menu
    • ContactIcon= Click "Contact" Icon
    • Regis.Sub= Page Submit
    • OK= Pop-up dismiss with OK

    5q.}o*k"U#u(l"g,r2Z0    事务名可以是变量,但是它只能被VuGen作为字符串来编译,不能在控制器的接口中显示。无论如何,他们会显示在分析结果文件中。51Testing软件测试网;Mo#{B9`l

    51Testing软件测试网"P,^2n9I5z u*Y!z+I

         对于web脚本,LR自动创建和决定事务的的持续时间,但是C语言脚本可以使用这些函数:51Testing软件测试网 ?9\?,HKL hl T4V&{a

    51Testing软件测试网,q Ib\.Z;F;V6`5X

         使用lr_start_transaction_instance函数来显式获得指定事务实例的句柄,事务名称在函数lr_user_data_point_instance或lr_user_data_point_instance_ex中使用。51Testing软件测试网 G3Q1}D#~8UB M]W"x

    51Testing软件测试网X} o#|;[O?"v:}4H

          使用 lr_start_sub_transaction在一个事务中来操作思考时间和消耗的时间。51Testing软件测试网lC-V_Yy#g&I

    !xCF/w-@ V!x+d0      好了,脚本编写部分基本已经翻译了一半了,该睡觉了,下面会接着翻译检查点,操作字符串,从流中获得数据,参数化,如何使用文件,关联,集合点等,内容还是很多的。哈哈

    )I/A5C$n\Wl4jc0

    AJ-f? H}'m0 51Testing软件测试网 V-qF-{1` M7],P

    gE.[tpqr&H-^0 51Testing软件测试网hZ$@X8S


    TAG: 性能测试

    uucc123的个人空间 引用 删除 uucc123   /   2016-11-25 16:06:06
    看电影的网站(http://www.1999yyy.com/)就来**电影在线观看网。
    引用 删除 citynows   /   2013-08-07 10:23:22
    个人简历模板http://www.jianli-moban.com
    空灵的个人空间 引用 删除 空灵dj   /   2013-06-04 10:33:11
    学习-ing
    空灵的个人空间 引用 删除 空灵dj   /   2013-06-04 10:32:41
    1
    ◆◇丶执念 引用 删除 空念   /   2012-02-15 14:47:00
    引用 删除 lxfdanny1   /   2009-05-07 11:56:04
    很详细
    cafard-haibin的个人空间 引用 删除 cafard-haibin   /   2008-11-06 09:20:37
    我用此方式录制脚本:* web_submit_data 是在GET或PUT表单上点“提交”,而没有带前面操作的上下文--可能是在基于URL模式下录制,或者是基于HTML模式,并且选择了“A scrīpt containing explicit URLs only”选项。还是有web_submit_data啊
     

    评分:0

    我来说两句

    Open Toolbar