LoadRunner 技巧之 思考时间设置

用户访问某个网站或软件,一般不会不停地做个各种操作,例如一次查询,用户需要时间查看查询的结果是否是自己想要的。例如一次订单提交,用户需要时间核对自己填写的信息是否正确等。

也就是说用户在做某些操作时,是会有停留时间的,我把这个时间叫思考时间。但利用代码去执行的时候是没有时间的,当然,脚本运行本身是需要时间的,但比起人的思考时间要小很多。这也是我们为什么要用软件来代替人的某些工作。

但有时候,我们在做性能测试时,为了更真实的模拟用户的操作,需要给代码加入思考时间。来看看在loadrunner是如何设置思考时间的。

打开loadrunner 的Virtual User Generator

菜单栏:Vuser ---Run-Time settings...,切换到Thark Time选项

好吧!为了更好的理解这个界面上设置,现在我们通过一个脚本来分析。

Action()
{

double trans_time;  //定义变量

web_url("www.baidu.com",
        "URL=http://www.baidu.com/",
        "Resource=0",
       
"RecContentType=text/html",
        "Referer=",
        "Snapshot=t1.inf",
        "Mode=HTML",
        LAST);

web_url("i-1.0.0.png",
        "URL=http://s1.bdstatic.com/r/www/img/i-1.0.0.png",

        "Resource=1",
       
"RecContentType=image/png",
        "Referer=http://www.baidu.com/",
        "Snapshot=t2.inf",
        LAST);

web_url("favicon.ico",
        "URL=http://www.baidu.com/favicon.ico",

        "Resource=1",
        "RecContentType=image/x-icon",

        "Referer=",
        "Snapshot=t3.inf",
        LAST);

web_url("su",
        "URL=http://suggestion.baidu.com/su?wd=&cb=window.bdsug.sugPreRequest&sid=1466&t=1362316450913",

        "Resource=1",
       
"RecContentType=baiduapp/json",
        "Referer=http://www.baidu.com/",
        "Snapshot=t4.inf",
        LAST);

lr_start_transaction("注册");  //添加事务
    lr_think_time(20);    //设置思考时间

web_url("v.gif",
        "URL=http://nsclick.baidu.com/v.gif?pid=201&pj=www&rsv_sid=1466&fm=behs&tab=tj_reg&un=&path=http%3A%2F%2Fwww.baidu.com%2F&t=1362316485456",

        "Resource=1",
        "Referer=http://www.baidu.com/",
        LAST);

web_url("favicon.ico_2",
        "URL=https://passport.baidu.com/favicon.ico",

        "Resource=1",
       
"RecContentType=application/octet-stream",
        "Referer=",
        "Snapshot=t5.inf",
        LAST);

web_link("注册",
        "Text=注册",
        "Snapshot=t6.inf",
        LAST);

web_custom_request("urs.asmx",
        "URL=https://urs.microsoft.com/urs.asmx?MSURS-Client-Key=WI0pAZHPdb%2b3UDOD0AtzxA%3d%3d&MSURS-Patented-Lock=S1IpDfNCCC4%3d",

        "Method=POST",
        "Resource=0",
       
"RecContentType=text/xml",
        "Referer=",
        "Snapshot=t7.inf",
        "Mode=HTML",
        "EncType=text/xml;
charset=utf-8",
        "Body=<RepLookup
v=\"3\"><G>ED8654D5-B9F0-4DD9-B3E8-F8F560086FDF</G><O>F03F2D77-79E1-4DEC-BBF8-81A5C0790160</O><D>9.0.8110.0</D><C>9.00.8112.16421</C><OS>6.1.7601.1.0</OS><I>9.0.8112.16421</I><L>zh-CN</L><R><Rq><URL>aHR0cHM6Ly9wYXNzcG9ydC5iYWlkdS5jb20vdjIvP3JlZyZyZWdUeXBlPTEmdHBsPW1uJnU9aHR0cCUzQSUyRiUyRnd3dy5iYWlkdS5jb20lMkY=</URL><O>PRE</O><T>TOP</T><HIP>220.181.111.48</HIP></Rq></R></RepLookup>",

        EXTRARES,
        "Url=https://passport.baidu.com/img/topbarnav_bg.png",
"Referer=https://passport.baidu.com/v2/?reg&regType=1&tpl=mn&u=http%3A%2F%2Fwww.baidu.com%2F",
ENDITEM,
        "Url=https://passport.baidu.com/passApi/js/reg_6e270622.js",
"Referer=https://passport.baidu.com/v2/?reg&regType=1&tpl=mn&u=http%3A%2F%2Fwww.baidu.com%2F",
ENDITEM,
        "Url=https://passport.baidu.com/passApi/img/small_blank_9dbbfbb1.gif",
"Referer=https://passport.baidu.com/v2/?reg&regType=1&tpl=mn&u=http%3A%2F%2Fwww.baidu.com%2F",
ENDITEM,
        LAST);

web_url("api",
        "URL=https://passport.baidu.com/v2/api/?getapi&tpl=mn&apiver=v3&tt=1362316491971&class=reg&callback=bd__cbs__c93h6w",

        "Resource=0",
       
"RecContentType=text/html",
        "Referer=https://passport.baidu.com/v2/?reg&regType=1&tpl=mn&u=http%3A%2F%2Fwww.baidu.com%2F",

        "Snapshot=t8.inf",
        "Mode=HTML",
        EXTRARES,
       
"Url=/img/v.gif?type=1&regType=mail", "Referer=https://passport.baidu.com/v2/?reg&regType=1&tpl=mn&u=http%3A%2F%2Fwww.baidu.com%2F",
ENDITEM,
        LAST);

web_url("api_2",
        "URL=https://passport.baidu.com/v2/api/?getapi&tpl=mn&apiver=v3&tt=1362316491978&class=regPhone&callback=bd__cbs__xs2rv5",

        "Resource=0",
       
"RecContentType=text/html",
        "Referer=https://passport.baidu.com/v2/?reg&regType=1&tpl=mn&u=http%3A%2F%2Fwww.baidu.com%2F",

        "Snapshot=t9.inf",
        "Mode=HTML",
        EXTRARES,
       
"Url=/cgi-bin/genimage?001362316472015690A3686612594D3D2C14ABF30D0B432CF4462DF3A4B5A8E5E7B7EE094DCAB428311C96E23B35A3CB73A67533699084E25A27CF6C9745497B5C5435611E0593A615CC284B27D70CA5FFB5F771E5D7DC9EE266F6FD61A2D88FEC7B7BA20EFF5DE2CD301E011E634D5063BDDCD35A47C1EB7B5EF365B347DD5800C612B744FAEF845540239F1036CC800902957BD17F36F6547B71C198C154162F8F71077B935E6B",
"Referer=https://passport.baidu.com/v2/?reg&regType=1&tpl=mn&u=http%3A%2F%2Fwww.baidu.com%2F",
ENDITEM,
       
"Url=/img/bd-split.gif", "Referer=https://passport.baidu.com/v2/?reg&regType=1&tpl=mn&u=http%3A%2F%2Fwww.baidu.com%2F",
ENDITEM,
       
"Url=/img/reg_tip_header_t.gif", "Referer=https://passport.baidu.com/v2/?reg&regType=1&tpl=mn&u=http%3A%2F%2Fwww.baidu.com%2F",
ENDITEM,
       
"Url=/img/reg_tip_bg_bottom.gif", "Referer=https://passport.baidu.com/v2/?reg&regType=1&tpl=mn&u=http%3A%2F%2Fwww.baidu.com%2F",
ENDITEM,
        LAST);

trans_time=lr_get_transaction_wasted_time("注册");  //获得消耗时间

if (trans_time) {
        lr_output_message("The
duration up to the submit is %f seconds",trans_time);  //打印输出消耗实时间
    }else{
        lr_output_message("the
duration cannot be determined. ");
    }

lr_end_transaction("注册",LR_AUTO);  //事务结束

return 0;
}

脚本有点长,但不要被吓到了,重要的几句我已经加了注释。你只用关注那几行就行了。

lgnore think time :忽视思考时间,也就说勾选这一项的时候 ,你脚本中加入的lr_think_time 函数设置是无效的。选中这一项,运行上面的脚本。

Action.c(62): The duration up to the submit is 0.032043 seconds
Action.c(67): Notify: Transaction "注册" ended with "Pass" status
(Duration: 12.4113 Wasted Time: 0.0320).

虽然我在脚本中加入了lr_think_time(20); 这条语句,显现没起到任何作用。

Replay think time:回放思考时间

来看第一个选项:

As recorded : 取决于记录,选种这一项再来运行上面的脚本。

Action.c(111): The duration up to the submit is 0.034508 seconds
Action.c(116): Notify: Transaction "注册" ended with "Pass" status
(Duration: 50.4453 Think Time: 20.0000 Wasted Time: 0.0345).
Ending action Action.

运行结果中多了一个 Think Time: 20.0000 ;这说明我们脚本中的lr_think_time(20); 起到了作用,选中这一项后,我们可以在脚本中任意的添加思考时间。

Multiply recorded think time by: 录制思考时间乘以,使用录制思考时间的倍数。

其实,在我们脚本录制的过程中,根据我们的操作,脚本中就可以生成相应的思考时间。这个参数是根据脚本中的思考时间进行调整的。

例如:脚本是20秒,输入2,那么在脚本实际运行时,思考时间将为40秒;输入0.5 ,脚本在运行时的思考时间为10秒。下面选中此项,输入0.5,再来查看脚本运行结果:

Action.c(111): The duration up to the submit is 0.036610 seconds
Action.c(116): Notify: Transaction "注册" ended with "Pass" status
(Duration: 131.2022 Think Time: 9.9998 Wasted Time: 0.0366).

注:将原谅脚本会有0.0002秒的误差。

Use random percentage of recorded think time : 使用录制思考时间的百分比。

通过指定思考的时间的范围,可以设置思考时间值的范围。假如思考时间为20秒,这里设置的范围为50% 到100% ,那么脚本运行时候将随即的在这个范围(10秒到20秒之间)内取值。下面再来查看脚本运行时间:

Action.c(111): The duration up to the submit is 0.036191 seconds
Action.c(116): Notify: Transaction "注册" ended with "Pass" status
(Duration: 40.8002 Think Time: 15.0050 Wasted Time: 0.0362).

这一次Think Time: 为15.0050 ,是在10到20秒的范围之内,你再次运行会发现这个时间不一样,但不会超出设定的范围。

Limit think time to:  限制思考时间的最大值。

假如脚本设置的思考时间为20秒,选中这一项并设置为10秒。那么脚本在运行时,思考时间不会超过10秒。也就是说这设置同样也制约前面几个选项。这个你可以自行设置验证。

感谢

double trans_time;  //定义变量
......
lr_start_transaction("注册"); //添加事物
    lr_think_time(8);   //思考时间

.......
trans_time=lr_get_transaction_wasted_time("注册"); 
//获得消耗时间

if (trans_time) {
        lr_output_message("The
duration up to the submit is %f seconds",trans_time);  //打印输出消耗实时间
    }else{
        lr_output_message("the
duration cannot be determined. ");
    }

lr_end_transaction("注册",LR_AUTO);  //事务结束

..........

感谢上面这段代码很好帮助我们理解思考时间。

备注:添加思考时间可以更真实的模拟用户行为,但它同时降低了用户并发。也就是说思考时间越长,对服务器的压力会越小。

LoadRunner 技巧之 思考时间设置的更多相关文章

  1. LoadRunner 技巧之 集合点设置

    LoadRunner 技巧之 集合点设置 Loadrunner 技巧已经整理4篇了,你个一定疑问,这些知识点,网上随处可见.确实,由于长时间没有使用这个工具,造成我的一些概念开始在大脑中模糊,我只是用 ...

  2. LoadRunner ---思考时间设置

    用户访问某个网站或软件,一般不会不停地做个各种操作,例如一次查询,用户需要时间查看查询的结果是否是自己想要的.例如一次订单提交,用户需要时间核对自己填写的信息是否正确等. 也就是说用户在做某些操作时, ...

  3. (原创)HyperPacer使用技巧之集合点设置

    版权声明:本文为原创文章,转载请先联系并标明出处 性能测试中,我们可以模拟最真实的用户操作来建立性能模型,但是这种模拟是相对的.譬如12306网站春运开始后每一天都是高峰,这种高负载情况会持续一至两个 ...

  4. Loadrunner12-思考时间设置

    1.什么是思考时间 简单来说就是可以在不同的操作之间做停顿,最大程度的模拟用户最真实的操作. 2.如何设置思考时间 函数:lr_think_time(4) 进入Runtime Settings页面,快 ...

  5. Loadrunner之脚本的思考时间(固定/随机)设置、调试、保存、测试服务器监控等(六)

    一.思考时间的设置 1)设置固定思考时间: Action(){ // … your code lr_think_time(3); //固定设置此处思考时间3s // … more of your co ...

  6. loadrunner设置Analysis分析时去掉思考时间

    在进行对loadrunner进行执行脚本的情况下,那么就需要在脚本中进行添加为思考时间,这样才更符合人为的脚本时间,那么在进行执行压力的过程中,思考时间是需要开启的,完成之后为了便于分析那么就需要把思 ...

  7. LoadRunner事务/集合点/思考时间详解(转)

    在LoadRunner的脚步编写中,有三个重要的概念:事务.集合点.思考时间. 一.事务: 事务又称为Transaction,我们为了衡量某个action的性能,需要在action的开始和结束位置插入 ...

  8. loadrunner 事务、同步点和思考时间

    事务 在LoadRunner里,我们定义事务主要是为了度量服务器的性能.每个事务度量服务器响应指定的Vuser请求所有的时间,这些请求可以是简单任务,也可以是复杂任务. 要度量事务,需要插入Vuser ...

  9. LoadRunner手写脚本、检查点、集合点、事务、思考时间

    手写脚本 什么时候要手写? 可以有条件手写脚本的场景有两类: 有接口说明文档 没有借口说明文档,要去录制,录制不了,抓包手写 所需函数 我们这里讲的例子是基于 http 协议的,也是常见的两种请求类型 ...

随机推荐

  1. python面向编程;类的绑定与非绑定方法、反射、内置方法

    一.类的绑定与非绑定方法 ''' 类中定义函数分为了两大类: 1. 绑定方法 特殊之处: 绑定给谁就应该由谁来调用,谁来调用就会将谁当做第一个参数自动传入 绑定给对象的方法: 在类中定义函数没有被任何 ...

  2. three.js之元素周期表

    <html><head> <title>three.js css3d - periodic table</title> <meta charset ...

  3. 将本地代码使用Git上传更新至Github

    注册.配置git 1. 首先注册git image 2.然后下载.配置git 百度“git下载”,然后默认安装,注意的是最后要添加环境变量,最后安装结果如下: image 配置如下: 1.设置本地的s ...

  4. Resource ResourceLoader

    DefaultResourceLoader   -- > ResourceLoader 方法 ResourceLoader getResource(String location); Class ...

  5. 特征工程之分箱--Best-KS分箱

    变量的KS值 KS(Kolmogorov-Smirnov)用于模型风险区分能力进行评估,指标衡量的是好坏样本累计部分之间的差距 .KS值越大,表示该变量越能将正,负客户的区分程度越大.通常来说,KS& ...

  6. Luogu P4331 [BOI2004]Sequence 数字序列 (左偏树论文题)

    清晰明了%%% Fairycastle的博客 个人习惯把size什么的存在左偏树结点内,这样在外面好写,在里面就是模板(只用修改update). 可以对比一下代码(好像也差不多-) MY CODE # ...

  7. robotframework 模拟滚动鼠标到底部

    Execute Javascript var ele = document.getElementsByClassName("right_main")[0];ele.scrollTo ...

  8. Codeforces Round #446 Div1 E

    题目大意 有n个数,进行k轮操作:随机一个i,让\(a_i\)减1,然后ans加上\(\Pi_{j\neq i}a_i\). 求ans的期望. 分析 发现,造成的伤害就是原来的ai的积减去k轮操作后的 ...

  9. 【GDKOI2018】总结

    前言 车祸现场... day1 T1:其实就是对于每个点的有用的时间点建一个点,然后连边,对于询问(x,y),从点(y,inf),往回走,能走到的最早的x的时间点就是答案. 比赛上用最后的一个多小时来 ...

  10. 题解 [ZJOI2008]树的统计Count

    [ZJOI2008]树的统计Count Description 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w.我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u ...