51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 1706|回复: 1

[求助] LoadRunner 技巧之 集合点设置

[复制链接]

该用户从未签到

发表于 2018-4-19 11:46:42 | 显示全部楼层 |阅读模式
在loadrunner的虚拟用户中,术语concurrent(并发)和simultaneous(同时)存在一些区别,concurrent
是指虚拟场景中参于运行的虚拟用户。而simultaneous与集合点(rendzvous point)关系更密切,是指在同
一时刻一起执行某个任务的虚拟用户。

  我们来想象一个场景,10名运动员参加长跑比赛,出发点同时起跑,他们是并排奔跑的;跑了N圈之后,
因为有体能更强的,有体能稍弱的,他们的队形并排变成了前后。几乎一个跑道就可以供应他们的奔跑(运
行),那么其余的9条跑道就是空闲的。

为了充分的利用跑道,可以将跑道的起点设置一个集合点,当所有运动员跑完一圈后在起跑点集合,然后再
同时起跑。

运动员可以看作是虚拟用户,跑道可以看作是系统资源。设置集合点可以模式更加真实的并发请求,从而增
加对系统的负载。

下面录制一个登录触摸屏版139邮箱的脚本。录制步骤:

1、打开登录页面

2、插入集合点

3、输入用户名密码,点击登录按钮

4、登录页面加载完成,录制结束



脚本添加集合点                                                                    

当我们在不熟悉脚本的情况下,可以通过世录制操作面板来添加集合点。



如果你非常熟悉每一段脚本代码的作用,可以在脚本中添加:lr_rendezvous 集合点函数。

录制代码如下:

