loadrunner 脚本优化-关联设置
脚本优化-关联设置
by:授客 QQ:1033553122
关联的原理
关联也属于一钟特殊的参数化。一般参数化的参数来源于一个文件、一个定义的table、通过sql写的一个结果集等,但关联所获得的参数是服务器响应请求所返回的一个符合条件的、动态的值。
例子:常见系统中的登陆功能,在登陆后服务器会返回SessionID,登陆后的操作都需要提交该SessionID确认身份。使用VuGen录制脚本时,Vugen将会记录服务器返回的SessionID,并且原封不动地在下一个请求中发送给服务器。


服务器每次接收到用户名和密码的登录请求后返回新的SessionID,但是回放脚本时,仍然发送旧的SessionID给服务器,最终因新的SessionID和旧的SessionID不一致,导致脚本回放失败。
也就是说,录制的脚本中的SessionID是固定不变的,而服务器返回的SessionID是根据登录请求动态变化的。由此产生了问题。为了确保脚本回放的成功,我们需要获得服务器每次返回的动态SessionID,再将这个动态参数发回给服务器。而关联则可以做到这点。关联通过web_reg_save_param()函数来实现,这个函数可以帮助我们完成对服务器返回的保存操作。
注意:
关联函数是一个注册型函数,需要告诉VuGen下一个请求返回是需要被处理的。所以该函数必须要写在请求前,如下,否则就会提示无法获得关联结果的错误。这时绝大多数使用关联的新手最容易犯错的错误。
Action()
{
//在请求前添加关联函数
web_url(“localhost:8081”,”URL=http://localhost:8081/”,LAST);
return
0;
}
关联的方式
关联就是对服务器的返回做处理的过程,而关联方式有3种:
自动关联
手动关联
一边录制一边关联
2
自动关联
VuGen提供的自动关联处理策略,它的原理是对同一脚本运行和录制时的所有服务器返回进行比较,来自动查找变化的部分,并且提示是否生成关联。
注意:使用自动关联前必须先运行一次脚本。
点击Vuser->Scan
Script for Correlations


弹出如下,


点击
Yes,进行关联扫描


如上图,如果有可关联的对象则会显示在上图的关联结果中
如有数据的情况下,单击Correlate按钮后,则生成一个关联,关联的前后内容和所属Action也被列出来。自动关联结束。脚本中会自动添加关联函数web_reg_save_param_*函数并将被关联的内容保存到一个叫参数中去
回放脚本,如果还有其他关联引起的错误,重复上述操作。
自动关联是通过录制和回放时的服务器返回值比较确定需要关联的内容,然后再帮助生成对应的关联函数,常用在非标准的动态数据处理中。如sessionid,在大多数情况下,脚本无法正常回放都可以通过自动扫描的方法来生成关联,解决动态数据的问题。
但是自动关联有很强的局限性,无法实现特殊的动态数据捕获,例如帖子的id,作者名等,这个时候就需要手动关联来解决它了。
2
手动关联
通过web_reg_save_param()将想要的字符串保存到一个参数中。从而捕获从服务器返回的标题或正文的文本内容,也可以用来捕获服务器返回的超链接。
通常情况下,关联的对象一般都是选择链接地址而不是链接名,这样可确保在以后的使用中比较简单
3
一边录制一边关联
打开录制选项(Tools->Correlation选项),录制选项时建议大家在初期都将Enable选项去掉。禁止这个功能的使用。


这里Vugen提供了一些常见应用需要做的关联规则,这些规则有效解决了录制脚本后回放失败的问题,但是同时也带来弊端。例如:如果需要录制的项目使用了和规则十分相似的数据返回格式,而开发又在其中写了一些自定义的不规范内容,就会导致VuGen错误关联数据,使本来能够回放成功的脚本由于添加了错误的自动关联而无法正常回放。
如何设置一个自定义的新规则
单击New
Application按钮,新建一个应用
点击刚建的应用,单击New
Rule新建一个规则
填写规则的左边界,右边界等
新建一个脚本,重新录制,系统会自动按照规则生成关联函数。
手动关联举例


将鼠标移动到添加关联的函数中的指定位置,然后选择Insert->New
Step选项(或右键也可以),在系统弹出Add
Step窗口中查找关联函数,如下图


点击OK后,弹出如下图


填写如下


点击确定后,在脚本中光标所在的地方添加如下web_reg_save_param函数


关联函数的作用,通过一种规则将服务器的返回保存到一个参数中,所以为了看到参数的内容,应打开参数取值的日志选项


注意:每一句“Notify:Saving
Parameter temp=”后面都是被关联到的服务器返回,我们会发现返回不止一条。具体分析会发现,被关联到的内容有以下几种:
1.HTML
2.CSS
3.JavaScript
4.JPEG、PNG、GIF
也就是说,通过这个函数获得了服务器所有的返回内容。
对于图片和CSS等内容其实一般都不是我们关心的,系统的动态数据需要关联的服务器返回信息一般都保存在HTML正文中。所以接着修改一下关联函数,将Search
In选项从ALL修改为Noresource,也就是只要关联HTML、XML等资源而不关联附属的信息。
修改Search
In选项为Noresource
切换到Tree模式下,双击“Reg
Save Param”函数


改好了代码自动变为如下
web_reg_save_param(”temp”,
“LB=”,
“RB=”,
“Ord=1”,
“Search=Noresource”,
LAST
);
可以看到被关联内容只有一个了,而且就是服务器返回的HTTP包中的正文内容,和通过VuGen看到的服务器返回内容完全相同,这个返回是保存在一个叫temp的参数中。


整个HTTP请求分为两段,一段是开头数据包,叫做header,另外一段是HTML页面,叫做body。在“Search”选项中可以修改为Header或者body来更加精确地划分关联范围。
通常,我们还是使用Noresource来处理关联范围,因为这样可以得到最常用的返回内容。得到了服务器返回的内容,接着就可以做任何想做的事情,如获得页面中的任意一个对象。
关联函数提供了一个叫做左边界、右边界的策略,只需要填写这个规则,它会在整个被关联范围内查找符合该规则的内容。


如上,修改关联函数。修改关联函数方法:
1.直接在代码上修改
2.切换到Tree模式下,双击关联函数,在Lef
Boundary/Right Boundary中输入条件,修改关联函数。


点击OK后,如下


运行结果:


如下,定位Web
Tours


运行结果:


注意:输出结果前后有空格
解决方法,在左边界和右边界都添加空格



输出结果:
注意:关联函数的结果需要请求结束后才能获得,所以提取关联结果参数的值必须在请求后,而关联函数必须在请求前。
寻找关联点
由于我们在访问请求前设置规则,服务器返回的动态内容都会被关联函数捕获并且保存到参数中,这样实现了对动态数据的捕获,通过后期处理过程,即可完成对动态对象的操作。
以下字符串最可能需要关联
*
登录字符串.一个带有动态数据的登录字符串,比如session
ID或一个时间戳timestamp.
* Date/Time
Stamp.任何使用了日期或时间戳time
stamp,或者其他用户凭证的字符串
* Common
Prefix.
带有特征字符串的前缀,如SessionID或CustomerID,。
#查找需要关联的值
方法1:通过比较脚本
1.录制并保存脚本.
2.创建另一个脚本并录制关键操作,保存脚本。
3.选择Tools
> Compare with Script来比较脚本
4.脚本中的不同点被高亮。重新审视不同点来判断哪些需要关联。


方法2:回放日志查找
a
扫描脚本视图中的脚本,查找可能需要管理的字符串,如哈希字符串,随机字符串,会话id等。
b
在脚本生成日志中,查找字符串(服务器返回的字符串)第一次出现的时间。
c
扩展回放日志中查找同样的字符串。检查同一个边界上,服务器返回是否包含不同字符串。如果是则需要关联。
loadrunner 脚本优化-关联设置的更多相关文章
- loadrunner 脚本优化-检查点设置
脚本优化-检查点设置 by:授客 QQ:1033553122 VuGen判断脚本是否执行成功是根据服务器返回的状态来确定的,如果服务器返回的是HTTP状态为200 OK,那么VuGen就认为脚本正确地 ...
- loadrunner 脚本优化-事务时间简介
脚本优化-事务时间简介 by:授客 QQ:1033553122 事务概念 事务是指用户在客户端做一种或多种业务所需要的操作集(actions),通过事务开始和结束函数可以标记完成该业务所需要的操作内容 ...
- loadrunner 脚本优化-参数化之Parameter List参数同行取值
脚本优化-参数化之Parameter List参数同行取值 by:授客 QQ:1033553122 select next row 记录选择方式 Same line as,这个选项只有当参数多余一个时 ...
- Loadrunner脚本优化-参数化之关联MySQL数据库获取数据
脚本优化-参数化之关联MySQL数据库获取数据 by:授客 QQ:1033553122 测试环境: Loadrunner 11 Win7 64位 实操: 1. 安装MySQL ODBC驱动程序 O ...
- loadrunner 脚本优化-集合点设置
脚本优化-集合点设置 by:授客 QQ:1033553122 添加集合点(Insert->Rendezvous) 当一个集合点被插入,VuGen往Vuser脚本中插入一个lr_rendezvou ...
- LoadRunner脚本优化之—参数化迭代介
在LoadRunner的脚本优化时,有时发送给服务器的请求参数化时,服务器返回的内容也会和参数化的内容相对应,例如发送的请求带有查询key=123,则服务器也会返回含有123相关的内容.这时我们在使用 ...
- loadrunner 脚本优化-参数化方法
脚本优化-参数化方法 by:授客 QQ:1033553122 方法一 1.确定需要参数化的内容 2.选中需要参数化的内容 3.右键选中的内容->Replace with a Parameter- ...
- loadrunner 脚本优化-关联函数web_reg_save_param()函数详解
脚本优化-关联函数web_reg_save_param()函数详解 by:授客 QQ:1033553122 Insert->New Step,打开Add Step对话框 选择函数web_re ...
- Loadrunner脚本自动关联和手动关联
关于Loadrunner关联一.什么时候需要关联 1.关联的含义 关联(correlation):在脚本回放过程中,客户端发出请求,通过关联函数所定义的左右边界值(也就是关联规则),在服 ...
随机推荐
- css3 动画与display:none冲突的解决方案
概述 css不能在display:none和display:block之间进行动画,并且也不能在height:0和height:auto之间进行动画.这里我研究了一下在display:none和dis ...
- 处理返回键劫持(结合vue)
在这里记录一下近期解决的一个问题 需求,在某个页面,浏览器返回按钮点击的时候,不能走浏览器的默认返回操作,而是要走自己的逻辑, 比如跳转页面等等. 那么问题来了,如何去不走默认返回呢.经过网上搜罗和同 ...
- MySQL学习笔记2(多表操作)
外键:使两张表之间存在关联 特点: 1.从表外键的值是对主表主键的引用 2.从表外键类型,必须与主表主键类型一致 示例: 创建两个表并准备数据: USE mybase; CREATE TABLE ca ...
- 学爬虫,需要掌握哪些Python基础?
入手爬虫确实不要求你精通Python编程,但基础知识还是不能忽视的,那么我们需要哪些Python基础呢? 首先我们先来看看一个最简单的爬虫流程: 第一步要确定爬取页面的链接,由于我们通常爬取的内容 ...
- SQLServer 查看耗时较多的SQL语句(转)
total_worker_time AS [总消耗CPU 时间(ms)],execution_count [运行次数], qs.total_worker_time AS [平均消耗CPU 时间(ms) ...
- Linux - YUM包管理
简述 rpm是由红帽公司开发的软件包管理方式,使用rpm可以方便的进行软件的安装.查询.卸载.升级等工作. 但是rpm软件包之间的依赖性问题往往会很繁琐,尤其是软件由多个rpm包组成时. Yum(全称 ...
- LeetCode--No.011 Container With Most Water
11. Container With Most Water Total Accepted: 86363 Total Submissions: 244589 Difficulty: Medium Giv ...
- python之函数参数问题(参数为可变对象)
今天看到一段代码,其中函数入参有一个参数为list,类似如下: def linux_monitor(pid=0,pidlist = []): pidlist.append(pid) 通过测试发现是有问 ...
- http协议返回码
有五种可能取值:1xx:指示信息--表示请求已接收,继续处理2xx:成功--表示请求已被成功接收.理解.接受3xx:重定向--要完成请求必须进行更进一步的操作4xx:客户端错误--请求有语法错误或请求 ...
- Kafka文件存储机制那些事
Kafka是什么 Kafka是最初由Linkedin公司开发,是一个分布式.分区的.多副本的.多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx ...