lr_VuGen(get/post,参数化)

http://blog.sina.com.cn/s/blog_b9e81be90102w5rc.html
http://blog.sina.com.cn/s/blog_b9e81be90102w5r7.html

get请求和post请求

web_linkweb_submit_form依赖于上下文,需要关注页面的前后顺序。
web_urlweb_submit_data不依赖于上下文,只需关注业务逻辑。推荐使用。

1.web_link

web_link 函数是一个操作函数,它模拟鼠标单击由属性定义的链接。web_link 只能在上一个操作的上下文中执行。(如果上一个操作返回的界面不正确或者异常,那么基于这个操作的下面的脚本执行可能会不成功。)

该函数可以通过脚本录制自动生成,对于web页面链接性质的页面元素,就可以使用该函数。比如一个下载链接。

web_link("在测试结果中显示的名称",
          "TEXT=需要单击的超链接名",
          "Ord=要点击的同名链接的序号",                              
          "Snapshot=该操作后的内容被抓图保存到的文件",
          LAST);

2.web_url

Web_url根据函数中的URL属性加载对应的URL,不需要上下文

web_url("q.html", 

"URL=http://seapp.stat.360safe.com/q.html....., 
"Resource=0", 
"RecContentType=text/html", 
"Referer=", 
"Mode=HTML", 
ITEMDATA,
"Name=upinfoUrl", "Value=http:/upremind/get_ipa_upinfo.php", ENDITEM, 
"Name=Reqtype", "Value=1", ENDITEM, 

.......

ENDITEM,​
EXTRARES, 
"Url=http://pvstat.qihoo.com/dimana.gif?........, "Referer=", 
LAST);

各个要素的解释:

name:vugen树形视图中显示的名称。
URL:页面的url地址。
Resource:指定一个值说明这个URL是否是一个资源,0 表示不是资源,1 表示是资源​
​RecContentType:在录制期间响应的报头文本类型(text/html, application/x- javascript),这是为了确认目标URL是否是可录制的资源。
referer:要提交页面请求的URL .(获得当前页面,如果明确指出了位置,那么这个属性无效或者忽略。)
mode:录制的等级,是否是HTML或者HTTP模式。
​itemdata: 数据域和属性的分隔符。
enditem:列表中每个资源的结束标志符。(一个name、value、file等组合要素后面跟一个enditem,不是每个要素后面都跟enditem)

EXTRARES:分隔符,表明下面的参数就是资源属性的列表了。(如果在recording setting->recording->html-based script->html advanced的下半部分中选择的是:不录制非html的要素,那么录制后的脚本中不显示extrares及后面的信息。)

url:要下载的web资源URL地址。
referer:发送下载请求的页面。比如一个swf要下载一个图片,那么swf就是referer
last​:属性列表结束的标记符。

3.web_submit_data

web_submit_data函数处理无状态或者上下文无关的表单提交。它用来生成表单的GET或POST请求,这些请求与Form自动生成的请求是一样的。发送这些请求时不需要表单上下文

当VuGen设为基于URL的录制模式,或者基于HTML的录制方式但是Recording Options—HTML Advanced 下的A script containing explicit URLs only 选项被选中时,web_submmit_data函数才会录制到。

如果VuGen处于HTTP录制模式下,此时记录Web进程时,会产生此函数。在提交Form时,如果无法生成web_submit_form函数,VuGen也会生成web_submit_data函数。

web_submit_data("default.aspx",

      "Action=http://lazarus/flightnet/default.aspx",
      "Method=POST",
      "TargetFrame=",
      "RecContentType=text/html",
      "Referer=http://lazarus/flightnet/",
      "Snapshot=t7.inf",
      "Mode=HTML",
      ITEMDATA,
      "Name=grpType", "Value=radRoundtrip", ENDITEM,
      "Name=lstDepartingCity", "Value=DEN", ENDITEM,
      .......
      LAST);

各个要素解释:

**Action:**Form中的ACTION属性,指定了完成Form中的操作用到的URL。​
Method:表单提交方法:POST或GET(默认是POST)。
EncType:编码方式。

注:
表单中enctype=”multipart/form-data”的意思,是设置表单的MIME编码。默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传;只有使用了multipart/form-data,才能完整的传递文件数据,进行下面的操作.enctype=”multipart/form-data”是上传二进制数据;
form里面的input的值以2进制的方式传过去。

TargetFrame:包含当前链接或资源的Frame。
​RecContentType:在录制期间响应的报头文本类型(text/html, application/x- javascript),这是为了确认目标URL是否是可录制的资源。

