LoadRunner关联函数详解

合集下载

loadrunner 详细解释

loadrunner 详细解释

LoadRunner2010-10-29 10:24事务TRANSACTION所谓事务(TRANSACTION),就是在脚本定义中定义的某段操作(ACTION),更确切的说,就是一段脚本语句.定义事务时,首先在脚本中找到事务的开始和结束位置,然后分别插入一个事务起始标记,这样,当脚本运行的时候,LOADRUNER会自动在事务的起始点计时,脚本在运行到事务结束点时计时结束,系统会自动记录这段操作的运行时间等性能数据;在脚本运行完毕后,系统会在结果信息中单独反映每个事务运行结果.LR_START_TRANSACTION(“事务名称”)LR_END_TRANSACTION(“事务名称“)集合点RENDEZVOUS多用户同时加载并发,并发过程仅仅体现在开始执行的那一刹那,随着服务器对请求的响应时间的不一致或系统环境条件的限制,在运行过程中能集合到一点的可能性微乎其微,所以将一定数量的用户同时加载并不是真正意义上的并发.系统压力最大的情况是:所有用户都集中到系统瓶颈的某个点上进行操作,从脚本的角度来讲,这个点就是执行脚本的某一条或一段语句,为了真实模拟这个最坏的情况,查看系统在最坏情况下的反映,LOADRUNNER 提供了集合点的功能,帮助测试人员实现真正意义上的并发.LR_RENDEZVOUS(“集合点名称”)参数化PARAMETERS让所有用户都使用相同的数据来运行,对系统造成的压力与实际情况会有所不同.而对于那些禁止一个用户多次登陆的系统,也就严重到无法测试的地步了.为了解决这个问题,让系统更加真实的模拟多用户使用的实际环境,LOADRUNNER提供了对脚本进行参数化输入的功能.所谓的脚本参数化,就是针对脚本中的某些常量,定义一个或多个包含数据源的参数来取代,让场景中不同的虚拟用户在执行相同的脚本时,分别使用参数数据源中的不同数据代替这些常量,从而达到模拟多用户真实使用系统的目的.注:参数化输入只能用于函数中的参数,不能用参数代替非函数中的常量参数.检查点CHECKPOINTLOADRUNNER检查点的功能主要用来验证某个界面上是否存在指定的TEXT或IMAGE等对象,在使用LOADRUNNER测试WEB应用时,可以检查压力较大时WEB服务器能否返回正常的页面。

Loadrunner11 脚本关联

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 关联函数正则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脚本优化-关联解析

Loadrunner脚本优化-关联解析

2019/2/22
27
四、使用WinDiff手动关联
• 手动关联详细介绍:
– 第四步:在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】按钮
2019/2/22
9
二、自动关联
单击Vusons选项 (使用自动关联前,脚本需运行一次)运行后会看到 以下内容,VuGen已识别出脚本中动态内容
2019/2/22
10
二、自动关联
单击Correlate按钮后,便生成了一个关联。关联前后 的内容以及所属的Action也被列了出来。
2019/2/22 28
四、使用WinDiff手动关联
• 手动关联详细介绍:
– 第五步:将脚本中有用到关联的数据,用参数代替 1、当使用web_reg_save_param建立参数后,接下 来就是用“之前定义的参数名”参数去取代脚本中写死 的(hard-coded)资料。 – 第六步:验证关联的正确性 1、执行脚本,是否能成功运行,假如还是有问题, 就要检查看看是否还需要再做另一个关联。

三、 手工关联
第一步:设置运行时刻
该选项可以把从 web服务器返回的 数据显示在执行日 志里面,你可以在 里面分析确定动态 内容的左右边界

loadrunner关联参数的问题

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的关联技术,我们以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关联函数

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 自动关联

第七章 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常用函数详解

web_url语法:Int Web_url(const char *name, const char * url, <Lists of Attributes>, [EXTRARES,<Lists of Resource Attributes>,]LAST)返回值成功时返回LR_PASS (0),失败时返回 LR_FAIL (1)。

参数:Name:VuGen中树形视图中显示的名称,在自动事务处理中也可以用做事务的名称。

