zoukankan      html  css  js  c++  java
  • LoadRunner-总结

    1、脚本常用函数

    web_url()

    模拟用户请求,基本语法如下所示:

    web_url("在测试结果中显示的名称","URL=需要访问的超链地址",LAST);
    

    web_link()

    模拟用户单击一个超链接的操作。VuGen会识别访问页面后服务器返回的HTML正文中有多少个超链接。当使用web_link()函数时,只要写出正确的链接名,VuGen会自动查找并访问页面中该链接名所指向的URL地址。

    基本语法如下所示:

    web_link("在测试结果中显示的名称”, “TEXT=需要单击的超链接名", Ord=次序, LAST);
    

    web_submit_form()、web_submit_data()

    实现HTTP请求中的POST方法

    lr_convert_string_encoding()

    将中文变更为UTF-8格式,那么代码可以这样写:

    lr_convert_string_encoding(
    "门户",
    LR_ENC_SYSTEM_LOCALE,
    LR_ENC_UTF8,
    "param");
    

    web_convert_param()

    参数HTML的格式从HTML转化为URL模式

    web_convert_param("HTML","SourceEncoding=HTML","TargetEncoding=URL",LAST);
    

    web_custom_request()

    自定义HTTP请求规则

    lr_output_message()

    内容输出

    lr_set_debug_message()

    函数手动控制日志的显示

    该函数的格式为lr_set_debug_message(日志格式,是否应用)

    lr_set_debug_message(16|4,1) 强制设置日志为启用,并且是扩展日志带参数取值显示
    lr_set_debug_message(0,1) 强制设置日志关闭
    lr_set_debug_message(1|2,1) 强制设置日志启用,只查看基本内容
    

    lr_think_time()

    等待操作

    lr_eval_string("{参数名}");

    从参数中取得对应的值,并且转化成一个字符串

    lr_save_string()

    将一个字符串保存为一个参数

    lr_save_string("https://www.baidu.com","website");
    

    lr_free_parameter()

    参数的值释放掉

    web_reg_save_param_ex()

    关联

    web_reg_save_param_regexp

    正则表达式关联

    web_set_max_html_param_len

    可以自定义关联返回值存放的参数的最大长度

    web_set_max_html_param_len("9999999");
    

    web_add_auto_filter

    过滤

    web_add_filter

    过滤

    web_add_auto_header

    添加请求头

    web_add_header

    添加请求头

    web_add_cookie

    添加cookie

    web_add_cookie_ex

    添加cookie

    web_browser

    模拟浏览器

    web_button

    模拟按钮

    web_cache_cleanup

    清除cache

    web_check_box

    点box

    web_cleanup_auto_header

    清除请求头

    web_cleanup_cookies

    清除cookies

    web_concurrent_start&end

    请求并行

    web_convert_data_param

    时间转换

    web_convert_from_formatted

    格式转换

    web_convert_to_formatted

    格式转换

    2、脚本断言方法

    msg = "AllTests"
    
    if (strstr(lr_eval_string("{msg}"), 'AllTests') !=NULL){
           lr_end_transaction("事物", LR_PASS)
           lr_output_message("成功")
    }
    else{
           lr_end_transaction("事物", LR_FAIL)
           lr_output_message("失败")
    }
    

    3、批处理执行脚本

    编写批处理文件并结合windows自带的任务计划执行脚本

    (1)在记事本中写入命令,指定bin和要执行的scenario的路径:

    cls SET M_ROOT="C:Program FilesMercuryLoadRunnerin" %M_ROOT%wlrun.exe -TestPath "C:Program FilesMercuryLoadRunnerscenarioScenario1_whole_new2.lrs" -Run
    

    (2)将文件保存成.bat格式。

    (3)将控制面板-->管理工具-->服务中的Task Schedule启动。

    (4)进入控制面板-->任务计划,添加一个新的定时任务,通过浏览方式,添加刚才的批处理文件,并指定执行时间即可。

    (5)注意在Result setting中设置结果保存的路径,因为定时任务执行完毕后,Scenario会自行关闭。

    bat文件内容:

    cls
    SET M_ROOT="D:Program FilesMIMercury LoadRunnerin"
    %M_ROOT%wlrun.exe -TestPath "D:Program FilesMIMercury LoadRunnerscenarioTestTestScen_1.lrs" -Run
    %M_ROOT%wlrun.exe -TestPath "D:Program FilesMIMercury LoadRunnerscenarioTestTestScen_2.lrs" -Run
    %M_ROOT%wlrun.exe -TestPath "D:Program FilesMIMercury LoadRunnerscenarioTestTestScen_3.lrs" -Run
    

    4、用函数生成订单编号

    LoadRunner中取时间函数、用时间函数生成订单编号

    问题的提出:

    (1)取系统时间

    (2)需要用时间生成唯一订单号

    (3)时间函数加随机数产生不重复的订单号

    一、取系统时间:

    Action()
    {
        lr_save_datetime("现在是:%Y年%m月%d日%H时%M分%S秒", DATE_NOW, "pNextWeek_date");
        lr_output_message("%s", lr_eval_string("{pNextWeek_date}"));
        lr_save_datetime("下周这个时间是:%Y/%m/%d/%H:%M:%S", DATE_NOW + (ONE_DAY * 7), "pNextWeek_date");
        lr_output_message("%s", lr_eval_string("{pNextWeek_date}"));
        lr_save_datetime("%Y%m%d%H%M%S", DATE_NOW, "pNextWeek_date");
        lr_output_message("用时间函数生成订单号:%s", lr_eval_string("{pNextWeek_date}"));
        return 0;
    }
    

    二、时间函数加随机数产生不重复的订单号

    int i;
    char OrderId[20];
    Action()
    {
        srand(time(NULL)); 
        i=rand()%10;
        lr_save_datetime("%Y%m%d%H%M%S", DATE_NOW,"now");
        sprintf(OrderId,"%s%d",lr_eval_string("{now}"),i);
        lr_output_message("订单号为:%s",OrderId);
        return 0;
    }
    

    5、事物的响应时间

    事务得到的系统响应时间是由非常多的部分组成的,一般来说响应时间由网络时间、服务器处理时间、网络延迟三大部分组成。先来看看当一个客户端发出请求到服务器返回需要经历哪些路径。联函数详解

    图片

    (1)网络时间

    客户端发出请求首先通过网络来到Web Server上(消耗时间为N1);然后Web Server将处理后的请求发送给App Server(消耗时间为N2);App Server将操作数据指令发送给Database (消耗时间为N3);Database服务器将查询结果数据发送回App Server(消耗时间为N4);App Server将处理后的页面发给Web Server(消耗时间为N5);最后Web Server将HTML转发到客户端(消耗时间为N6)。这里的Nx都是网络传输上的时间开销,没有计算业务处理所需要花费的时间。

    (2)服务器处理时间

    另外一个方面还要考虑各个服务器处理所需要的时间WT、AT、DT。

    (3)网络延迟

    除上面两种时间开销外,还要考虑网络延迟的问题。

    所以最终的响应时间组成为:

    响应时间 = 网络延迟时间 + WT+AT+DT +(N1+N2+N3)+(N4+N5+N6)+ WT+AT+DT

    也可以简单认为响应时间由网络开销(前端)和服务器端开销(后端)两大部分组成

    图片

    影响网络的因素一般包括以下内容:

    (1)前端Network

    DNS Lookup

    Time to connect

    Time to first buffer

    Network Time

    Download Time

    SSL handshake

    FTP authentication

    Client Time

    Error Time

    网络延迟

    (2)后端服务

    Web Server

    Servlet Time

    Method Time

    静态动态压缩

    Web Application Server

    EJB Time

    Method Time

    JNDI Lookup

    Database Server

    JDBC Time

    Connect Time

    Execute Time

    6、关联函数详情

    关联函数web_reg_save_param_ex()

    图片

    (1)Parameter Name

    此处设置存放参数的名称,关联出来的内容将会存放在该参数中。这里受到Ordinal选项的影响。

    例如:

    设置Parameter Name为temp,当对应的Ordinal选项是任意一个数字的时候,只会关联一个匹配的记录,关联值将会存放在temp这个参数中。当Ordinal是All的时候,关联成功后的值将会依次存放在“temp_数字”这样的参数数组中,并且还会添加一个temp_count的参数存放关联出来的记录条数。

    (2)Left Boundary

    此处设置左边界,这里是用来填写关联对于数据处理的左匹配内容规则。在左边界中存放的是一个字符串,例如,填写的内容为“左边界”会被转换成以下形式:

    web_reg_save_param_ex(
    "ParamName=test",
    "LB=左边界",
    "RB=",
    SEARCH_FILTERS,
    LAST);
    

    注意:

    如果输入的内容里面有双引号,那么需要通过转义符来进行处理,例如:

    web_reg_save_param_ex(
    "ParamName=test",
    "LB="左边界",
    "RB=",
    SEARCH_FILTERS,
    LST);
    

    (3)Match case

    默认情况下边界是Match case的,也就是检查大小写的,可以取消下面的选项来忽略大小写检查,会看到函数变为以下形式:

    web_reg_save_param_ex(
    "ParamName=test",
    "LB/IC=左边界",
    "RB=",
    SEARCH_FILTERS,
    LAST);
    

    (4)Binary data

    如果需要关联的内容是非ASCII字符的,那么需要使用该选项。选中该选项后可以看到函数变为以下形式:

    web_reg_save_param_ex(
    "ParamName=test",
    "LB/BIN=\x3F\xDD",
    "RB=",
    SEARCH_FILTERS,
    LAST);
    

    (5)Regular expression

    在LR11中关联函数提供了使用正则表达式的功能,但是在LR11 Patch3中取消了web_reg_save_param_ex函数对该功能的支持,而该功能由函数web_reg_save_param_regexp实现。

    (6)Right Boundary

    此处设置右边界,这里是用来填写关联时对于数据处理的右匹配内容规则,选项同左边界。

    (7)Ordinal

    这个关键字在很多函数里面都有应用,在这里可以填写任意一个整数,也可以填All。如果填写数字,那么说明从返回的记录中取出对应顺序的值,而填写All将会返回所有的内容。

    (8)Save Offset

    设置关联的内容偏移量,从第几位开始进行关联操作。

    (9)Save Length

    关联出来的内容所需要保存的长度。

    (10)Warm if text was not found (Default is Error)

    如果关联的对象不存在,又该如何进行处理呢?默认值为Error,默认情况下如果没有关联到任何内容则提示错误。而选择该项,则只会简单提示没有抓到内容,不会产生错误。

    (11)Filters

    下面的选项都是帮助关联返回限定的,通过这些设置可以进一步减少返回的范围。

    (12)Scope

    该项设置关联查询的范围,在LR11中和以前的范围做了一些调整,应该算是更加强大,这里Scope提供了4个选项:Body、Headers、Cookies、All。

    ​ 1)ALL

    ​ 比较容易理解,就是让服务器的返回所有内容作为需要关联的目标来处理。

    ​ 2)Headers/Body/Cookies

    ​ 这3个选项都从请求返回的所有内容进行关联处理,包括图片、JavaScript脚本等。区别在于对返回信息的分隔方式。

    ​ 3)Header

    ​ 指所关联的内容是所有服务器返回请求的HTTP头部分内容。可以通过查看服务器返回内容来了解,Body之前的内容都属于Header。

    ​ 4)Body

    ​ 就是服务器返回在Body以后的内容。

    ​ 5)Cookie

    ​ 指Header部分关于Cookie定义的部分内容。

    (13)Request URL

    这里提供了针对URL地址的过滤方式来减少关联范围,例如,我们可以填写*.php来说明只对PHP页面进行过滤。

    (14)Content Type

    在网站应用中,我们要关联的内容一般都存放在HTML页面中,所以这里我们通常都是用text/html来作为Content Type过滤规则的。

    (15)Frame ID

    这个选项是专门针对框架结构的网站设计的,有些时候需要关联的内容是在某个框架中的,这时就需要说明所关联的页面是框架中的哪一个。

    (16)Ignore Redirection

    在某些情况下系统会使用HTTP 3xx的重定向操作来完成页面跳转,该选项是用来忽略跳转页面信息的。如果选中该选项,通过这种重定向技术的页面将不会被关联。

    7、90 Percent(用户感受百分比)

    在测试报告中经常可以看到这个统计值:90 Percent(用户感受百分比)

    这个值说明的采样数据中有90%的数据比它小,有10%的数据比它大。

    举例如下:

    假设有一组数据(1、3、4、6、5、7、8、2、9、10),从小到大排序之后为(1、2、3、4、5、6、7、8、9、10),在这10个数字中第九大的数字是9,所以90 Percent的结果就是9。

    它的主要作用就是来了解在某个响应时间内有百分之多少的用户。当然这个90%是可调整的,在Analysis中通过View菜单中Summary Filter下的Transaction Percentile选项来调整。

    8、General Options

    Virtual User Generator ---> General Options

    (1)Parameterization

    该标签提供参数化边界的设置

    在VuGen中,系统自己使用的变量叫作参数,参数的边界可以直接设定,默认使用左右花括号(不同的协议下的参数边界也不相同)。

    下面的这个选项是为了支持老的脚本而设置的,在较早版本的LoadRunner中,参数化是使用全局型数据表,所有的参数都保存在一个文件上,现在已经不再这样使用。

    图片

    (2)Replay

    该标签用于设置脚本回放

    图片

    Animated run

    这个选项经常需要使用,由于VuGen回放是基于协议的,所以脚本执行起来会非常迅速,可能根本来不及看执行的情况,这个时候可以通过降低脚本运行的速度来协助调试。

    在Animated run处可以填写具体的等待时间,就是一个函数和另外一个函数之间的等待时间(单位为毫秒),从而实现脚本的减速运行。这个功能需要和另外一个功能一起使用,打开View菜单,将Animated run选中,这样在脚本运行的时候,被运行的脚本会以反色显示。

    Only animate functions in Action sections选项只针对Action模块的代码实施动画运行,对init和end模块不实施该效果。

    注意:

    打开了Animated run这个功能,脚本的运行速度就会变慢。

    Prompt for results directory

    是否提示测试报告保存的目录名,在默认情况下会保存为result1。选中该选项后,每次运行脚本都会弹出对话框询问需要保存的新目录名。

    图片

    After Replay

    当脚本运行结束后,需要系统做什么样的操作,这里有3个选项可以使用。

    View before replay:返回在回放前的状态。

    Replay summary:直接打开向导中的回放结果统计。

    Visual Test Results:脚本运行结束后自动打开测试报告。

    (3)Environment

    该标签提供对开发环境的一些简单设置

    图片

    Auto Recovery

    定期保存恢复信息,有些时候VuGen会崩溃,如果希望能够自动保存,那么打开这个选项设置合理的保存时间即可。

    Editor

    编辑器的选项。

    (4)Display

    该标签对脚本回放时和回放后进行设置

    图片

    (5)Correlation

    该标签中包含关于关联的选项

    图片

    9、Recording Options

    Virtual User Generator ---> Recording Options

    (1)Http Properties

    Advanced:这里可以设置在录制HTTP过程中的一些高级选项

    图片

    Reset context for each action:录制中每个action之间是否需要重置context。context中存放请求发送返回后的数据信息,比如服务器返回的html、cookie、session等。选择了这个选项,Action之间会清空相关内容,那么基于行为模拟的函数web_link()会由于没有前文而无法运行,系统自动录制成为基于数据请求的函数web_url()。

    Save snapshot resources locally:在本地保存资源截图。当录制脚本时,LoadRunner会自动将HTML界面中的元素保存到当前脚本的data目录中,使用脚本中snapshot属性值(t数字.inf)作为操作对应的主文件,在.inf文件中说明了该snapshot所对应的内容,当我们切换到tree模式时,就能看到录制时界面的原型。虽然snapshot可以帮助我们更加直观地了解请求的返回,但是在进行性能测试过程中更多时候需要理解放回的代码而不是界面,这是因为动态化的客户端技术是无法在snapshot中很好兼容的。

    Generate web_reg_find functions for page titles:是否需要为每一个页面自动生成web_reg_find检查点函数来检查标题的变更。选中该选项后,会自动生成对标题的检查规则,回放脚本时会验证每个标题是否和录制时相同。其中Generate web_reg_find fuctions for sub-frames为子框架生成检查点函数。由于大多数情况页面的标题都是动态的,检查标题是否不变没有太大的意义,所以这个选项一般不做选择。

    Add comment to script for HTTP errors while recording:录制过程中如果出错则添加相关的注释内容。

    Support charset:在录制中文的时候会出现链接或者请求中的中文变成乱码的情况,通过转换函数解决这个问题。LR自身也提供了对该问题的解决,只需要在录制前选中该选项,那么所有的请求编码格式都会使用UTF-8的方式来处理,类型转换函数就可以省略了。当访问的页面如果不是UTF-8的编码格式,就不要选中该选项了,否则会因为错误的解码方式导致错误。

    Recording Engine:这是一个兼容性的选项,可以使用以前的录制引擎来录制脚本,注意选择该选项后需要重新启动VuGen,新建脚本才能切换到老的引擎上。

    Recording schemes:这里可以对录制的内容进行过滤。

    1.Headers:可以录制服务器返回HTTP请求包中的数据包头,在默认情况下是不录制HTTP Header的,如果有些数据存放在Header中,那么在这里就可以设置需要录制哪些内容。

    2.Content Types:对于录制的正文内容进行过滤,在默认情况下,所有的正文内容都会被录制下来,存放在每个请求的EXTRARES中,当脚本回访时会对EXTRARES进行读取验证。如果不需要录制图片等内容,可以在下面的规则中过滤掉多余的内容。

    3.Non-Resources:设置需要录制的请求格式,这里需要分析一下VuGen根据什么原理录制出来web_url()这种请求,其实它是根据HTTP请求中的返回格式来确定的。在默认情况下,VuGen认为text/html这种返回格式的内容是非资源的正文,需要录制出来,如果你希望将其他格式的请求也单独作为web_url()来进行录制,那么在这里应添加对应的Content Type。例如,添加image/gif,那么再次录制脚本时就会发现,所有的gif图片请求都被作为一个单独的web_url()函数进行处理。各种HTTP请求的文件类型可以先通过HttpWatch进行扫描确定。

    Correlation:是否打开脚本录制时的自动关联选项

    图片

    (2)Data Format Extension

    该功能的主要作用是将一些常见的编码格式进行转换,进而便于我们后期处理

    图片

    10、Create Controller Scenario

    Virtual User Generator ---> Create Controller Scenario

    打开Tools菜单下的Create Controller Scenario选项

    图片

    参数在场景下取值的对应关系

    图片

    11、Parameter List

    Virtual User Generator ---> Parameter List

    在默认情况下参数记录只显示100条记录,超过100条的记录可以被操作但是无法在VuGen中显示,修改安装目录下vugen.ini文件中[ParamTable]属性下的MaxVisibleLines为想显示的记录条数即可。

    File format表示文件格式,这里包括了以下两种格式。

    Column:列的格式包括Comma(逗号分隔符)、Tab(制表位分隔符)、Space(空格分隔符),用来帮助我们分隔列。默认选择Comma,该格式也是行业规范的CSV文件格式。

    First data:行的记录是从第几行开始的,设置几就是从第几行开始作为数据行,不计算标题。设置First data为2时,第一条记录从A变成B。

    图片

    Select next row包含以下选项:

    Sequential:顺序取值。

    Random:随机取值。

    Unique:唯一取值。

    1)Abort Vuser

    当参数取值超出参数表记录的条数时,忽略当前虚拟用户。

    2)Continue in a cyclic manner

    当参数取值超出参数表记录时,使用循环的方式取值。

    3)Continue with last value

    当参数取值超出参数表记录时,使用参数表中的最后一个值。

    Same line as:取某个参数的同行。

    Update value on包含以下选项:

    Each iteration:每次迭代更新。

    Each occurrence:每次取值更新。

    Once:只更新一次。

    选择Select next row 下的Sequential选项时,参数化的取值情况

    图片

    选择Select next row下的Random选项时,参数化的取值情况

    图片

    选择Select next row 下的Unique选项时,参数化的取值情况

    图片

  • 相关阅读:
    shell编程介绍
    第一章作业
    jenkins介绍与操作
    gitlab介绍与操作
    github介绍与操作
    git介绍与操作
    zabbix监控tomcat与安全规范
    js-20170605-基本语法
    webstorm激活方法
    mac的一些基本设置(分享篇)
  • 原文地址:https://www.cnblogs.com/lichaoya/p/14609547.html
Copyright © 2011-2022 走看看