loadrunner_关联
LoadRunner如何建立关联
LoadRunner如何建立关联关于loadrunner关联一、什么时候需要关联1.关联的含义关联(correlation):在脚本回放过程中,客户端发出请求,通过关联函数所定义的左右边界值(也就是关联规则),在服务器所响应的内容中查找,得到相应的值,已变量的形式替换录制时的静态值,从而向服务器发出正确的请求,这种动态获得服务器响应内容的方法被称作关联。
其实关联也属一同特定的参数化,只是与通常的参数化有些相同一般的参数化的参数来源于一个文件、一个定义的table、通过sql写的一个结果集等,但关联所获得的参数是服务器响应请求所返回的一个符合条件的、动态的值2.什么时候需要做关联必须想要弄清楚这个问题,我们首先必须晓得客户端与服务器端的命令与积极响应的过程过程表明:客户端发出获得登录页面的请求服务器端获得该命令后,回到登入页面,同时动态分解成一个sessionid当用户输入用户名密码,请求登录时,该sessionid同时被发送到服务器端如果该sessionid在当前可以话中有效率,那么回到登入顺利的页面,如果不恰当则登入失利在第一次演唱过程中loadrunner把这个值记录了下来,写道了脚本中,但再次录像时,客户端收到同样的命令,而服务器端再一次动态的分解成了sessionid,此时客户端收到的命令就是错误的,为了赢得这个动态的sessionid我们这里使用了关联。
所以我们得出结论:当客户端的某个请求是随着服务器端的相应而动态变化的时候,我们就需要用到关联当然我们在录制脚本时应该对测试的项目进行适当的了解,知道哪些请求需要用到服务器响应的动态值,如果我们不明确那些值需要做关联的话,我们也可以将脚本录制两遍,通过对比脚本的方法来查找需要关联的部分,但并不是说两次录制的所有不同点都需要关联,这个要具体情况具体分析二、自动关联loadrunner参数化自动关联涵盖两种机制:一种是loadrunner通过对比录制和回放时服务器响应的不同,而提示用户是否进行关联,用户可自己创建关联规则,这个功能可以方便的使我们获得需要关联的部分,但同时也存在一定的问题,如:自动关联所检测到的关联点不一定真的需要进行关联,这要我们更具实际情况进行判断;有些需要关联的动态数据自动关联无法找到,这是就需要做手动关联另一种就是loadrunner自带的自动关联规则,在演唱脚本时,可以根据这些规则自动建立关联自动关联的步骤如下:1.打开自动关联选项刚才提到的两种关联机制,如果用户想使用loadrunner自带的关联规则创建关联,那么需要在【recordingoptions】>【internetprotocol】>【correlation】中启用关联规则,选中“enablecorrelationduringrecording”,当录制这些应用系统的脚本时,vugen会在脚本中自动建立关联。
Loadrunner11 脚本关联
Loadrunner11 脚本关联关联:服务器返回给客户端一些动态变化的值,客户端使用这些值去访问服务器的时候,不能把这些值写死在脚本里面,而应该存放在一个变量里面。
在脚本回放过程中,客户端发出请求,通过关联函数所定义的左右边界值(也就是关联规则),在服务器所响应的内容中查找,得到相应的值,以变量的形式替换录制时的静态值,从而向服务器发出正确的请求,这种动态获得服务器响应内容的方法被称作关联。
以loadrunner自带的示例进行。
启动loadrunner自带的服务器,Start Web Server点击“HP Web Tours Application”,启动浏览器。
点击“administration”,设置服务器选项。
勾选第三项,“Set LOGIN form's action tag to an error page”。
再拉动滚动条到下方,点击“Update”。
点击“Virtual User Generator”,打开脚本录制器。
点击“新建”按钮。
弹出“新建虚拟用户”窗口,选择“新建单协议脚本”,选择协议中的“Web (HTTP/HTML)”,点击“创建”按钮。
弹出“开始录制”窗口,填写“URL”地址。
点击“选项”按钮,弹出“录制选项”窗口,选择“常规”下“录制”,选择“基于HTML 脚本”。
选择“HTTP属性”下“关联”,确保勾选“在录制期间启用关联”,点击确定按钮。
开始录制窗口点击“确定”按钮,开始录制。
填写用户名“jojo”,密码“bean”。
点击登录。
点击“Sign Off”退出登录。
点击“停止”录制按钮,可以查看录制脚本。
点击“F5”或者回放按钮。
查看“回放脚本”,显示错误。
点击“运行时设置”弹出“运行时设置”窗口,勾选“扩展日志”下的“参数替换”和“服务器返回的数据”。
右键选择“插入”,“新建步骤”。
在“添加步骤”的“查找函数”中输入“web_reg_save_param”,点击“确定”按钮。
loadrunner 关联函数 正则
loadrunner 关联函数正则LoadRunner关联函数-正则表达式正文:一、概述在性能测试领域中,HP LoadRunner是一个被广泛使用的工具。
它可以模拟大量用户对系统进行负载测试,以评估系统在不同压力下的性能表现。
然而,在测试中,往往需要从前一个请求中提取出特定的数据,并将其作为后续请求的输入参数。
这时,关联函数就发挥了重要作用。
二、关联函数的作用关联函数可以用于从服务器响应中提取出特定的数据,并将其保存到参数中,以供后续请求使用。
它可以提取出HTML页面、XML文档中的数据,甚至可以提取出请求头中的某个字段值。
在LoadRunner中,关联函数有多种类型,包括关联函数-正则表达式、关联函数-左右边界、关联函数-XML等。
三、关联函数-正则表达式正则表达式是一种强大的文本匹配工具,它可以根据模式匹配出需要的文本。
在LoadRunner中,关联函数-正则表达式可以使用正则表达式语法,从服务器响应中提取出指定的字符串。
具体步骤如下:1. 使用web_reg_save_param_regexp函数对需要提取的响应进行配置。
其中,参数列表包括关联名称、待提取的正则表达式、匹配的目标范围等。
2. 在后续请求中使用{关联名称}的形式引用关联的值。
关联名称是在web_reg_save_param_regexp函数中定义的。
例如,我们需要从服务器响应中提取出一个名为"username"的参数值,它的正则表达式为"username=(.*?)&"。
配置如下:web_reg_save_param_regexp("ParamName=username","RegExp=username=(.*?)&","Ordinal=1","NotFound=WARNING","Search=Body",LAST);在后续请求中,可以使用{username}来引用这个提取出的参数值。
LoadRunner关联语句1
"RecContentType=text/html",
"Referer=http://127.0.0.1:1080/WebTours/",
"Snapshot=t5.inf",
"Mode=HTTP",
LAST);
web_url("welcome.pl",
Action()
{
web_set_max_html_param_len ("2048");
web_url("WebTours",
"URL=http://127.0.0.1:1080/WebTours/",
"Resource=0",
"RecContentType=text/html",
"Resource=1",
"RecContentType=image/gif",
"Referer=http://127.0.0.1:1080/WebTours/nav.pl?page=menu&in=home",
"Snapshot=t14.inf",
LAST);
"URL=http://127.0.0.1:1080/WebTours/welcome.pl?signOff=true",
"Resource=0",
"RecContentType=text/html",
"Referer=http://127.0.0.1:1080/WebTours/",
loadrunner关联参数的问题
loadrunner关联参数的问题loadrunner关联分为两种一种是自动关联,一种是手动关联其实网上也有很多的实例供大家参考,自动关联可以从Recording Options设置Correlation可以把你要关联的规则设置好,当录制之前选择就你设置的这个规则,然后录制就行了第二种是手动关联,当你录制玩脚本的时候,没有设置关联,那么你需要手动就行关联手动关联的函数:Web_reg_save_parm参数的详细内容下表列出可用的属性。
注意,属性值字符串(例如Search=all)不区分大小写。
NotFound找不到边界并且生成了空字符串时的处理方法。
默认值“ERROR”表示找不到边界时LoadRunner应发出错误消息。
如果设置为“EMPTY”,则不会发出错误消息,并且脚本的执行将继续进行。
注意,如果为脚本启用了“出现错误时仍继续”,则即使将NOTFOUND 设置为“ERROR”,在找不到边界时脚本将仍然会继续执行,但会将错误消息写入扩展日志文件中LB参数或动态数据的左边界。
此参数必须为非空的、以null 结尾的字符串。
边界参数区分大小写;要忽略大小写,请在边界之后添加“/IC”。
如果在边界之后指定“/BIN”,则指定为二进制数据RB参数或动态数据的右边界。
此参数必须为非空的、以null 结尾的字符串。
边界参数区分大小写;要忽略大小写,请在边界之后添加“/IC”。
如果在边界之后指定“/BIN”,则指定为二进制数据.LB/RB赋值的是你要抓取文本的左/右边的内容,例如你要从"abcdefghijk"中抓取"de"保存在变量中,那么LB="abc"和RB="fghijk"就可以抓到你要的东西了RelFrameID与请求的URL 相关的HTML 页的层次结构级别。
LoadRunner自带程序登录功能_关联详解
LoadRunner自带程序登录功能关联演示本文主要讲解一下LoadRunner的关联技术,我们以LoadRunner自带的WEB订票程序为范例,首先录制一段LoadRunner自带的飞机订票程序,录制登录功能即可。
为了让自带程序登录时验证Session,在录制登录脚本前,需要对订票程序做一些设置,启用隐藏字段标记(Session)1)打开订票程序WEB网站,点击Administrator链接:2)进入管理页面,选中Set LOGIN form's action tag to an error page3)点击管理页面最下方的update按钮,保存并更新配置。
好,做完设置之后,我们开始录制一个登录操作脚本,录制登录操作后,产生的一段代码为:Action(){web_url("WebTours","URL=http://127.0.0.1:1080/WebTours/","Resource=0","RecContentType=text/html","Referer=","Snapshot=t1.inf","Mode=HTML",LAST);lr_think_time(20);lr_start_transaction("login");web_submit_data("login.pl","Action=http://127.0.0.1:1080/WebTours/login.pl","Method=POST","RecContentType=text/html","Referer=http://127.0.0.1:1080/WebTours/nav.pl?in=home","Snapshot=t2.inf","Mode=HTML",ITEMDATA,"Name=userSession", "Value=109939.233211827fzftQQQpDAiDDDDDDDQcQpQQfif", ENDITEM,"Name=username", "Value=jojo", ENDITEM,"Name=password", "Value=bean", ENDITEM,"Name=JSFormSubmit", "Value=on", ENDITEM,"Name=login.x", "Value=43", ENDITEM,"Name=login.y", "Value=7", ENDITEM,LAST);lr_end_transaction("login",LR_AUTO);return 0;}直接进行回放,在Replay Log中,可以看到,没有任何报错,呵呵,脚本运行成功了:),我可以开始准备设计场景运行该脚本了。
LoadRunner参数化关联
LoadRunner参数化关联我们⽤ HTTP 协议做脚本,要注意的是,不同协议的函数是不⼀样的,假如换 websocket 协议,关联函数就要⽤其他的参数化原理1、什么叫参数化 把脚本内⼀个写死的值,去⼀个数组内取值,进⾏替换2、为什么要参数化 烂⼤街的回答:模拟真实场景,模拟真实情况 真实原因:应⽤程序/数据库对数据有唯⼀性要求(应⽤程序内就是单点登录;数据库内就是该字段为 Unique ,唯⼀)避免查询缓存对结果造成失真(重复查询同⼀条数据,如果该数据的表内开启了查询缓存,则会命中。
那么响应时间会⽐市价值偏⼩)3、可不可以不⽤参数化 查询缓存的开关是⽤query_cache_size = 20M和query_cache_type = ON 打开查询缓存,程序校验就得修改代码了,数据库唯⼀要求,把 Unique 的限制给拿掉就ok如何参数化(参数化会变紫)1、选中需要参数化的内容,右键,选择"Replace with a Parameter",2、为参数命名,并且制定参数取值的⽂件格式 Parameter name,就是我么那要设定的参数名,这个是不能重复的 Parameter type 是参数取值的⽅式,这个 file 是从 .bat ⽂件中取值,这个⽂件会⾃动⽣成在项⽬路径下结果:例如:web_submit_data("提交","Action=http://192.168.66.129/bbs/member.php?mod=register&inajax=1","Method=POST","TargetFrame=","Referer=http://192.168.66.129/bbs/member.php?mod=register",ITEMDATA,"Name=regsubmit", "Value=yes", ENDITEM,"Name=formhash", "Value={formhash}", ENDITEM,"Name=referer", "Value=http://192.168.66.129/bbs/forum.php", ENDITEM,"Name=activationauth", "Value=", ENDITEM,"Name={Name}", "Value=hua00{username}", ENDITEM,"Name={pass}", "Value=123456", ENDITEM,"Name={conpass}", "Value=123456", ENDITEM,"Name={mail}", "Value=hua00{username}@", ENDITEM,LAST);另⼀种情况,我们要把另⼀个数值也运⽤之前同⼀个参数咋办?另外,我们的参数化还有种⽅式:可以先建好,然后再脚本内⽤,这种情况适⽤于只给了脚本,但是没有给参数化⽂件的情况打开变量列表,填写变量值参数化变量和值是怎样对应的根据脚本中的参数名({username})去找参数列表中的的参数username,再去找参数列表中的username对应的bat⽂件注意,我们 loadrunner 的参数化默认是以 {} 为边界的,我们也可以修改这个参数化的边界类型:在 Tools-->General Options-->Parameterization的Paramrter Braces 内可以设置,我们可以看到默认是 {}参数化策略 最常⽤的取值⽅式:唯⼀(Unique+XX)我们写⼀个脚本来执⾏不同的参数化策略:Action(){int i; //申明变量for (i = 0;i<2;i++) { //循环char *a = "{p1}"; //获取参数值传给 achar *b = "{p2}"; //获取参数值传给 bchar *c = "{p1}"; //获取参数值传给 clr_output_message("%s,\t%s,\t%s",lr_eval_string(a),lr_eval_string(b),lr_eval_string(c)); //分贝演⽰ 9 种不同的参数化策略组合结果}return0;}如下Loadrunner参数化取值策略由[select next row]、[update value on]两部分组成。
loadrunner关联函数
loadrunner关联函数LoadRunner是一款性能测试工具,可以模拟多种协议的用户行为,通过对系统进行压力测试、负载测试、并发测试等多种测试方式进行性能评估。
在LoadRunner中,关联函数是非常重要的一种函数类型,它可以将服务器返回的数据提取出来并赋值给变量,以便后续脚本中使用。
一、关联函数概述1.1 关联函数定义关联函数是LoadRunner中的一种特殊函数类型,用于从服务器返回的响应中提取数据,并将其赋值给变量。
关联函数通常用于需要使用服务器返回数据作为后续请求参数的情况。
1.2 关联函数分类在LoadRunner中,关联函数可以分为以下几类:(1)web_reg_save_param:用于从Web应用程序返回的HTML或XML响应中提取数据。
(2)web_reg_save_param_ex:与web_reg_save_param类似,但支持更灵活的参数化选项。
(3)lr_save_string:用于从任何类型的响应中提取数据。
(4)lr_xml_find:用于从XML响应中提取数据。
二、web_reg_save_param关联函数详解2.1 web_reg_save_param语法格式web_reg_save_param("ParamName", "LB=LeftBoundary", "RB=RightBoundary", "Ordinal=All", "Search=Body", LAST);其中各参数含义如下:(1)ParamName:被保存参数的名称。
(2)LB:左边界,用于标识被保存参数的起始位置。
(3)RB:右边界,用于标识被保存参数的结束位置。
(4)Ordinal:指定哪一个匹配项被保存,可以是All、First或Last,默认为All。
(5)Search:指定从响应体中搜索还是从响应头中搜索,可以是Body或Header,默认为Body。
loadrunner关联.ppt
2020/2/10
11
二、自动关联
此时切换到Script模式看看脚本发生了什么变化 web_submit_data("login.pl",
。。。 ITEMDATA, "Name=userSession", "Value={WCSParam_Diff1}", ENDITEM, "Name=username", "Value=wfj", ENDITEM, "Name=password", "Value=111111", ENDITEM, "Name=JSFormSubmit", "Value=off", ENDITEM, "Name=login.x", "Value=64", ENDITEM, "Name=login.y", "Value=10", ENDITEM, LAST);
2020/2/10
23
五、Web_reg_save_param详解
关联函数Web_reg_save_param详解
Parameter Name :此处设置存放参数的名称,关联出来的 内容将会存放在该参数中,这里受到Instance选项的影响。
例如: Parameter Name 为Temp,当对应的Instance选项是 任意一个数字的时候,只会关联一个匹配的记录,关联值存放 在Temp中。当Instance是ALL的时候,关联成功后的值将会 依次存放在“Temp_数字”这样的参数数组中,并且会添加 一个temp_ count的参数存放关联出来的记录条数。
待到回放时,服务器会在接收到用户名和密码后返 回一个新的SessionID,而脚本依然发送旧的 SessionID给服务器,最终因SessionID错误,导 致脚本回放失败。
第七章 LoadRunner 自动关联
第Hale Waihona Puke 七 章本节的内容提纲• 学习在录制以后进行关联的方法。 • 学习在录制脚本过程中进行关联的方法。
录制后自动关联的七大步骤
1. 回放脚本 2. 脚本回放失败,分析确定是否需要关联。如果是,则选中General Options中的“Save correlation information during replay”选项。 3. 重新回放脚本。
在录制过程中进行关联
1. LoadRunner可以基于Recording Options中事先定义好的规则,进行自动关 联。 2. 在录制之前,设置Recording Options中的关联选项。 3. 在录制过程中,如果服务器端产生的数据,重新被客户端发往服务器端, LoadRunner根据规则捕获到这样需要关联的信息,则根据你设置的关联选 项进行自动关联,或者弹处一个对话框,提供用户进行选择。
演示 – 如何在录制完毕后进行自动关联
进行自动关联的要点
录制的脚本必须至少回放一遍。 回放的结果和录制时的结果进行比较。 回放脚本完毕后,使用内嵌的“Scan Action for Correlations”进行自动关联
什么情况适合录制过程中进行关联
• 录制的Web应用的服务器是在Recording Options 列表中的成熟的服务器(它们需要关联的动态信息 都是确定的)。
演示 – 创建规则的第二种方法
小结
在本节中,我们学习了如何在录制过程中和录制完毕后 进行自动关联。 • 由于关联是调整脚本过程中非常烦琐的一个工作,VuGen 提供了两种自动关联的方法。它们的本质都是使用 web_reg_save_param函数对脚本进行修改,修改的方法 和手动关联是一致的,所以深刻理解手工关联是重点。 • LoadRunner目前只提供对Web协议脚本的自动关联功能 。对于其它协议的脚本,则没有自动关联功能。
LoadRunner运行设置及关联
LoadRunner运行设置(Run-Time Settings) Run LogicPacingLogThink TimeMiscellaneousBrowser Emulation其它设置选择默认值关联LoadRunner脚本关联动态数据的最简单方法百度或Google一下“如何在LoadRunner脚本中做关联(Correlation)”,你会搜索到在网上相互转载的很经典的一篇文章。
洋洋洒洒近6000汉字,像个小百科全书。
对于关联Correlation的概念,对web_reg_save_param()方法的参数的解释,你还可以参考那篇文章学习一下。
对于如何手动关联动态数据,如果按那篇文档做,你可能需要2小时才能完成一个复杂测试场景的动态数据关联,使用本文档下面介绍的方法,不管多么复杂只需2分钟就能完成关联动态数据。
为什么要关联动态数据呢?举个例子,在对我们平台的工作流性能测试时,在待办任务里面选择一条记录执行发送操作,LoadRunner VuGen会详细记录下来流程发送操作的细节,但在回放脚本的时候会有问题。
待办任务里面找不到那条记录了,已经发送到下一个环节了。
另一个更易理解的例子,在初始化查询页面,选择一条记录进行删除,录下脚本进行回放的时候会出错,记录已经删除了,回放脚本的时候服务器返回的记录不再包含那条记录,再向服务器发送删除那条记录的请求,就报错了。
关联动态数据需要我们在脚本中设置一个变量,保存从服务器返回的起标识作用的数据,发送请求的时候使用该变量代替动态数据,这样再回放、反复测试就不会报错了。
需要关联的标识性数据一般是各种主键,工作流的发送的例子很复杂,需要对流程编码、环节编码、参与者编码、表单编码等进行关联,下面使用复杂的工作流发送的例子进行演示。
手动关联动态数据的复杂做法是,回放脚本,在Execution Log和Recoding Log打出的信息中找需要关联的动态数据及动态数据的左右边界。
在LoadRunner 脚本中使用关联
在LoadRunner 脚本中使用关联∙第1页:在LoadRunner 脚本中使用关联∙第2页:找到服务器包含该动态值的响应∙第3页:3) 捕获动态值∙第4页:将脚本中所有出现的动态值都替换为参数文本Tag:软件测试LoadRunner【IT168技术文档】今天我将解释 LoadRunner 中关联的概念及其使用方法。
我认为关联是 LoadRunner 中一个非常关键的概念。
对于任何测试工程师而言,如果他想成为 LoadRunner 专家或是宗师,那他必须非常了解何谓关联。
实战举例:我为某个网络服务器录制了一段 LoadRunner 脚本。
脚本中包含两个特殊的域:时标(timestamp)和校验和(checksum):每当一个客户端网络浏览器连接到服务器,服务器就会获得一个当时的时标,再计算出校验和返回至客户端。
这两个域是用来确认一次即时的会话。
换句话说,一组时标 + 校验和就是会话 ID。
以下就是这种交互的图解:问题在哪里呢?让我们再回放一次录制的脚本。
当执行已录制的脚本时,出现了问题。
网络服务器用当前时间检验客户端发来的时标。
如果客户端的日期是过期的或错误的,服务器就会返回一个错误的信息:参数“校验和”未找到或显示为无效值。
此次交互的图解:客户端不能再次使用旧的(即硬编码)的值作为时标和校验和。
而必须使用新的日期。
所以,LR 脚本应该运行服务器返回的动态数据,而非硬代码。
使用关联就能做到这一点:关联的定义:关联就是捕获服务器发送给客户端的动态值。
实现关联的方法:1、自动2、手动自动关联会在后文中讲到。
但是至今为止,我敢说自动关联并不是最好的解决方法。
因为有些时候自动关联会失效,或者错误关联。
一个真正 LoadRunner 工程师会选择使用手动关联。
所以说这是“必备”的学问!好吧,让我们来开始探究手动关联。
手动关联的使用法则如下:找到一个需要捕获的动态值。
1) 找到服务器包含该动态值的响应。
2) 捕获动态值。
第六章 LoadRunner 手工关联
关联函数web_reg_save_param的参数 的参数 关联函数
web_reg_save_param 具有如下参数 具有如下参数:
用户定义的参数名称 表明后面没有参数
("param_name", <List of Attributes>*, LAST); "LB=", "RB=", "ORD=",
第五步: 第五步:用参数替换脚本,验证关联正确
总结
在本章中,我们学习了如下内容: 在本章中,我们学习了如下内容:
• 了解了关联的基本概念和重要性。 了解了关联的基本概念和重要性。 • 学习了手工关联的步骤。 学习了手工关联的步骤。 • 重点内容是 重点内容是web_reg_save_param函数的用法。 函数的用法。 函数的用法
2
录制
3
增强 • 事务 •检查点 检查点 •参数化 参数化 • 关联
4
测试
收集相关的 测试信息
录制一个虚拟 用户脚本
回放脚本来验证 脚本的正确性
手工关联的步骤
1. 设置“ 中的日志选项“ 设置“Runtime Setting”中的日志选项“Data return by 中的日志选项 server”,回放脚本,分析脚本运行失败的原因是否是因为关 回放脚本, 回放脚本 联造成的。 联造成的。 在脚本中分析确定需要关联的动态内容。 在脚本中分析确定需要关联的动态内容。 确定要关联的动态内容的“左边界”、 “右边界”和发生次 右边界” 确定要关联的动态内容的“左边界” 数。 在脚本适当的位置插入“ 关联函数。 在脚本适当的位置插入“web_reg_save_param”关联函数。 关联函数 在脚本中动态内容出现的地方,使用参数替换“写死” 在脚本中动态内容出现的地方,使用参数替换“写死”的动 态内容。 态内容。 重新运行脚本,确保关联后的脚本能够运行成功。 重新运行脚本,确保关联后的脚本能够运行成功。
使用loadrunner12手动关联
使⽤loadrunner12⼿动关联关联的含义:如浏览器打发送⼀个⽹页A请求,服务器返回这个请求,并且在返回的内容中携带⼀个session id=key,当浏览器再送出⽹页B的请求时,这时就要⽤ID=key的数据,服务器才会认为这是合法的请求,并且把⽹页B的内容送回给浏览器。
⽽我们使⽤loadrunner进⾏回放时情景,浏览器再送出⽹页B的请求时,⽤的还是当初录制的ID=key的数据,⽽不是⽤服务器新给的ID,这样就没有办法建⽴通信,,因为每个请求,服务器都会返回新内容,⽽客户端也应该获取到新内容,才能和服务端进⾏匹配,不然执⾏脚本失败解决⽅案:获取每次请求变化的seesionid,获取最新的服务端session id现在我使⽤loadrunner12 中⾃带的的“飞机购票” 进⾏获取动态关联其实⼿动关联,总结,就是⾃动关联找不到的内容,或者是你⾃⼰想要的⾃定义内容,使⽤函数web_reg_save_param_ex("ParamName=text", "LB=<B>sign ", "RB=now</B>", LAST);将想要的内容存到⼀个lr变量中,给后⾯的任何值做替换使⽤。
1.获取登录的session点击登录时,查看源,找到变化的seesion id我们发现我们现在使⽤userSession 是⼀个变化的东西(为什么知道会变化,你重新打开页⾯对⽐他的value值就知道了)那我们就需要获取这个变化值,如何获取关联函数web_reg_save_param_ex参数:ParamName=“项⽬名” LB=userSession\" value\=" (Lb就代表变化值左边的参数,注意符号要进⾏转义) RB=>"(就是变化值右边的参数)2.代码实现Action(){//关联内容web_reg_save_param_ex("ParamName=userSession", "LB=userSession\" value\=","RB=>",LAST);//打开页⾯的urlweb_url("index.htm","URL=http://127.0.0.1:1080/WebTours/index.htm","Resource=0","RecContentType=text/html","Referer=","Snapshot=t1.inf","Mode=HTML",LAST);//打印关联的内容lr_output_message(lr_eval_string("{userSession}"));return 0;} 3.结果展⽰ 在运⾏⼀次看获取结果,同样获取了变化的值关联的参数就获取了。
Loadrunner关联实例操作详解_SariyaLee
关联实例操作详解By SariyaLee 2013-01-08Contents关联实例详解 (1)一、手动关联 (3)1. 录制脚本 (3)1) 选择协议,设置录制url (3)2) 选择录制方式 (3)3) 开始录制脚本 (4)4) 脚本 (4)2. 找出服务器返回的动态数据 (10)1) 重复步骤1,再次录制相同的内容(操作步骤与步骤1一致) (10)2) 使用WinDiff找出脚本的不同 (10)注1:关联值的特点 (10)3. 插入关联函数,并将数据替换为关联函数中的参数 (10)1) 选择Tree模式,找出插入关联函数的位置 (10)注2:web_reg_save_param和web_reg_save_param_ex函数解释 (12)2) 将具体的值替换为参数 (13)注3:lr_output_message ()和lr_eval_string()语法 (13)4. 回放脚本检验关联函数设置是否正确 (14)1) 设置log (14)注4:log设置含义 (14)2) 设置编码格式 (14)注5:如何设置合适的编码格式解决replay log中的中文乱码问题 (15)3) 回放 (16)二、自动关联 (16)1. 录制脚本 (16)2. 自动搜索需关联的值 (16)1) 回放脚本 (16)2) 找出动态的值 (16)注6:自动关联的局限 (17)三、一边录制一边关联 (17)1. 设置rule Correlation (17)2. 录制脚本 (18)在回放脚本时有时会发生回放错误的问题,多数情况下是由于没有关联引起的。
关联就是将录制脚本时服务器端返回的值(该值需要再次传送给服务器端),转换成动态的值发送到服务器端,如SessionID、书名、航班号等。
本文主要介绍手动关联的使用,也是最常用的一种关联方法,另外两种自动关联和一边录制一边关联则简单介绍,有兴趣的读者可以自行研究。
一、手动关联以新浪爱问共享为例实践手动关联的功能地址为:/脚本实现的功能如下:打开新浪爱问共享资源库首页,点击资料推荐中第一个链接,进入到该资料的详细信息页面步骤如下:1.录制脚本1)选择协议,设置录制url点击New Vuser Script…,选择WEB(HTTP/HTML)协议在start recording页面中设置:url:/Record in action:action2)选择录制方式点击Options,进入到recording Options页面中,选择InternetProtocol>Recording,选择如下图:点击OK3)开始录制脚本回到start recording页面,点击OK开始录制脚本4)脚本录制的脚本如下:(已删除cookie部分和无关的资源信息)"RecContentType=text/html","Referer=/","Snapshot=t2.inf","Mode=HTML",LAST);web_url("data.html","URL=/data.html","Resource=0","RecContentType=text/html","Referer=/","Snapshot=t3.inf","Mode=HTML",EXTRARES,"Url=/data.swf", ENDITEM,LAST);lr_start_transaction("search")lr_think_time(18);web_url("35347297.html","URL=/f/35347297.html?from=ii01","Resource=0","RecContentType=text/html","Referer=/","Snapshot=t4.inf","Mode=HTML",EXTRARES,"Url=/pfp/iask/images/zhishi/close_detail.gif","Referer=/f/35347297.html?from=ii01", ENDITEM, "Url=/pfp/i/z3/hbg.gif","Referer=/f/35347297.html?from=ii01", ENDITEM, LAST);web_url("stat.html","URL=/stat.html?appkey=vdisk&type=A&card=7901d21bffcbb204e94c 0290043c58b7&address=3&rand=0.9523009497880321","Resource=0","RecContentType=text/html","Referer=/f/35347297.html?from=ii01",LAST);web_url("stat.html_2","URL=/stat.html?appkey=vdisk&type=A&card=7901d21bffcbb204e94c 0290043c58b7&address=0&rand=0.6173976200780206","Resource=0","RecContentType=text/html","Referer=/f/35347297.html?from=ii01","Mode=HTML",EXTRARES,LAST);web_url("qrcodeiask","URL=/qrcode/qrcodeiask?app_key=3713763883&data=%5B%7B%22dat a%22%3A%22http%3A%2F%%2Fdintro.php%3Fid%3D35347297%22%2C%22width%22%3A%22120 %22%2C%22height%22%3A%22120%22%2C%22hasMargin%22%3A%22false%22%2C%22id%22%3A%22123%22%7D%5D& retvar=request_1357562218078","Resource=0","RecContentType=text/html","Referer=/f/35347297.html?from=ii01","Snapshot=t5.inf","Mode=HTML",EXTRARES,LAST);web_url("alimama.php","URL=/alimama.php?i=mm_15890324_2192376_9086917&w=713&h=81&sz=11&re =1280x800&cah=770&caw=1280&ccd=32&ctz=8&chl=0&cja=1&cpl=0&cmm=0&cf=10.0&cg=e7ddf62ddf782c2bd 89a0d81cda0c3bd&ac=5678&prn=50556085&cas=prn&cbh=437&cbw=771&sx=0&sy=0&refpos=,a,null&t=2&tc =0000FF&dc=000000&bgc=FFFFFF&bdc=E6E6E6&lc=008000&bmc=FFFFFF&as=0&bgp=0&ic=0&pf=0&p4p_ai=1&d x=1&iss=0&u=http%3A%2F%%2Ff%2F35347297.html%3Ffrom%3Dii01&k=&tt=""%E9%AB%98%E6%95%88%E6%97%B6%E9%97%B4%E5%92%8C%E6%97%A5%E7%A8%8B%E7%AE%A1%E7%90%86.ppt_ %E5%85%8D%E8%B4%B9%E9%AB%98%E9%80%9F%E4%B8%8B%E8%BD%BD_%E6%96%B0%E6%B5%AA%E7%88%B1%E9%97%AE%E5%85%B1%E4%BA%AB%E8%B5%84%E6%96%99&r=http%3A%2F%%2F&fu=-1&pageid=6 376ec3fbeb8bec3f3288a77d068ac44","Resource=0","RecContentType=text/html","Referer=/f/35347297.html?from=ii01","Snapshot=t6.inf","Mode=HTML",EXTRARES,LAST);web_url("alimama.php_2","URL=/alimama.php?i=mm_15890324_2192376_8664351&w=190&h=300&sz=22&r e=1280x800&cah=770&caw=1280&ccd=32&ctz=8&chl=0&cja=1&cpl=0&cmm=0&cf=10.0&cg=2252955723460168 43f670b4bb3914c4&ac=5678&prl=50555973&cas=prl&cbh=437&cbw=771&sx=0&sy=0&refpos=,a,null&t=2&t c=0000FF&dc=000000&bgc=FFFFFF&bdc=E6E6E6&lc=008000&bmc=FFFFFF&as=0&bgp=0&ic=0&pf=1&p4p_ai=1& dx=1&iss=0&u=http%3A%2F%%2Ff%2F35347297.html%3Ffrom%3Dii01&k=&tt=""%E9%AB%98%E6%95%88%E6%97%B6%E9%97%B4%E5%92%8C%E6%97%A5%E7%A8%8B%E7%AE%A1%E7%90%86.ppt_ %E5%85%8D%E8%B4%B9%E9%AB%98%E9%80%9F%E4%B8%8B%E8%BD%BD_%E6%96%B0%E6%B5%AA%E7%88%B1%E9%97%AE% E5%85%B1%E4%BA%AB%E8%B5%84%E6%96%99&r=http%3A%2F%%2F&fu=-1&pageid=6 376ec3fbeb8bec3f3288a77d068ac44","Resource=0","RecContentType=text/html","Referer=/f/35347297.html?from=ii01","Snapshot=t7.inf","Mode=HTML",EXTRARES,"Url=/css/iaskads_v2.css","Referer=/f/35347297.html?from=ii01", ENDITEM,LAST);web_url("ishare_nominate.php","URL=/iask/ishare_nominate.php?url=http%3A%2F%2Fishare.iask.s %2Ff%2F35347297.html%3Ffrom%3Dii01&dpc=1","Resource=0","RecContentType=text/html","Referer=/f/35347297.html?from=ii01","Snapshot=t8.inf","Mode=HTML",EXTRARES,LAST);web_url("ip.js","URL=/ip.js","Resource=0","RecContentType=text/html","Referer=/f/35347297.html?from=ii01","Snapshot=t9.inf","Mode=HTML",EXTRARES,LAST);web_url("","URL=/?name=itemdsp&count=12&o=j&p4p=tbcc_p4p_fn_c2012_3_471 3_1357562222671&pid=mm_15890324_2192376_8664351&refpos=,a,null&pvid=2_1357562245_13590315_13 2372736&refpid=mm_15890324_2192376_8664351","Resource=0","RecContentType=text/html","Referer=/go/act/sale/ceshi190300.php?pid=mm_15890324_2192376_8664 351&refpos=,a,null&pid=mm_15890324_2192376_8664351&pvid=2_1357562245_13590315_132372736", "Snapshot=t10.inf","Mode=HTML",EXTRARES,LAST);web_url("r.php","URL=/display/r.php?url=7ac2bd98dc5c2b936bdc9f53d0bf4929@ ppt&appkey=7d8edb857b65c884808edfb3aca067af&key=isharerand=0.9783182572573423", "Resource=0","RecContentType=text/html","Referer=/swf/OctopusReader.swf","Snapshot=t11.inf","Mode=HTML",LAST);web_url("m.php","URL=/display/m.php?id=7ac2bd98dc5c2b936bdc9f53d0bf4929&p n=1&rn=6&key=ishare","Resource=0","RecContentType=text/html","Referer=/swf/OctopusReader.swf","Snapshot=t12.inf","Mode=HTML",EXTRARES,LAST);web_url("v.html","URL=/display/v.html?type=contentload&success=1&time=2156 &t=1357562233484","Resource=0","RecContentType=text/html","Referer=/swf/OctopusReader.swf","Snapshot=t13.inf","Mode=HTML",LAST);web_url("v.html_2","URL=/display/v.html?type=browse&docid=7ac2bd98dc5c2b936b dc9f53d0bf4929&page=1&t=1357562234390","Resource=0","RecContentType=text/html","Referer=/swf/OctopusReader.swf","Snapshot=t14.inf","Mode=HTML",EXTRARES,LAST);其中红色“35347297”为服务器返回的动态的值,需要对该值进行关联(如何确定该值为动态的方法见步骤2)2.找出服务器返回的动态数据1)重复步骤1,再次录制相同的内容(操作步骤与步骤1一致)2)使用WinDiff找出脚本的不同录制成功后,选择Tools>compare with Vuser…,选择已保存的脚本1,使用WinDiff 工具找出两次脚本的不同,判断是否需要进行关联注1:关联值的特点也可根据经验或业务熟练程度分析出哪些值是需要关联的,需要关联的值的特点是一该动态内容一定是从服务端产生并返回客户端的二该客户端在得到该动态内容后一定把它重新发送到服务器端3.插入关联函数,并将数据替换为关联函数中的参数1)选择Tree模式,找出插入关联函数的位置在如下位置插入关联函数其中选择Insert Before,打开查询函数页面,输入web_reg_save_param_ex,选择该函数,设置关联函数的左右边界如下:再次点击Script模式后能够查看到脚本中插入了web_reg_save_param_ex函数如下:注2:web_reg_save_param和web_reg_save_param_ex函数解释web_reg_save_param是一个Service function。
loadrunner关联函数
loadrunner关联函数(WRSP)使用-案例(1)关联函数的使用关联的用途:用于处理请求间依赖关系,只要从服务端返回的数据中获得下一步要使用的数据。
Web_reg_save_param()(WRSP)图1是WRSP的使用的图形界面,根据自己的需要填写相关的内容,就会生成相关的脚本。
我来看看界面中相关的内容有Parameter Name、Left Boundary、Right Boundary、Instance、Relative Frame ID、Not Found、Search in、Sava length、Save offset等等的设置。
我们以下通过例子来说他们的作用现在我们打开百度网站看到里面然后查看该页的源码。
以下就是百度网页源码的一部分代码现在我们想在百度页面中《新闻》两个字出来,下一步进行搜索做为关键词去使用。
代码中的红色的字体的以上的脚本是用《新 闻》来做关键字的不适合我们的需求,下面我们优化一下关联把我们要的《新闻》取出来。
累了-案例一就到这结束loadrunner中的关联(z)录制:web登录邮箱,发送一封带有附件的邮件.但是,每次执行的时候服务器的返回值-附件变量"AttFilles"是不一样的,所以需要将这个变量"AttFilles"做一下关联!关联的方法大体上可以分为手工关联和自动关联.这两种方法各有所长,手工的比较保险,但是需要自己去找关联函数的位置和需要关联的参数,然后一一替代,自动关联就比较简单了,找到关联参数的特征,运行的时候自动关联就是了,但是,有时候自动关联不是很完整,可能有的参数找不全!因为我录的脚本是比较简单的,需要关联的参数只有一个,所以,自动关联还是比较可靠的!我知道的自动关联方式也有两种,我把它们分别定义为:变量名关联和变量值关联!下面大概说一下录制到关联的过程。
一般情况下都是先录制两份相同的脚本,这里的相同是指录制时执行的业务流程,然后用工具比较两个脚本中变化的变量我个人比较喜欢用ultraedit,loadrunner自身也有一个比较的工具,但是感觉这个用起来比较快!好了,找到变量就该关联了,下面是我采用的几种关联方法:变量名关联:前提条件,我已经知道整个脚本中需要关联的变量名是:"AttFiles".那么,需要:RecordOption-Correlation,新建一个"aaa"的关联名,规则为:Action:parameterizeformfiled value;Field name:AttFiles;ParameterPrefix:AttFiles;然后重新录制该脚本,录制的过程中,自然会有关联的提示,只需OK就可以了!变量值关联:前提条件,我已经知道整个脚本中需要关联的变量名是"AttFiles".RecordOption-Correlation,新建一个"bbb"的关联名,规则为:Action: Search for parameters in all of the body text Left bounday:还有一点就是,这个左右边界值,一定要是服务器的返回值(response from server),而不是用户发出的请求值(user request),这个值可以在recording log里找,然后重新录制该脚本,录制的过程中,自然会有关联的提示,只需OK就可以了!手工关联:在脚本中输入函数:web_reg_save_param("ATT","LB="input type="hidden" name="AttFiles" value=","RB=>",LAST,);手工关联的关键在于这个函数位置怎么放,之前有看过一个台湾作者的笔记,但是自己实在是笨,怎么也找不到。
loadrunner 常见的关联函数
LoadRunner是一个功能强大的性能测试工具,常用于对软件和网络应用进行压力测试,以评估它们在不同负载下的性能表现。
在LoadRunner中,关联函数是至关重要的,因为它们能够帮助测试人员捕获并处理动态参数,确保测试脚本的准确性和可重复性。
1. 简介LoadRunner中的关联函数是用来处理动态参数的,因为大多数Web 应用是动态生成内容的。
在录制脚本时,很多参数是动态生成的,比如会话ID、时间戳、随机数等。
如果这些参数不被正确地捕获和处理,测试脚本就无法达到预期的效果。
2. 常见的关联函数在实际的测试工作中,有一些常见的关联函数经常被用到,比如:- web_reg_save_param:用于捕获服务器返回的参数,并将其保存在参数列表中以备后续使用。
- web_reg_save_param_ex:与web_reg_save_param类似,但它允许用户提供更多的选项和参数。
- web_reg_save_param_regexp:用于从服务器响应中提取特定模式的参数。
- web_reg_save_param_json:专门用于从JSON格式的响应中提取参数。
3. 如何使用关联函数在脚本录制完成后,测试人员需要对录制的脚本进行一些修改和优化,其中就包括对动态参数的处理。
通常的步骤如下:- 需要分析录制的脚本,找出其中需要处理的动态参数。
- 在对应的请求中加入适当的关联函数,以捕获并保存动态参数。
- 需要对关联函数进行参数化设置,确保它们在每次运行时都能正确地捕获和处理参数。
4. 个人观点关联函数在LoadRunner中扮演着非常重要的角色,它们直接影响着测试脚本的准确性和可重复性。
在实际的测试工作中,熟练掌握各种关联函数的用法是非常必要的。
对于一些特殊的应用和协议,测试人员可能还需要自行开发定制的关联函数来满足测试需求。
关联函数在LoadRunner性能测试中扮演着不可或缺的角色。
通过正确地使用和参数化关联函数,测试人员能够有效地应对各种动态参数,确保测试脚本的有效性和可靠性。
Loadrunner中的关联
器,这些服务器在每个浏览器第一次跟它要数据时, 都会在数据中夹带一个唯一的辨识码,接下来就会利 用这个辨识码来辨识跟它要数据的是不是同一个浏览 器。一般称这个辨识码为Session ID。对于每个新的交 易,服务器都会产生新的Session ID给浏览器。这也就 是为什么执行脚本会失败的原因,因为VuGen还是用 旧的Session ID向服务器要数据,服务器会发现这个 Session ID是失效的或是它根本不认识这个Session ID ,当然就不会传送正确的网页数据给VuGen了。
当执行脚本时,您可以把VuGen想象成是一个演员,它伪装成浏 览器,然后根据脚本,把当初真的浏览器所说过的话,再对网站 伺服器重新说一遍,VuGen企图骗过服务器,让服务器以为它就 是当初的浏览器,然后把网站内容传送给VuGen。 所以纪录在脚本中要跟服务器所说的话,完全与当初录制时所说 的一样,是写死的(hard-coded)。这样的作法在遇到有些比较 聪明的服务器时,还是会失效。这时就需要透过「关联( correlation)」的做法来让VuGen可以再次成功地骗过服务器。
Correlation Studio
注意:由于Correlation Studio会找出所有有变 动的数据,但是并不是所有的数据都需要做关 联
如果没有弹出询问窗口,则点击scan script for correlation按钮
手动关联
手动关联的执行过程大致如下: 1、录制两份脚本业务过程与数据(过程与数据
Rules Correlation
内建(Built-in Correlation):
针对一些常用的应用系统进行内建关联,如: AribaBuyer、BlueMartini、BroadVision、 InterStage、mySAP、NetDynamics、Oracle 、PeopleSoft、Siebel、SilverJRunner
LoadRunner关联应用实例
LoadRunner关联应用实例文章来源:网络转载脚本内容:录制web登录邮箱,发送一封带有附件的邮件。
由于每次执行的时候服务器的返回值,这个返回值—附件变量"AttachFiles"每次返回都是不一样的,所以需要将这个变量"AttachFiles"进行关联操作!关联的方法大体上可以分为手工关联和自动关联。
这两种方法各有所长,手工的比较保险,但是需要自己去找关联函数的位置和需要关联的参数,然后一一替代,自动关联就比较简单了,找到关联参数的特征,运行的时候自动关联就是了,但有时候自动关联不是很完整,可能有的参数找不全!在实际使用过程中需要注意。
此处。
录的脚本比较简单,需要关联的参数只有一个,所以,自动关联还是比较可靠的!自动关联方式也有两种:变量名关联和变量值关联!录制到关联的过程:一般情况下都是先录制两份相同的脚本,这里的相同是指录制时执行的业务流程,然后用工具比较两个脚本中变化的变量,可用Altraedit,loadrunner自身也有一个比较的工具,但是感觉这个用起来比较快!找到要进行关联的变量就可以关联了,下面是采用的几种关联方法:变量名关联:前提条件,已经知道整个脚本中需要关联的变量名是:"AttachFiles".那么,需要:RecordOptionàCorrelation,新建一个"aaa"的关联名,规则为:Action:parameterizeformfiled value; Field name:AttachFiles; ParameterPrefix:AttachFiles;然后重新录制该脚本,录制的过程中,自然会有关联的提示,只需OK就可以了!变量值联:前提条件是已经知道整个脚本中需要关联的变量名是"AttachFiles"。
选择RecordOptionàCorrelation,新建一个"bbb"的关联名,规则为:Action: Search for parameters in all of the body text Left bounday:还有一点就是,这个左右边界值,一定要是服务器的返回值(response from server),而不是用户发出的请求值(userrequest),这个值可以在recording log里找,然后重新录制该脚本,录制的过程中,自然会有关联的提示,只需OK就可以了!手工关联:在脚本中输入函数:web_reg_save_param("ATT","LB="input type="hidden" name="AttachFiles" value=","RB=>",LAST,);手工关联的关键在于这个函数位置怎么放,脚本的内容多了,不容易找到放此函数的位置。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2011-11-10
20
四、一边录制一边关联
一边录制一边关联:
2011-11-10
21
四、一边录制一边关联
一边录制一边关联:
点击 New Application,创建一个新的应用 在之前的应用上点击New Rule 新建一个规则 为该规则填写左右边界后点击保存 现在新建一个脚本,重新录制一次Web Tours登录 的操作,录制结束查看一下脚本,可以发现系统已 经自动按照规则生成了关联函数,运行脚本直接通 过。
2011-11-10
17
三、手动关联
手动关联详细介绍:
第四步:在View Script中使用 web_reg_save_param函数手动建立关联
1、在找到的代码行的上方点击鼠标右键,选择【insert】>【 New step…】 2、在【Add Step】 窗口的【Find Function】中输入 Web_reg_save_param 函数并选中后点击【OK】 3、Parameter Name处输入参数名称,建议有意义的名字。 4、在【Left Boundary】中输入左边界字符串 5、在【Right Boundary】中输入右边界字符串 6、点击【OK】按钮
2011-11-10 14
三、手动关联
手动关联详细介绍:
第一步:这一步就不用多说了,相同的操作,录制两 份,分别保存 第二步:使用WinDiff工具找出两次脚本的不同,判 断是否需要进行关联
1、在第二份脚本中,点选VuGen的【Tools】>【 ComparewithVuser…】,并选择第一份脚本 2、接着WinDiff会开启,同时显示二份脚本,并显示有差异 的地方。 3、查看二份脚本中差异的部份,每一个差异都可能是需要做 关联的地方。选取差异的脚本,然后复制。
2011-11-10 4
一、关联原理
举例:登陆系统-录制
常见系统中的登陆功能,在登陆后服务器会返回 SessionID,登陆后的操作都需要提交该ID确认身 份。使用VuGen录制时,将会记录服务器返回的 SessionID并原封不动的在下个请求中发给服务器 SessionID
2011-11-10
5
一、关联原理
举例:登陆系统-回放
待到回放时,服务器会在接收到用户名和密码后返 回一个新的SessionID,而脚本依然发送旧的 SessionID给服务器,最终因SessionID错误,导 致脚本回放失败。
2011-11-10
6
二、自动关联
自动关联原理:
自动关联是VuGen提供的自动扫描关联处理策略, 它的原理是对同一个脚本运行和录制时的服务器的 返回进行比较,来自动查找变化部分,并且提示是 否生成关联。2011-11-107二、自动关联
自动关联举例:
举例:用LoadRunner自带的Web Tours网站,录 制一个登陆的过程然后再回放。编译时没有错,运 行时会报错,通过Test Result看到错误信息
2011-11-10
8
二、自动关联
问题就出在脚本中 Web_submit_data()函数
2011-11-10
22
五、Web_reg_save_param详解 详解
关联函数Web_reg_save_param详解 详解 关联函数
打开Add Step添加步骤选择Web_reg_save_para
打开关联设置窗口,如下所示: 打开关联设置窗口,如下所示:
2011-11-10
23
五、Web_reg_save_param详解 详解
2011-11-10
25
五、Web_reg_save_param详解 详解
关联函数Web_reg_save_param详解 详解 关联函数
Right Boundary:此处设置右边界。选项同左边界。 Instance:在这里可以填写一个任意整数,也可以填ALL。如 果填写数字那么说明返回的记录中取出对应顺序的值。而填写 ALL的话将会返回所有的内容。 Relative Frame ID:这个选项是专门针对框架结构的网站设 计的,有些时候需要关联的内容是在某个框架中的,这个时候 就需要说明所关联的页面是框架中的哪一个了。 Not Found:默认值为error,默认情况下如果没有关联到任 何内容则提示错误。而选择WARNING,则只会简单提示没有 抓到内容,不会产生错误。
2011-11-10
11
二、自动关联
此时切换到Script模式看看脚本发生了什么变化 web_submit_data("login.pl",
。。。 ITEMDATA, "Name=userSession", "Value={WCSParam_Diff1}", ENDITEM, "Name=username", "Value=wfj", ENDITEM, "Name=password", "Value=111111", ENDITEM, "Name=JSFormSubmit", "Value=off", ENDITEM, "Name=login.x", "Value=64", ENDITEM, "Name=login.y", "Value=10", ENDITEM, LAST);
2011-11-10
19
四、一边录制一边关联
一边录制一边关联:
接着来看最后一种关联方式,上面的关联都需要进 行一定的操作,那么为什么录制某些系统,会得到 一些自动的关联函数呢?这就是系统默认提供的自 动关联设置,打开录制选项。【Tools】>【 Tools > recording options…】>【Correlation】
2011-11-10 15
三、手动关联
手动关联详细介绍:
4、接着要在Recording Log或是Generation Log中找这个 值。按下Ctrl+F,开启【Find】窗口,贴上刚刚复制的脚本, 找出在Recording Log第一次出现的位置。 5、现在已经找到录制二次都不一样,而且是由服务器所产生 的动态数据了,而此数据极有可能需要做关联
2011-11-10 3
一、关联原理
什么是关联?
所谓的关联(correlation)就是把脚本中某些写死 的(hard-coded)数据,转变成是撷取自服务器 所送的、动态的、每次都不一样的数据。 例如:我们去做飞机,登机之前要检票(机票信息 相对固定),通过可以登机。过了几天拿着同一机 票再去登机,自然不能登机(机票信息已过期)。 那怎样才能顺利登机?可以伪造机票信息…这里我 们通过收集别人返回的信息(机票)伪造机票,从 而满足登机的验证策略。在脚本中也有类似的情况
2011-11-10
24
五、Web_reg_save_param详解 详解
关联函数Web_reg_save_param详解 详解 关联函数
Match case :默认情况下边界是Match case的,即检查大 小写的。可以取消下面的选项来忽略大小写检查。 Binary data:如果需要关联的内容是非ASCⅡ 字符的,需要 使用该选项。 Use # for any digit:有些时候需要关联的边界中有些变动 的数字,并且由于这个数字导致关联非常难以设置边界,可以 使用该选项 Use ^ as a wildcard for xxx alphanumerical characters :这里使用^可以代替任何常用的字符。仅代表 一个字符。
关联函数Web_reg_save_param详解 详解 关联函数
Parameter Name :此处设置存放参数的名称,关联出来的 内容将会存放在该参数中,这里受到Instance选项的影响。 例如: Parameter Name 为Temp,当对应的Instance选项是 任意一个数字的时候,只会关联一个匹配的记录,关联值存放 在Temp中。当Instance是ALL的时候,关联成功后的值将会 依次存放在“Temp_数字”这样的参数数组中,并且会添加 一个temp_ count的参数存放关联出来的记录条数。 Left Boundary:此处设置左边界,这里用来填写关联对于数 据处理的左匹配内容规则。此处是一个字符串。 注意:转义字符为\
LoadRunner学习LoadRunner学习-关联 学习
国瑞数码 吴凤军
2011-11-10 1
主要内容
一、关联原理 二、自动关联 三、手动关联 四、一边录制一边关联 五、关联函数Web_reg_save_param详解 关联函数 详解
2011-11-10
2
一、关联原理
为什么要使用关联?
当录制脚本时,VuGen会拦截client端(浏览器) 与server端(网站服务器)之间的对话,并且通通 记录下来,产生脚本。 当执行脚本时,可以把VuGen想象成是一个演员, 它伪装成浏览器,然后根据脚本,把当初真的浏览 器所说过的话,再对网站伺服器重新说一遍,企图 骗过服务器,让服务器把网站内容传送给VuGen 纪录在脚本中要跟服务器所说的话,完全与当初录 制时所说的一样。这样的作法在遇到有些服务器时 还是会失效的。这时就需要关联的做法骗过服务器
2011-11-10
12
三、手动关联
手动关联原理:
手动关联是关联应用中的最有效手段,通过手动关联 函数 Web_reg_save_param()将想要的字符串保 存到一个参数中。
2011-11-10
13
三、手动关联
手动关联的主要步骤:
第一步:录制测试脚本,录制二遍 第二步:使用WinDiff工具找出两次脚本的不同,判 断是否需要进行关联 第三步:确定插入关联的位置 第四步:在View Script中使用 web_reg_save_param函数手动建立关联 第五步:将脚本中有用到关联的数据,用参数代替 第六步:验证关联的正确性