url:页面url地址。

List of AttributesEXTRARES:分隔符,标记下一个参数是资源属性的列表了。

List of Resource AttributesLAST:属性列表结束的标记符。

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

只有VuGen处于URL-based或者HTML-based(此时A script containing explicit URLs only选项被选中时)的录制模式时,web_url才会被录制到。

可以使用web_url 模拟从FTP服务器上下载文件。

web_url 函数会使FTP服务器执行文件被真实下载时的操作。

除非手工指定了"FtpAscII=1",下载会以二进制模式完成。

在录制选项中,Toos—Recording Option下,Recording选项中,有一个Advanced HTML选项,可以设置是否录制非HTML资源,只有选择了“Record within the current script step”时,List of Resource Attributes才会被录制到。

非HTML资源的例子是gif和jpg图象文件。

通过修改HTTP头可以传递给服务器一些附加的请求信息。

使用HTTP头允许请求中包含其他的内容类型(Content_type),象压缩文件一样。

LoadRunner运行设置及关联

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 手工关联

关联函数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手动关联

使⽤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+函数大全_中文解释

LoadRunner+函数大全_中文解释

LoadRunner 函数大全之中文解释1// button_press 函数激活指定的推按钮。

int button_press ( LPCSTR button );// button_set 函数将按钮状态设置为ON 或OFF。

int button_set ( LPCSTR button, int state );// close_session 函数关闭所有打开的窗口并结束// 当前的Baan 会话。

在Baan 模板中创建的此函数// 出现在脚本的vuser_end 部分中。

int close_session();// edit_get_text 函数返回在指定edit 对象中// 找到的所有文本。

若要从特定块中读取文本,// 请使用edit_get_block。

int edit_get_text ( LPCSTR edit, char *out_string );// edit_set 函数使用指定的字符串设置edit 对象的// 内容。

该字符串将替换任何现有字符串。

int edit_set ( LPCSTR edit, LPCSTR text );// edit_set_insert_pos 函数将光标放置// 在edit 对象内的指定位置。

int edit_set_insert_pos (LPCSTR edit, int row, int column );// edit_set_selection 函数突出显示指定文本。

int edit_set_selection ( LPCSTR edit, int start_row, int start_column, int end_row, intend_column );// edit_type 函数将文本字符串输入到edit// 对象中。

该文本字符串不会替换现有字符串;// 它替换的是位于当前光标位置的指定文本。

int edit_type ( LPCSTR edit, LPCSTR text );// init_session 函数通过指定登录数据和配置// 信息打开Baan 连接。

Loadrunner关联实例操作详解_SariyaLee

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。

LoadRunner11脚本关联+运行负载+分析结果

LoadRunner11脚本关联+运行负载+分析结果