复制代码
  1. Action()
  2. {

  3.     web_url("wapmail.10086.cn",
  4.         "URL=http://wapmail.10086.cn/",
  5.         "Resource=0",
  6.         "RecContentType=text/html",
  7.         "Referer=",
  8.         "Snapshot=t19.inf",
  9.         "Mode=HTML",
  10.         EXTRARES,
  11.         "Url=http://wapmail.10086.cn:8000/img/p/logo.jpg", ENDITEM,
  12.         "Url=/favicon.ico", "Referer=", ENDITEM,
  13.         LAST);

  14.     web_custom_request("urs.asmx",
  15.         "URL=https://urs.microsoft.com/urs.asmx?MSURS-Client-Key=FcIacsb4XHR0aOJzGG/quQ%3d%3d&MSURS-Patented-Lock=NGkcbdtnuEs%3d",
  16.         "Method=POST",
  17.         "Resource=0",
  18.         "RecContentType=text/xml",
  19.         "Referer=",
  20.         "Snapshot=t20.inf",
  21.         "Mode=HTML",
  22.         "EncType=text/xml; charset=utf-8",
  23.         "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>aHR0cDovL3dhcG1haWwuMTAwODYuY24v</URL><O>POST</O><T>TOP</T><HIP>218.204.255.90</HIP></Rq><Rq><URL>aHR0cDovL3dhcG1haWwuMTAwODYuY24vaW5kZXguaHRt</URL><O>POST</O><T>ACTION</T><HIP>218.204.255.90</HIP></Rq></R></RepLookup>",
  24.         LAST);

  25.     web_custom_request("urs.asmx_2",
  26.         "URL=https://urs.microsoft.com/urs.asmx?MSURS-Client-Key=C84C0w6qif5yiuTi%2bfaoMg%3d%3d&MSURS-Patented-Lock=EQjsDl4IFSQ%3d",
  27.         "Method=POST",
  28.         "Resource=0",
  29.         "RecContentType=text/xml",
  30.         "Referer=",
  31.         "Snapshot=t21.inf",
  32.         "Mode=HTML",
  33.         "EncType=text/xml; charset=utf-8",
  34.         "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>aHR0cDovL3dhcG1haWwuMTAwODYuY24v</URL><O>PRE</O><T>TOP</T><HIP>218.204.255.90</HIP></Rq></R></RepLookup>",
  35.         LAST);

  36.    
  37.     lr_rendezvous("集合点")  //添加集合点
  38.    
  39.     lr_start_transaction("登陆");  //添加事务

  40.     web_submit_data("index.htm",
  41.         "Action=http://wapmail.10086.cn/index.htm",
  42.         "Method=POST",
  43.         "Referer=http://wapmail.10086.cn/",
  44.         "Mode=HTML",
  45.         ITEMDATA,
  46.         "Name=ur", "Value=fnngj", ENDITEM,
  47.         "Name=pw", "Value=heng198876", ENDITEM,
  48.         "Name=apc", "Value=0", ENDITEM,
  49.         "Name=_swv", "Value=5", ENDITEM,
  50.         "Name=a", "Value=3,5 ", ENDITEM,
  51.         "Name=_fv", "Value=3", ENDITEM,
  52.         "Name=clt", "Value=5", ENDITEM,
  53.         LAST);

  54.     web_submit_data("index.htm_2",
  55.         "Action=http://wapmail.10086.cn/index.htm",
  56.         "Method=POST",
  57.         "RecContentType=text/html",
  58.         "Referer=http://wapmail.10086.cn/",
  59.         "Snapshot=t22.inf",
  60.         "Mode=HTML",
  61.         ITEMDATA,
  62.         "Name=ur", "Value=XXXXX", ENDITEM,   //登陆用户名
  63.         "Name=pw", "Value=ooooo", ENDITEM, //登陆密码
  64.         "Name=apc", "Value=0", ENDITEM,
  65.         "Name=_swv", "Value=5", ENDITEM,
  66.         "Name=a", "Value=3,5 ", ENDITEM,
  67.         "Name=_fv", "Value=3", ENDITEM,
  68.         "Name=clt", "Value=5", ENDITEM,
  69.         LAST);

  70.     web_custom_request("handler",
  71.         "URL=http://m.mail.10086.cn/wp1/w3/handler",
  72.         "Method=POST",
  73.         "Resource=0",
  74.         "RecContentType=text/html",
  75.         "Referer=http://m.mail.10086.cn/bv1/home.html?mo=U0j5GuvVaLG3Xz0qMibbQok8g34_OABo&vn=288&logintype=0&cv=3&swv=5&cli=5",
  76.         "Snapshot=t23.inf",
  77.         "Mode=HTML",
  78.         "EncType=application/x-www-form-urlencoded;charset=UTF-8",
  79.         "Body=&mo=U0j5GuvVaLG3Xz0qMibbQok8g34_OABo&vn=288&vid=&__randomNumber=1362403651558",
  80.         EXTRARES,
  81.         "Url=/bv1/css/public.css?vn=288", "Referer=http://m.mail.10086.cn/bv1/home.html?mo=U0j5GuvVaLG3Xz0qMibbQok8g34_OABo&vn=288&logintype=0&cv=3&swv=5&cli=5", ENDITEM,
  82.         "Url=/bv1/js/home.js?vn=288", "Referer=http://m.mail.10086.cn/bv1/home.html?mo=U0j5GuvVaLG3Xz0qMibbQok8g34_OABo&vn=288&logintype=0&cv=3&swv=5&cli=5", ENDITEM,
  83.         LAST);


  84.     web_custom_request("costanalysis",
  85.         "URL=http://m.mail.10086.cn/wp1/w3/costanalysis",
  86.         "Method=POST",
  87.         "Resource=0",
  88.         "RecContentType=text/html",
  89.         "Referer=http://m.mail.10086.cn/bv1/home.html?mo=U0j5GuvVaLG3Xz0qMibbQok8g34_OABo&vn=288&logintype=0&cv=3&swv=5&cli=5",
  90.         "Snapshot=t24.inf",
  91.         "Mode=HTML",
  92.         "EncType=application/x-www-form-urlencoded;charset=UTF-8",
  93.         "Body=&mo=U0j5GuvVaLG3Xz0qMibbQok8g34_OABo&vn=288&vid=&cmd=999&d=478&b=1&t=710&body=2&r=5&ajaxInitTime=419&ajaxCostTime=285&ajaxBeginTime=0&downBeginTime=156&initBeginTime=704&logintime=5100&homejstime=2&homeutiljstime=2&ajaxSendTime=1362403651558&redirectTime=-1&__randomNumber=1362403652268",
  94.         EXTRARES,
  95.         "Url=/bv1/img/global_24.png", "Referer=http://m.mail.10086.cn/bv1/home.html?mo=U0j5GuvVaLG3Xz0qMibbQok8g34_OABo&vn=288&logintype=0&cv=3&swv=5&cli=5", ENDITEM,
  96.         "Url=/favicon.ico", "Referer=", ENDITEM,
  97.         LAST);

  98.     web_custom_request("urs.asmx_3",
  99.         "URL=https://urs.microsoft.com/urs.asmx?MSURS-Client-Key=maVKmMoyQiei4%2bdFLSDDAA%3d%3d&MSURS-Patented-Lock=HitWNt%2b1Bns%3d",
  100.         "Method=POST",
  101.         "Resource=0",
  102.         "RecContentType=text/xml",
  103.         "Referer=",
  104.         "Snapshot=t25.inf",
  105.         "Mode=HTML",
  106.         "EncType=text/xml; charset=utf-8",
  107.         "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>aHR0cDovL20ubWFpbC4xMDA4Ni5jbi9idjEvaG9tZS5odG1sP21vPVUwajVHdXZWYUxHM1h6MHFNaWJiUW9rOGczNF9PQUJvJnZuPTI4OCZsb2dpbnR5cGU9MCZjdj0zJnN3dj01JmNsaT01</URL><O>PRE</O><T>TOP</T><HIP>113.108.212.38</HIP></Rq></R></RepLookup>",
  108.         LAST);

  109.     web_custom_request("urs.asmx_4",
  110.         "URL=https://urs.microsoft.com/urs.asmx?MSURS-Client-Key=r/4pztMEzQOon4ZLeymWxw%3d%3d&MSURS-Patented-Lock=a7q4TZRzKXk%3d",
  111.         "Method=POST",
  112.         "Resource=0",
  113.         "RecContentType=text/xml",
  114.         "Referer=",
  115.         "Snapshot=t26.inf",
  116.         "Mode=HTML",
  117.         "EncType=text/xml; charset=utf-8",
  118.         "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>aHR0cDovL20ubWFpbC4xMDA4Ni5jbi9idjEvaG9tZS5odG1sP21vPVUwajVHdXZWYUxHM1h6MHFNaWJiUW9rOGczNF9PQUJvJnZuPTI4OCZsb2dpbnR5cGU9MCZjdj0zJnN3dj01JmNsaT01</URL><O>POST</O><T>TOP</T><HIP>113.108.212.38</HIP></Rq></R></RepLookup>",
  119.         LAST);

  120.     lr_end_transaction("登陆",LR_AUTO);  //登录事物结束

  121.     return 0;
  122. }