referer:页面地址(上一个地址?)
snapshot: 页面快照名称
mode:录制模式

4.web_submit_form

用web_submit_form函数提交表单数据:
HTTP POST 请求,最常见的参数形式;

web_submit_form("authenticate", 
"Snapshot=t2.inf", 
ITEMDATA, 
"Name=username", "Value=root", ENDITEM, 
"Name=password", "Value=2012", ENDITEM, 
"Name=remember", "Value=<OFF>", ENDITEM, 
LAST);

注:

Web_submit_form只提供了和Cache中有差别的数据,其余的数据会自动从Cache中取。而Web_submit_data则提供了所有的数据,不管Cache存在不存,Web_submit_data都是可以工作的

所以厂商会推荐使用Web_submit_form,因为它看起来更易用,甚至关联都不需要作,就能直接回放。但是这种情况只能对于简单系统适用。对于一些银行或者移动的复杂系统来说,有时侯会对Cache作特殊操作,Web_submit_form有时侯就会报一些莫名其妙的错出来。而Web_submit_data则跟Cache内容无关。稳定性和可控性都要比Web_submit_form要高很多


参数化

参数和变量的区别

参数是必须在””双引号中才能应用的,而变量如果使用””双引号则变成了一个字符串;

参数是全局的,在脚本的任何一个action都可以使用,而变量一般是局部的,而且必须在action的最开始定义,否则会出现错误;

参数是可以直接在loadrunner的函数中应用的,绝大多数情况下我们都可以直接用参数替换掉函数中””双引号内的数据,变量是属于C语言的,所以他不能直接应用在loadrunner函数中;

参数数组中参数必须都是以相同的名字开头,接下划线加数字的方式顺序赋值,参数数组必须有一个参数名_count的参数来记录数组的长度

1、parameter type参数类型

File文件

Date/time日期/时间
Group name组名
Iteration number重复编号

Table表

Unique number唯一编号
Random number随机编号
Load generator name下载生成名称
User defined function使用规定的功能
Vuser id虚拟用户ID
XML XML

2、File文件存储位置

  Add column添加列
  Add row添加行
  Delete column删除列
  Delete row删除行
  Edit with notepad使用文本编辑
  Data wizard通过数据库从ODBC导入
  Simulate parameter模拟参数

3、select column选择列

  By number通过编号
  By name通过名称

4、file format文件格式

  Column列分隔符comma逗号分隔符tab制表分隔符space空格分隔符
  First data第一个数据行

5、select next row选择下一行的设置

  Sequential顺序取值,顺序地向Vuser分配参数值
  Random随机取值
  Unique唯一取值
  Same line as XX取某一个参数的同一行

6、update value on更新值的时间设置

  Each iteration每次迭代更新;指Vuser为每次脚本迭代使用新值
  Each occurrence每次取值更新;指Vuser为每次参数出现时使用新值
  Once只更新一次;指Vuser在方案运行期间仅对参数值更新一次

7、when out of value超出后的值设置

  Abort vuser当超出时终止脚本
Continue in a cyclic manner当超出时回到列表头再次取值
Continue with last value使用参数表中的最后一个值

8、allocate vuser values in the controller控制器里分配虚拟用户数值

Automatically allocate block size自动分配程序块大小
Allocate XXX values for each vuser为每个虚拟用户分配XXX值

参数列表:
参数列表

脚本中用参数替代变量:(注意用大括号{})

这里写图片描述


唯一参数

这里写图片描述

注意:username每一行取值要不同,但password列无影响。实际测试时,尽量利用数据库中真实存在的用户名,针对密码MD5加密的情况,新建一列,设置统一的MD5密码。

//若在函数外部需要使用参数,用lr_eval_string()函数

lr_output_message(lr_eval_string("{username}"));

//lr_output_message相当于c语言的printf,
//由于loadrunner使用C语言的编辑器,
//基本C语言的函数都可以在Lr中使用,除了特定的函数,如printf

这里写图片描述
注:图中,when out of values取值为:continue with last value
故10个数据执行15次,后5次以最后一次的value作为输出值。

block size:参数/用户数,
如100个参数,并发5个用户,那么每个用户只能取20次值。

这里写图片描述
实际测试时,不常用Runtime Setting里的Iteration Count,而是设置Controller里的运行时间Duration和Start Vusers


其他参数

Parameter List 中
Parameter type设置为 Random Number
Update value设置为 Each Occurrence
这里写图片描述
运行5次,每次出现的值都不一样
这里写图片描述
Parameter type还可以设置为Date/Time,Unique Number,Vuser ID….


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值