`
liyiye
  • 浏览: 427095 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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

阅读更多

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

Web用户Action

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

    * web_url是浏览器地址栏的URL.

    * web_link是点击在<a href= ...>和<a>之间的文本超链接。

    * web_image是点击HTML的<img href= link.

    * web_submit_form 是在前面操作的上下文中的GET或PUT表单上点“提交”--可能前面的操作被VuGen在基于HTML模式下录制下来了。

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

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

      如果你在“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元素。

Idea在进行下一页录制之前(如点击链接或者图标),暂停录制,把该页屏幕的标题拷贝下来粘贴到注释中。录制完成之后,这将会在后面的给事务命名上用到。

Idea在每一个页面显示之后,暂停录制,把决定是否是期望页的文本拷贝下来,粘贴到注释中。录制完成之后,这将会用到文本验证检查点的脚本编写中。

     录制中产生的各种信息都保存在RecordingLog.txt文件中,删除它不会对脚本的回放产生影响。

额外录制的Action脚本

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

   web_url("authrootseq.txt",

    "URL=http://www.download.windowsupdate.com/msdownload/update/v3/static/trustedr/en/authrootseq.txt",
    xAt1A/Kj0"Resource=1",
    U$~3MwPp;@e/v0"RecContentType=text/plain",
    T~Sy:Jw0"Referer=",
    7g{)bE5jF }0LAST);51Testing软件测试网}'E @ W*b.`cS1O S