复制代码

复制代码




控制器中设置集合点策略                                                      

  我们在Virtual User Generator 中回放脚本无法体现集合点的作用。集合点是在多用户并发运行的时
候才能起作用。所以,我们需要把脚本导入到Controller 中进行进一步的设置。

1、打开Controller (控制器),导入录制的脚本。

2、菜单栏 Scenario ---> Rendezvous 打开集合点设置界面



我们可以看到Vusers 列表框里有10个集合点(1~10),这里的数量和我们设置的虚拟用户数一致。

我们可以点击选中某个集合点,点击“Disable VUser” 按钮,使其不参与集合点。(某班级早晨集合跑步,
A同学肚子痛,经过老师的允许不参与早晨的集合跑步。)

点击“Policy...”来设置集合点的策略:



下面来看看这三种策略的含义:

Release when :当所有虚拟用户中的x % 到达集合点进释放,即仅当指定百分比的虚拟用户到达集合点时,
才释放虚拟用户。

注意:此选项将会干扰场景的计划。如果选择此选项,场景将不按计划运行。



Release when :当所有正在运行的虚拟用户中的x %到达集合点时释放,即仅当场景中指定百分比的、正
在运行的虚拟用户到达集合点时,才释放虚拟用户。

  还有不在运行的虚拟用户? 假如,设置为1分钟启动一个用户,当然会存在因为用户还没启动,所以
无法参与集合点。



Release when : 当x 个虚拟用户到达集合点时释放,即仅当指定数量的虚拟用户到达集合点时,才释放
虚拟用户。

  这个很好理解,当我用百分比不太好衡量集合点的虚拟用户数,当然可以设置具体的用户数。



Timeout between Vusers (虚拟用户之间的超时)框中输入一个超时值。

  假如设置了集合10用户并发,结果9个用户已经集合到位,还剩1个虚拟用户,左等右等就是等不来。
那总不能一直等下去吧。设定了个时间,假如30秒还不来,那就不管它了。

  超时的时长默认是30秒,我们可以根据具体的被测应用进行调整。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-3-29 12:53 , Processed in 0.069769 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表