LoadRunner

1、loadrunner如何选择协议?

lr是一种基于协议的工具,在录制时VuGen会捕获客户端和服务器之间的通信数据包。LR的录制和WR不一样,它不关心你的对象识别什么的,不关心你的什么窗口之类的,LR有一个Agent进程,来专门监控客户端和服务器之间的通信,然后用自己的函数进行录制。所以说,LR录制的时候关心的是通信,是客户端和服务器之间的数据包。

2、进入recording标签页之后可以看到web(http/html)协议共有两种录制方式:“HTML-based script”和“URL-based script”。“HTML-based script”默认模式,为每个用户请求生成单独的函数,“URL-based script“录制所有的客户端请求和从服务器返回的资源,捕获所有作为用户操作的结果发送到服务器的HTTP请求,然后一一记录下来。可以捕获非HTML应用程序,例如小程序和非浏览器应用程序。

总结:
HMTL录制级别会为每一个HTML用户动作产生一个单独的步骤。而且HTML方式产生的脚本非常简洁和直述,易于阅读。
URL录制级别把对服务器每个对象的请求,都录制成一个单独的请求。对业务过程有更好的控制。

什么时候应该选择HTML-based script,什么时候应该选择URL-based script呢?一般来说,如果是标准使用IE访问的B/S架构,应使用HTML-based script方式。如果是一个非IE标准的C/S架构,建议使用URL-based script来录制脚本,这样可以确保不会遗漏任何HTTP请求。但有时候基于B/S架构的应用程序使用了javascript或者https安全协议之类的,也应该用URL-based script,而不是HTML-based script。

总之,简单的方法是如果使用HTML-based script模式录制后不能成功回放,则考虑改用URL-based script模式来进行录制。

3、 如果选择了HTML-based script模式后,Script type提供了基于HTML方式下的两种不同的脚本类型:基于解释用户行为的脚本和基于URL请求的脚本。使用HTML-based script下的A script describing user actions好处是脚本简洁,基于用户操作进行模拟,浅显易懂,并且自身就包含了对象检查过程,无须校验。其缺点是当页面中存在多个同名链接时难以区分,此时就要用到另外一种脚本模式:A script containing explicit URLs only。

4、分析脚本

此为用使用HTML-based script下的A script describing user actions录制的脚本

Action()
{

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

lr_think_time(10);

web_submit_form("login.pl",
"Snapshot=t2.inf",
ITEMDATA,
"Name=username", "Value=joy", ENDITEM,
"Name=password", "Value=1234", ENDITEM,
"Name=login.x", "Value=38", ENDITEM,
"Name=login.y", "Value=5", ENDITEM,
LAST);

web_image("Search Flights Button",
"Alt=Search Flights Button",
"Snapshot=t4.inf",
LAST);

web_image("SignOff Button",
"Alt=SignOff Button",
"Snapshot=t9.inf",
LAST);

return 0;###表示函数正常结束退出,return -1则说明函数错误退出。
}

函数详解:

web_link()和web_url()函数都是页面访问型函数,实现HTTP请求中的GET方法。

web_submit_form()和web_submit_data()函数,实现HTTP请求中的POST方法。

web_link()函数

web_link()函数功能描述:

此函数用来模拟用户单击一个超链接的操作。VuGen会记录访问页面后服务器返回的内容中有多少个超链接。

当使用web_link()函数时,只要写出正确的链接名,VuGen会自动查找并访问页面中该链接名所指向的URL地址。此函数是使用A script describing user actions选项才可以得到的。

web_link()函数的基本语法:

web_link("在测试结果中显示的名称",

"TEXT=需要单击的超链接名",

"Ord=要点击的同名链接的序号",

"Snapshot=该操作后的内容被抓图保存到的文件",

LAST);

注意:

a、Ord关键字中,同名链接的先后顺序是根据HTML代码的解释顺序来确定的。(从左往右,从上往下)

b、此函数本身就包含了对象检查过程,无须校验。(如果:TEXT后面的文字不存在,即报错)

c、web_link函数要求第一个逗号前的内容必须是字符串。

d、最后的LAST表示这个函数的结束。

web_link()函数示例:

web_link("link_name",

"TEXT=click me here",

"Ord=3",

"Snapshot=t3.inf",

LAST);

web_url()函数

web_url()函数功能描述:

此函数用来模拟用户请求,它也是在脚本中最常使用的函数之一。

web_url()函数的基本语法:

web_url("在测试结果中显示的名称",

"URL=需要访问的超链地址",

LAST);

web_url()函数示例:

web_url("东方财富网",

"URL=http://www.eastmoney.com/",

LAST);

注意:

a、在录制出来的web_url()或者web_link()函数中,经常还能看到如下所示的大量内容:

EXTRARES

"URL=../bite.jpg","Referer=http://www.eastomoney.com",ENDITEM,

......

这一段内容说明在载入这个页面时还有其他图片或者附属资源需要下载。

web_submit_form()函数

功能描述:

该函数会自动检测当前页面上是否存在form,如果存在则将后面ITEMDATA数据进行传送。

web_submit_data()函数

功能描述:

与web_submit_form()函数不同,web_submit_data()函数无须前面的页面支持,直接发送给对应页面相关数据即可。

其中,Action说明提交表单的处理页面,Method表明提交数据的方式。

当使用此函数时,隐藏表单中的数据也会被记录下来作为ITEMDATA数据提交给服务器。

web_custom_request()函数

也是经常被用到的一个函数,当请求比较特别时,VuGen无法简单使用以上4个函数进行表述,那么录制后便会出现此函数。

这个函数的作用是自定义HTTP请求规则,该函数更适合在使用自定义的HTTP请求规则中处理二进制内容。

5、以LR开头的函数是loadrunner自带的基础函数,而以web开头的函数是指Web Vuser script函数,用来模拟用户行为。在脚本中的任何系统函数中,都不能使用C语言元素,在系统函数之间可以任意使用C语言内容。

6、在运行设置(run-time-setting)中,有个选项是Pacing,设置每次迭代之间的等待时间。简要说明两种方式之间的区别,With是指前一次Ending Iteration到下一次Start Iteration之间的时间。而At是指前一次Starting Iteration到下一次Ending Iteration之间的时间,所以At包含了前一次迭代执行的时间。

7、Log下面的扩展日志中选项parameter substitution,这一选项是将参数赋值操作作为日志输出。

8、录制完脚本并回放无误时要在VuGen中进行参数化设置和runtime运行时设置

参数化—parameter list

而在多用户执行脚本时,如果需要修改脚本执行的iteration,必须在controllerrun-time-settings中进行修改,而不能修改VuGen中的run-time-settings。在多用户的情况下就不能使用顺序取值的方式来实现多用户操作,否则会有大量的用户操作是多余无效的。

9、

什么时候需要做关联

要想弄清这个问题,我们首先要知道客户端与服务器端的请求与响应的过程

过程说明:

客户端发出获得登录页面的请求

服务器端得到该请求后,返回登录页面,同时动态生成一个SessionId

当用户输入用户名密码,请求登录时,该SessionId同时被发送到服务器端

如果该Session Id在当前会话中有效,那么返回登录成功的页面,如果不正确则登录失败

在第一次录制过程中loadrunner把这个值记录了下来,写到了脚本中,但再次回放时,客户端发出同样的请求,而服务器端再一次动态的生成了Session Id,此时客户端发出的请求就是错误的,为了获得这个动态的Session Id我们这里用到了关联。

 

所以我们得出结论:

当客户端的某个请求是随着服务器端的相应而动态变化的时候,我们就需要用到关联

当然我们在录制脚本时应该对测试的项目进行适当的了解,知道哪些请求需要用到服务器响应的动态值,如果我们不明确那些值需要做关联的话,我们也可以将脚本录制两遍,通过对比脚本的方法来查找需要关联的部分,但并不是说两次录制的所有不同点都需要关联,这个要具体情况具体分析。

 

关联能够帮助我们将服务器返回的数据进行处理并保存为参数,关联分为手动关联和自动关联、还有一边录制一边关联。自动关联是最简单的,点击Vuser菜单的scan script for correlations选项即可。手动关联是先找出两次脚本的不同,判断是否需要关联,通过web_reg_save_param()函数来实现的。此函数是通过一种规则将服务器的返回保存到一个参数中。

10、检查点:

文本检查点:web_reg_find()文本检查点函数提供了一种对服务器返回内容进行查询的功能,和关联的不同之处在于检查点函数只能返回检索到内容的次数。如果服务器返回的不是期望的内容,就说明服务器无法提供正常的服务了。因为VuGen区分脚本是否回放正确的标准就是只要页面返回了,VuGen都不会提示错误,而有时候页面返回了,并不代表回放正确,比如在平时,我们使用其他系统时,在系统出错之后,它为了提升用户感受一般都不会返回错误页面,而是返回一个提示框说系统忙,请稍后。

11、

controller中使得执行脚本的用户从单人转化为众人,从而模拟大量用户操作,进而形成负载。

所谓目标场景就是设置一个运行目标,通过controllerauto load功能进行自动化负载,如果测试的结果达到目标,则说明系统的性能符合测试目标,否则就提示无法达到目标。而手工场景则是自行设置虚拟用户的变化。

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值