web_url("authrootstl.cab",

    "URL=http://www.download.windowsupdate.com/msdownload/update/v3/static/trustedr/en/authrootstl.cab", 51Testing软件测试网'o@+eA9Z6e8m
    "Resource=1",
    lT2o*H$} ~zr0"RecContentType=application/octet-stream", 51Testing软件测试网 Z'U]'{-dpW
    "Referer=", 51Testing软件测试网/VB`guWjp,S
    LAST);
     录制脚本的时候,但浏览器遇到Macromedia flash组件的时候,会产生下面的代码行:
  •  
      "URL=http://fpdownload.macromedia.com/pub/flashplayer/update/current/xml/version_en_win_ax.xml",
      #r3rJbr(_0"Resource=0",
      "p0X6~ q.i0"RecContentType=text/html",
      |(c?fC p i2f2]'S0"Referer=", 51Testing软件测试网b I}wj v8~
      "Snapshot=t8.inf",
      0V!E G#k o)Q#xk5d#?0"Mode=HTML",
      Sz"pi%OTH"bZ0z0LAST);
  • web_url("version_en_win_ax.xml",
          如果你安装有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}",
    L*By,o#t:kW}/J]0 strlen("{newquoteuid_temp}") + 2,
    q r9z?-\5q:G0 &Buf, &BufLen, 0, 0, -1);
     对字符数组变量NewBuf使用lr_save_var函数来去掉额外的填充(x00):
    for (i=0; i if (Buf[i]!=0) NewBuf[NewBufLen++]=Buf[i];51Testing软件测试网5oS9Pr-]4V~ Y
    lr_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错误

     

     

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

    当一个文件为空时会显示该错误。在空文件中添加空格来满足LoadRunner的错误检查。BTW,因为当创建的iframe没有文件时,IE会产生一个错误,这样就指定了一个空文件。

    事务时间脚本编写:

    Idea我更喜欢给一个action命名事务,而不是一个结果页面。

      lr_start_transaction("00.1 Invoke URL");
      8MyiF@&zl M8x{0...
      (eT)jAPf.N8}q0lr_end_transaction("00.1 Invoke URL",LR_AUTO);
      a3d&B*Vw5~0...
      l9l4G]}M/j Bd9i0lr_start_transaction("01.2 Top menu"); 51Testing软件测试网B%Hu(v2q]K[
      ...
      b6{EfSN#X4u(~0lr_end_transaction("01.2 Top menu",LR_AUTO); 51Testing软件测试网hIm{~9M*l
      51Testing软件测试网+c(vY4mp&EoD
      lr_start_transaction("02.0 Updating");

        2j$va!y'U0lr_start_sub_transaction("02.1 Update menu","02.0 Updating"); 51Testing软件测试网:F(i!xj*o P:aZ
        web_url( ... 51Testing软件测试网eeq Rxx!b{%F.g(}4@/j
        lr_end_sub_transaction("02.1 Update menu",LR_AUTO);
        7ukq!SDpnnp1l-E}0lr_start_sub_transaction("02.2 Update submit","02.0 Updating"); 51Testing软件测试网[4Bbn7d1b!`%e
        web_submit_form( ...
        p$Y| [MxFB0lr_end_sub_transaction("02.2 Update submit",LR_AUTO);
        T {n-|+e m\s't)H0lr_start_sub_transaction("02.3 Update OK","02.0 Updating");
        C9~U{%} ^0web_url( ...
        !W;gV+x_5r0lr_end_sub_transaction("02.3 Update OK",LR_AUTO);

      'U;`@{/s0
      9~i h:Hd%_KR@0lr_end_transaction("02.0 Updating",LR_AUTO);

    Idea我喜欢在一个层次结构中使用0填充的事务名称,这样来确保控制器能够正确的给事务排序。

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

    事务名可以是变量,但是它只能被VuGen作为字符串来编译,不能在控制器的接口中显示。无论如何,他们会显示在分析结果文件中。

     对于web脚本,LR自动创建和决定事务的的持续时间,但是C语言脚本可以使用这些函数:

     使用lr_start_transaction_instance函数来显式获得指定事务实例的句柄,事务名称在函数lr_user_data_point_instance或lr_user_data_point_instance_ex中使用。

      使用 lr_start_sub_transaction在一个事务中来操作思考时间和消耗的时间。

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

分享到:
评论
1 楼 njalic 2010-06-10  
刚仔细看了你的文章,但对里面的一些内容还是有些不明白,如
另一个文本标志是“/BIN”用来指定是二进制的字符集。例如,查找“Adams”:
web_reg_find("Text/BIN=\\x00A\\x00d\\x00a\\x00m\\x00s",LAST);
注意两个反斜杠,一个是转义字符,代表是使用了一个符号。如果错误的只使用一个反斜杠,LR会认为它是一个空的终止。

我现在有下面一段代码:
<!--导航栏-->
    <div class="page-nav">
      <a style="color:darkblue" href="javascript:;">内容管理</a> → <a style="color:darkblue" href="javascript:;">短信内容管理</a> → <span style=" font-weight: bold;">内容录入</span>
    </div>

当页面在显示出来的时候会显示“内容录入”这个字串。我在使用web_reg_find函数的时候是不是需要写成如下的格式:
web_reg_find("Search=Body",
"TextPfx/BIN=bold;\">",
"TextSfx/BIN=</span>",
LAST);
就可以了。

相关推荐

    Loadrunner学习---脚本编写系列

    【LoadRunner学习---脚本编写系列】是一系列关于LoadRunner工具中脚本开发的文章,旨在帮助读者掌握如何高效地编写LoadRunner脚本。LoadRunner是一款功能强大的性能测试工具,通过模拟多个用户并发执行脚本,以检测...

    使用LoadRunner-编写JAVA-测试脚本.zip

    【标题解析】 "使用LoadRunner-编写JAVA-测试脚本.zip" 这个标题指出,这...综上所述,这个压缩包的内容很可能是对以上各个知识点的详细讲解和示例代码,适合希望学习或提升LoadRunner Java脚本编写技能的测试工程师。

    使用LoadRunner-编写JAVA-测试脚本.docx

    【使用LoadRunner编写JAVA测试脚本】 LoadRunner是一款强大的负载测试工具,它允许测试人员模拟大量用户并发执行任务,以评估应用程序的性能和稳定性。在本文档中,我们将重点讨论如何使用LoadRunner来编写JAVA测试...

    loadrunner11-load-generator-linux负载机

    例如,VUGen(Virtual User Generator)用于编写和编辑脚本,Controller用于管理和执行测试场景,而Analysis则用于分析测试结果。 总结来说,LoadRunner11的Load Generator在Linux平台上的运用,使得性能测试更具...

    loadrunner-11-load-generator

    3. 自动化能力:Linux环境与各种脚本语言(如bash、Perl、Python等)的兼容性好,便于自动化测试脚本的编写和执行。 三、LoadRunner 11负载生成器安装 1. 准备工作:确保Linux系统满足LoadRunner 11的硬件和软件...

    HP LoadRunner软件配置、脚本编写和执行指南.pdf

    HP LoadRunner软件配置、脚本编写和执行指南.pdf HP LoadRunner软件配置、脚本编写和执行指南.pdf HP LoadRunner软件配置、脚本编写和执行指南.pdf HP LoadRunner软件配置、脚本编写和执行指南.pdf

    loadrunner笔记2----使用程序批量动态生成脚本

    使用这些代码,我们可以学习如何将外部数据源与LoadRunner脚本生成过程结合,从而提高脚本创建的灵活性和效率。 在实际应用中,批量动态生成脚本对于测试大规模系统、模拟复杂用户行为或进行压力测试时非常有用。它...

    Loadrunner脚本编写系列

    ### Loadrunner脚本编写知识点详解 #### 一、Loadrunner脚本编写概述 Loadrunner是一款由Micro Focus公司出品的功能强大的性能测试工具,主要用于预测系统行为并优化其性能。其中脚本编写是Loadrunner的核心功能之...

    LoadRunner脚本编写

    LoadRunner脚本编写

    LoadRunner--all-error.rar_LoadRunner

    总之,LoadRunner的错误解决需要综合理解其工作原理,熟练掌握脚本编写、回放、监控和结果分析等环节。通过不断实践和学习,我们可以逐步克服这些挑战,提升性能测试的效率和质量。在遇到问题时,利用官方文档、社区...

    LR 脚本编写教程

    ### LoadRunner脚本编写教程详解 #### 一、LoadRunner脚本生成方法及优缺点分析 **1. 自动录制生成脚本** - **优点**:简单易用,适合初学者快速入门。录制过程能够自动捕获应用程序的操作流程,生成相应的脚本。...

    LoadRunner11-中文教程

    4. **脚本优化**:通过评测业务流程,使用参数化、关联等功能优化脚本,提高测试覆盖率和准确性。 5. **创建负载测试场景**:利用Controller设计复杂的测试场景,模拟真实的用户行为和负载条件,检验系统在极限状态...

    LoadRunner脚本编写技术指南

    LoadRunner 脚本编写技术指南 LoadRunner 脚本编写技术指南旨在提供 Web(http/html) 协议脚本编写方法和技术指南,指导脚本开发人员编写高质量的 LoadRunner 脚本。该指南涵盖了 Web(http/html) 协议的基础知识、...

    性能测试从零开始--loadrunner脚本

    《性能测试从零开始——LoadRunner入门》资源下载,这可能是一份详细的学习资料,包括LoadRunner的基本操作、脚本编写、场景设置以及结果分析等方面,对初学者非常有帮助。 通过深入学习和实践,你将能够熟练掌握...

    LoadRunner创建测试脚本教程.

    - **使用最近使用过的协议**:可以从最近使用过的协议列表中选择,如图2-4所示。 ##### 3.3 开始录制 - **环境设置**:在录制前需要进行环境设置,包括是否自动启动被测应用、脚本存放位置等。 - **录制脚本**:...

    LoadRunner-11.0-for-Linux.rar

    在实际使用LoadRunner时,还需要了解如何编写和修改测试脚本,以及如何解读和分析测试结果,以便对系统性能进行有效的评估和优化。 总的来说,LoadRunner 11.0 for Linux是一个强大的性能测试工具,尤其适用于需要...

    软件测试方法与技术:LoadRunner --性能测试.pdf

    2. 支持多平台开发的脚本:用户可以针对不同平台编写测试脚本,提高脚本的适用范围。 3. 创建真实的系统负载:模拟实际应用场景中产生的负载,更加准确地反映系统在真实环境中的表现。 4. 强大的实时监控与数据采集...

    LoadRunner配置、脚本编写和执行的提示与技巧

    LoadRunner配置、脚本编写和执行的提示与技巧

    LoadRunner 录制和回放测试脚本(3)

    4. **Vuser脚本语言**:LoadRunner的脚本语言基于C,但包含许多预定义的函数和语句,使得脚本编写相对简单。例如,`web_url()`用于模拟HTTP请求,`web_submit_data()`用于提交表单数据。 5. **脚本编辑和优化**:...

Global site tag (gtag.js) - Google Analytics