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):在脚本回放过程中,客户端发出请求,通过关联函数所定义的左右边界值(也就是关联规则),在服 ...
随机推荐
- Windows 系统 IP 和端口的相关检测命令
查看本机IP地址 查看自己电脑的ip,使用 ipconfig 命令 ipconfig 检测指定IP是否联通 检测某个ip是否可以连通,直接使用 ping 命令 ping 219.148.111.212 ...
- Testing - 软件测试知识汇总
软件测试知识梳理 基础概念 : http://www.cnblogs.com/anliven/p/6070000.html 测试分类 : http://www.cnblogs.com/anliven/ ...
- setting-mirrorO以及下载jar包流程简介
mirrorOf常见的几种配置如下 1.* 2.repo3 3.repo1,repo2,*,!repo3 4.external:* 第二个例子只配置了一个repo3,这个镜像只能匹配id是repo3的 ...
- 1 认识Jquery
一 代码风格和变量风格 1 链式操作风格 : (1)对同一对象不超三个操作的可以写在一行 (2)对于同一个对象的较多操作,建议每行写一个操作 (3)对于多个对象的少量操作,可以每个对象写一行,涉及子元 ...
- IO流查找文件然后写入TXT文档
今天领导让分析日志,把日志中所有登录过的员工信息都拿出来.于是.把日志摘下来谢了这段代码 import java.io.BufferedReader;import java.io.BufferedWr ...
- 微信开放平台创建android应用时怎么获取应用签名
之前微信开放平台中申请创建应用,没有整理,过了好久,又重新百度,今天索性整理了,以供童鞋们备用. 1.微信开发平台注册申请成开发者账号,就此略过 2.在管理中心选择创建移动应用.按照严格要求填写.上传 ...
- Spring Boot - 修改Tomcat默认的8080端口
前言 默认情况下,Spring Boot内置的Tomcat服务会使用8080端口启动,我们可以使用以下任何技巧去更改默认的Tomcat端口: 注:我们可以通过server.port=0配置,去自动配置 ...
- Java-jacob-文件转HTML
Java-jacob-文件转HTML: 下载jacob的jar包,然后举个例子. public static final int WORD_HTML = 8; public static final ...
- antd tree组件文件名换行 + 点击展开时,自动收起同级其他展开目录
1.在项目中用 antd的tree组件的时候,遇到两个问题 1.文件名太长的话 会超出容器 很难看,解决方法如下 ` 引入css在global下设置 :global { .ant-tree li .a ...
- HttpClient Timeout waiting for connection from pool 问题解决方案
错误:org.apache.http.conn.ConnectionPoolTimeoutException: Timeout waiting for connection from pool 前言 ...