LoadRunner11脚本关联+运⾏负载+分析结果⼀、脚本创建关联和插⼊检查点脚本录制完成后,⾸先需运⾏脚本回放,验证是否可回放成功,然后找出各事务请求中的关联点!如本例⼦中,录制的场景为:打开综合窗⼝收件-->查询事项-->窗⼝登记-->选择申请⼈-->保存办件-->选择意见-->下⼀步出件!完成以上场景后,会在【综合窗⼝出件】页⾯产⽣⼀条签收结果为“未签收”的办件!运⾏脚本后,选择树结构,可查看各请求的请求数据和响应结果!经过分析得出,后续请求⽤到的controlSeq和handleSeq,是由controlSave.do这个接⼝产⽣,因此需要在这⾥将controlSeq和handleSeq参数值提取,以供后续接⼝使⽤!1、参数提取--->创建关联(1)选中对应的参数值,⿏标右键选择“创建关联”,在弹窗中点击“是”;(2)由树结构切回脚本(Script)页⾯,对应接⼝请求前有增加了⼀个提取参数的函数,需修改函数中的左、右边界,拿多⼀点参数使提取结果更精确!(PS:使⽤正则表达式进⾏参数提取,此处不过多描述)web_reg_save_param_ex("ParamName=CorrelationParameter_1","LB=\"controlSeq\":\"","RB=\"}",SEARCH_FILTERS,"Scope=All","RequestUrl=*/add.v*","NotFound=warning",LAST);以上步骤,完成了controlSeq的参数提取(handleSeq参数同操作),后续的事务请求中⽤到参数controlSeq时,其对应的值会⾃动替换为CorrelationParameter_1,如下图:2、添加⽂本检查LoadRunner中的⽂本检查,相当于Jmeter中的响应断⾔!(1)在想要检查的接⼝请求前后添加图中的查找函数、打印函数,相关代码和解释如下:1 web_reg_find("Search=Body", #Search⽤来定义查找范围2 "SaveCount=count", #SaveCount定义查找计数变量名称,该参数⽤来记录在缓存中查找内容出现的次数,可以使⽤该值,来判断要查找的内容是否被找到;3 "Text=骞夸笢鐪佺 瀛愮 鐞嗘€荤珯", #=后为查找的⽂本内容4 LAST); #本例⼦的含义:在Body中查找内容为“骞夸笢鐪佺 瀛愮 鐞嗘€荤珯”的信息,并将出现次数记录在变量count中(注意:web_reg_find()需在对应接⼝请求前定义)567 lr_output_message(lr_eval_string("{count}")); #打印变量count的值(2)将录制时产⽣的结束事务(对应接⼝请求所在的事务)的脚本屏蔽,⽤以下代码替换:1if(atoi(lr_eval_string("{count}")) >0)2 {3 lr_end_transaction("综合窗⼝收件",LR_PASS);4 lr_output_message("综合窗⼝收件事务成功!");5 }6else7 {8 lr_end_transaction("综合窗⼝收件",LR_FAIL);9 lr_output_message("综合窗⼝收件事务失败!");10 }#代码含义:将找到的要检查的字符串的个数存到count参数中。

loadrunner关联函数

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等等的设置。

我们以下通过例子来说他们的作用现在我们打开百度网站看到里面然后查看该页的源码。

以下就是百度网页源码的一部分代码现在我们想在百度页面中《新闻》两个字出来,下一步进行搜索做为关键词去使用。

代码中的红色的字体的以上的脚本是用《新&nbsp;闻》来做关键字的不适合我们的需求,下面我们优化一下关联把我们要的《新闻》取出来。

累了-案例一就到这结束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是一个功能强大的性能测试工具,常用于对软件和网络应用进行压力测试,以评估它们在不同负载下的性能表现。

在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中的关联

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如何设置关联

LoadRunner如何设置关联关于关联⼀、什么时候需要关联1.关联的含义关联(correlation):在脚本回放过程中,客户端发出请求,通过关联函数所定义的左右边界值(也就是关联规则),在服务器所响应的内容中查找,得到相应的值,已变量的形式替换录制时的静态值,从⽽向服务器发出正确的请求,这种动态获得服务器响应内容的⽅法被称作关联。

其实关联也属于⼀同特殊的参数化,只是与⼀般的参数化有些不同⼀般的参数化的参数来源于⼀个⽂件、⼀个定义的table、通过sql写的⼀个结果集等,但关联所获得的参数是服务器响应请求所返回的⼀个符合条件的、动态的值2.什么时候需要做关联要想弄清这个问题,我们⾸先要知道客户端与服务器端的请求与响应的过程过程说明:客户端发出获得登录页⾯的请求服务器端得到该请求后,返回登录页⾯,同时动态⽣成⼀个Session Id当⽤户输⼊⽤户名密码,请求登录时,该Session Id同时被发送到服务器端如果该Session Id在当前会话中有效,那么返回登录成功的页⾯,如果不正确则登录失败在第⼀次录制过程中loadrunner把这个值记录了下来,写到了脚本中,但再次回放时,客户端发出同样的请求,⽽服务器端再⼀次动态的⽣成了Session Id,此时客户端发出的请求就是错误的,为了获得这个动态的Session Id我们这⾥⽤到了关联。

所以我们得出结论:当客户端的某个请求是随着服务器端的相应⽽动态变化的时候,我们就需要⽤到关联当然我们在录制脚本时应该对的项⽬进⾏适当的了解,知道哪些请求需要⽤到服务器响应的动态值,如果我们不明确那些值需要做关联的话,我们也可以将脚本录制两遍,通过对⽐脚本的⽅法来查找需要关联的部分,但并不是说两次录制的所有不同点都需要关联,这个要具体情况具体分析⼆、⾃动关联 loadrunner参数化⾃动关联包含两种机制:⼀种是loadrunner通过对⽐录制和回放时服务器响应的不同,⽽提⽰⽤户是否进⾏关联,⽤户可⾃⼰创建关联规则,这个功能可以⽅便的使我们获得需要关联的部分,但同时也存在⼀定的问题,如:⾃动关联所检测到的关联点不⼀定真的需要进⾏关联,这要我们更具实际情况进⾏判断;有些需要关联的动态数据⾃动关联⽆法找到,这是就需要做⼿动关联另⼀种是loadrunner⾃带的⾃动关联规则,在录制脚本时,会根据这些规则⾃动创建关联⾃动关联的步骤如下:1.开启⾃动关联选项刚才提到的两种关联机制,如果⽤户想使⽤loadrunner⾃带的关联规则创建关联,那么需要在【Recording Options】>【Internet Protocol】>【Correlation】中启⽤关联规则,选中“Enable correlation during recording”,当录制这些应⽤系统的脚本时,VuGen会在脚本中⾃动建⽴关联。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
web_reg_save_param("Param", "LB/IC=左边界", "RB=", LAST); 51Testing 软件测试网作品系列 《性能测试进阶指南——LoadRunner9.1 实战》
Binary data 如果需要关联的内容是非 ASCII 字符的,那么需要使用该选项。选中该选项后可以看 到函数变为以下形式:
web_reg_save_param("time", "LB/ALNUMIC=Server response ti^^:", "RB=seconds", "Ord=1", "Search=Body", LAST);
该选项在某些时候能够帮助跳过边界中变动的内容完成抓取操作, 但是注意这里使用的 ^符号是不支持长度变化的,也就是说一个^代表了一个字符的位置。 如果需要关联的边界本 身就是变动的,就不能通过普通的方法来解决了。 Right Boundary 此处设置右边界, 这里是用来填写关联时对于数据处理的右匹配内容规则, 选项同左边 界。 Instance 这个关键字在很多函数里面都有应用,在这里可以填写任意一个整数,也可以填 All。 如果填写数字,那么说明从返回的记录中取出对应顺序的值,而填写 All 的话将会返回所有 的内容。 当使用 Ord=All 时,关联函数会把所有匹配过滤策略的记录都抓出来,由于参数只能存 放一条记录,所以关联函数会生成一个参数数组。被关联的记录会以 {关联参数名_关联 id} 的形式生成参数列表,并且在最后会有一个{关联参数名_count}的参数来存放被关联到的记 录条数。 例如:上面写过的一个关联函数如下所示:
Param_1= index.php?module=ACLRoles&action=DetailView& record=e2ff0695-ebfd-0b34-7947-48cf557dcc0d Param_2= index.php?module=Users&action=DetailView& record=59002589-79d0-7037-0ad5-48cf5cd80d2e Param_3= index.php?module=Users&action=DetailView& record=1 Param_4= index.php?module=Contacts&action=DetailView& record=df820bd4-e8ee-6df5-9725-48cf52ebabff Param_count=4
51Testing 软件测试网作品系列
《性能测试进阶指南——LoadRunner9.1 实战》
51Testing 软件测试网作品系列
《性能测试进阶指南——LoadRunner9.1 实战》
Use ^ as a wildcard for xxx alphanumerical characters 对比上面的功能, 这里可以使用^符号来代替任何常用的字符。 该功能有 3 个选项: All、 LowerCase、UpperCase,使用^支持任意的字符,可以通过该选项来支持大写字母、小写字 母或者不区分大小写。
Action.c(20): Error -26377: No match found for the requested parameter "WCSParam2". Check whether the requested boundaries exist in the response data. Also, if the data you want to save exceeds 1024 bytes, use web_set_max_html_param_len to increase the parameter size [MsgId: MERR-26377]
web_reg_save_param("p", "LB/BIN=\\x3F\\xDD", "RB/BIN=\\xCCb", LAST);
Use # for any digit 有些时候需要关联的边界中有些变动的数字, 并且由于这个数字导致关联非常难于设置 边界,可以使用该选项,例如需要关联处理的内容是:
图 3.154 web_reg_save_param 函数设置窗口
Parameter Name 此处设置存放参数的名称,关联出来的内容将会存放在该参数中。这里受到 Instance 选 项的影响。 例如: 设置 Parameter Name 为 temp,当对应的 Instance 选项是任意一个数字的时候,只会关 联一个匹配的记录,关联值将会存放在 temp 这个参数中。当 Instance 是 All 的时候,关联 成功后的值将会依次存放在 “temp_数字” 这样的参数数组中, 并且还会添加一个 temp_count 的参数存放关联出来的记录条数。 Left Boundary 此处设置左边界,这里是用来填写关联对于数据处理的左匹配内容规则。 在左边界中存放的是一个字符串,例如填写的内容为“左边界”会被转换成以下形式:
web_reg_save_param("Param", "LB/DIG=title=\"[Alt+#]\" href=\"", "RB=\">", “ORD=ALL”, LAST); accessKey=\"#\"
当 Instance 设置为 All 时,关联将会返回所有匹配左右边界的内容,结果如下:
通过这个函数可以确保不会出现参数内容过长而无法存放的错误, 不过这是以开销系统 资源为代价的。 接着来看看 web_reg_save_param()函数的选项,由于关联出来的内容存放在参数中,所
51Testing 软件测试网作品系列
《性能测试进阶指南——LoadRunner9.1 实战》
以还是建议打开日志中的 Parameter substitution 选项,以方便调试跟踪。 打开 Add Step 添加步骤,选择 web_reg_save_param 函数,打开关联函数设置窗口,如 图 3.154 所示。
src='themes/default/images/Users.gif' width='16' height='16' border="0" align= "absmiddle" alt="Administrator">&nbsp;Administrator</a></span> <span style="white-space:nowrap;"><a class="lastViewLink" title="[Alt+4]" accessKey="4" href="index.php?module=Contacts&action=DetailView&record=df820bd4-e8ee-6df59725-48cf52ebabff"><img src='themes/default/images/Contacts.gif' width='16'
很多朋友看到这个错误就会头皮发麻,完全不知所措。这种错误 99%都是由于关联的 边 界 设 置 不 合 理 导 致 没 有 关 联 到 所 需 要 的 内 容 。 系 统 提 示 使 用 web_set_max_html_ param_len()函数的目的是提醒如果被关联内容超出了默认的 1024 字节就会导致存放数据溢 出,就会产生参数值为空、关联失败的情况(做附件下载的脚本就可能会遇到这个问题), 但通常都不会关联到如此巨大的内容。 web_set_max_html_param_len()函数可以自定义关联返回值存放的参数的最大长度。 打开 Insert/Add Step 窗口,找到对应的 web_set_max_html_param_len 函数,如图 3.152 所示。
web_reg_save_param("Param", "LB=左边界", "RB=", LAST);
如果输入的内容里面有双引号, 那么需要通过转义符来进行处理, 转义符为 \。例如:web_reg_save_param("Param",
"LB=\"左边界", "RB=", LAST);
Match case 默认情况下边界是 Match case 的, 也就是检查大小写的, 可以取消下面的选项来忽略大 小写检查,会看到函数变为以下形式:
web_reg_save_param("Param", "LB/DIG=title=\"[Alt+#]\" href=\"", "RB=", LAST); accessKey=\"#\"
使用这样的左边界可以得到准确范围内的关联值, 如果在项目中遇到一些很难确定关联 边界的情况时,可以请求程序员编写一些便于区分的标识来方便进行关联的边界设置。
图 3.152
添加 web_set_max_html_param_len 函数
设置最大长度为 9999999,如图 3.153 所示。
图 3.153
设置 web_set_max_html_param_len 函数长度
得到以下脚本:
web_set_max_html_param_len("9999999");
相关文档
最新文档