LoadRunner FAQ

来源:互联网 发布:如何评价武松知乎 编辑:程序博客网 时间:2024/05/17 03:54
web_concurrent_startweb_concurrent_end

web_concurrent_start

语法:

int web_concurrent_start ( [char * ConcurrentGroupName,]NULL ); 
参数:
ConcurrentGroupName:可选的,并发组的标识符。
NULL:参数列表结束的标记符。
返回值:
整型,返回LR_PASS (0)表示成功,返回LR_FAIL(1)表示失败。

web_concurrent_end

语法:
int web_concurrent_end ( reserved ); 
参数:
reserved:保留的供扩展的字段。 
返回值
整型。返回LR_PASS (0)表示成功,返回LR_FAIL(1)表示失败。

说明
web_concurrent_start函数是并发组开始的标记。web_concurrent_end,并发组结束的标记。在并发组中的函数不是立即执行的。在并发组开始时,所有的函数首先被记录下来,当并发组结束时,所有的函数并发执行。脚本执行时,碰到 web_concurrent_end函数时,开始并发执行所有记录的函数。

在并发组中,可以包含的函数有:web_url、web_submit_data、web_custom_request、web_create_html_param、web_create_html_param_ex、web_reg_save_param、web_add_header。

URL-based 方式将每条客户端发出的请求录制成一条语句,对LoadRunner来说,在该模式下,一条语句只建立一个到服务器的连接,LoadRunner提供了web_concurrent_start和web_concurrent_end函数模拟HTML-based的工作方式

LoadRunner变量

Loadrunner变量分为局部变量和全局变量。

1. 如何定义变量

在Loadrunner脚本中变量必须在开头声明。比如说,在vuser_init、Action、vuser_end定义变量,必须现在最顶端生命,后面才能使用。如果不这样,编译器是通不过的。

2. 局部变量

就像C语言一样,变量有作用域范围,局部变量包含在函数或者vuser_init、Action、vuser_end内部,对于其他范围之外就不起作用了。

3. 全局变量

若要跨越vuser_init、Action、vuser_end定义变量,则需要定义全局变量。在Loadrunner的脚本录制时,会生成一个globals.h文件,在这里定义的变量相当于Loadrunner脚本的全局变量,可以在vuser_init、Action、vuser_end中被使用。例子:

#ifndef _GLOBALS_H #define _GLOBALS_H//-------------------------------------------------------------------// Include Files#include "lrun.h"#include "web_api.h"#include "lrw_custom_body.h"//定义全局变量char * str="This is a test";//-------------------------------------------------------------------// Global Variables#endif // _GLOBALS_H

LR中参数的定义和赋值
1.参数的赋值和取值lr_save_string("hello world","param");lr_eval_string("{param}");2.变量到参数int x;char *y;y="hello";x=10;lr_save_int(x,"param");lr_save_string(y,"param1");lr_eval_string("{param}");lr_eval_string("{param1}");3.变量读参数char x[100];x="{param}";lr_save_string("hello world","param");lr_eval_string(x);
LR中文件下载模拟
Action(){//定义一个整型变量保存获得文件的大小int flen;//保存文件句柄long filedes;//保存文件路径及文件名char file[256]="/0";//定义一个随机数char * strNumber;//Returns the string argument after evaluating embedded parameters.strNumber=lr_eval_string("{RandomNum}");//将路径保存到file变量中strcat(file,"D://Excel//");//将获得的随机数拼接在file变量之后strcat(file,strNumber);//将下载的文件后缀名.rar拼接在file变量之后strcat(file,".rar");//到此为止一个LoadRunner已经获得了一个完整的文件名//设置参数的最大长度,注意该值必须大于文件的大小web_set_max_html_param_len("20000");//使用关联函数获取下载文件的内容,在这里不定义左右边界,获得服务器响应的所有内容web_reg_save_param("fcontent","LB=","RB=","SEARCH=BODY",LAST);lr_start_transaction("下载帮助文件");//发送下载帮助文件的请求web_url("DownLoadServlet","URL=https://testserver3/servlet/DownLoadServlet?filename=help","Resource=1","RecContentType=application/x-msdownload","Referer=","Snapshot=t41.inf",LAST);//获取响应中的文件长度flen = web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE);if(flen > 0){//以写方式打开文件if((filedes = fopen(file, "wb")) == NULL){lr_output_message("打开文件失败!");return -1;}//写入文件内容fwrite(lr_eval_string("{fcontent}"), flen, 1, filedes);//关闭文件fclose(filedes);}lr_end_transaction("下载帮助文件",LR_AUTO);return 0;}

如何进行数据的关联

VuGen提供二种方式帮助您找出需要做关联(correlation)的值:

1. 自动关联

2. 手动关联

自动关联

VuGen内建自动关联引擎(auto-correlationengine),可以自动找出需要关联的值,并且自动使用关联函数建立关联。有两种方式:

RuleCorrelation

可以在【RecordingOptions】>【InternetProtocol】>【Correlation】中启用关联规则,则当录制这些应用系统的脚本时,VuGen会在脚本中自动建立关联。

您也可以在【RecordingOptions】>【InternetProtocol】>【Correlation】检视每个关联规则的定义。

请依照以下步骤使用RuleCorrelation:

1. 启用auto-correlation

1) 点选VuGen的【Tools】>【RecordingOptions】,开启【RecordingOptions】对话窗口,选取【InternetProtocol】>【Correlation】,勾选【Enablecorrelation during recording】,以启用自动关联。

2) 假如录制的应用系统属于内建关联规则的系统,如AribaBuyer、BlueMartini、BroadVision、InterStage、mySAP、NetDynamics、Oracle、PeopleSoft、Siebel、SilverJRunner等,请勾选相对应的应用系统。

3) 或者也可以针对录制的应用系统加入新的关联规则,此即为使用者自订的关联规则。

2. 录制脚本

开始录制脚本,在录制过程中,当VuGen侦测到符合关联规则的数据时,会依照设定建立关联,您会在脚本中看到类似以下的脚本,此为BroadVision应用系统建立关联的例子,在脚本批注部分可以看到关联前的数据为何。

3. 执行脚本验证关联是OK的。

CorrelationStudio

当录制的应用系统不属于VuGen预设支持的应用系统时,RuleCorrelation可能既无法发挥作用,这时可以利用CorrelationStudio来做关联。

CorrelationStudio会尝试找出录制时与执行时,服务器响应内容的差异部分,藉以找出需要关联的数据,并建立关联。

使用CorrelationStudio的步骤如下:

1. 录制脚本并执行

2. 执行完毕后,VuGen会跳出下面的【ScanAction for Correlation】窗口,询问您是否要扫描脚本并建立关联,按下【Yes】按钮。

3. 扫描完后,可以在脚本下方的【CorrelationResults】中看到扫描的结果。

4. 检查一下扫瞄的结果后,选择要做关联的数据,然后按下【Correlate】按钮,一笔一笔做,或是按下【CorrelateAll】让VuGen一次就对所有的数据建立关联。

注意:由于CorrelationStudio会找出所有有变动的数据,但是并不是所有的数据都需要做关联,所以不建议您直接用【CorrelateAll】。

5. 一般来说,您必须一直重复步骤1~4直到所有需要做关联的数据都找出来为止。因为有时前面的关联还没做好之前,将无法执行到后面需要做关联的部份。

手动关联

手动关联的执行过程大致如下:

1. 使用相同的业务流程与数据,录制二份脚本

2. 使用Diff工具比较一下生成的Action.c,找出需要关联的数据

3. 使用web_reg_save_param函数手动建立关联

4. 将脚本中有用到关联的数据,以参数取代

注意动态数据不能放在vuser_init.c文件中。不是所有的差异处都要关联的,WEB_URL()等方法的参数列表的先后顺序是没关系的,思考时间当然也可以不同。

 

LR的检查点设置

常用检查点函数如下:

1)web_find()函数用于从 HTML 页中搜索指定的文本字符串;

2)web_reg_find()函数注册一个请求,以在下一个操作函数(如 web_url)检索到的HTML网页上搜索指定的文本字符串;

3)web_image_check()函数用于从HTML页面中查找指定的图片;

4)web_global_verfication()属于注册函数,注册一个在web页面中搜索文本字符串的请求,与web_reg_find只在下一个Action函数中执行搜索不同的是它在之后所有的Action类函数中执行搜索指定的文本字符串;

下面分别介绍以上函数的用法:

1、web_find()函数参数举例:

web_find("web_find","RighOf=a","LeftOf=b","What=name",LAST);

参数解释:"web_find"定义该查找函数的名称;“LeftOf”和“RighOf=”用来定义查找字符的左右边界;“What=”定义查找内容;

例如上述参数举例中的意思就是在页面中查找左边界为b,右边界为a,内容为name的信息;

使用该函数注意事项:该函数是在查找页面中的内容,所以要放在要查找的内容的后面;该函数只能在基于HTML模式录制的脚本中进行查找

注意事项:使用该函数时,要在Vuser->Run-Tme Settings中更改下设置

勾选Enable Image and text check

系统默认是不勾选该选项的。

2、web_reg_find()函数参数举例:

web_reg_find("Search=Body","SaveCount=ddd","Test=aaa",LAST);

参数解释: Search用来定义查找范围,SaveCount定义查找计数变量名称,该参数可以记录在缓存中查找内容出现的次数,可以使用该值,来判断要查找的内容是否被找到;

例如上述参数举例中的意思就是Body中查找内容为aaa的信息,并将出现次数记录在变量ddd中;

【代码一:web_reg_find("Text=PaymentDetails",LAST);

代码思路:1.“Payment Details” 为你要检查的文本;

2. 脚本执行到此处,若在页面上找到了这几个字符串,那脚本继续执行下去;若没有找到,脚本将在此报错并且结束。

3、web_image_check()函数参数说明:

web_image_check("web_image_check","Alt=","Src=",LAST);

参数解释:“Alt”和“Src”的值直接取该图片在网页源代码中相应参数的值;

注意事项:使用该函数时,要在Vuser->Run-Tme Settings中勾选Enable Image and text check,具体操作请看web_find()中的注意事项。

插入函数的方法

1、 手工写入,在需要插入函数的位置手工写入该函数;

2、 光标停留在要插入函数的位置,在INSERT菜单中,选择new step,在列表中选择或查找要插入的函数,根据提示填写必要的参数;

3、 在tree view模式下,在树状菜单中选中要插入函数的位置,右键,选择insert after或insert before,根据提示填写必要的参数;

总结:

1、 这两个函数函数类型不同,WEB_FIND是普通函数,WEB_REG_FIND是注册函数;

2、 WEB_FIND使用时必须开启内容检查选项,而WEB_REG_FIND则不没有此限制;

3、 WEB_FIND只能用在基于HTML模式录制的脚本中,而WEB_REG_FIND没有此限制;

4、 WEB_FIND是在返回的页面中进行内容查找,WEB_REG_FIND是在缓存中进行查找;

5、 WEB_FIND在执行效率上不如WEB_REG_FIND;

 

使用web_concurrent_start报错

录制方式选的是HTML-based script,改为url-based script就可以了。该函数不支持HTML-based script方式。

 

LR中的脚本变量声明报错

Loadrunner使用的是C语言的语法。脚本中变量必须在开头声明。比如说,在Vuser_init、Action、Vuser_end定义变量,必须现在最顶端生命,后面才能使用。如果不这样,编译器是通不过的。

 



0 0
原创粉丝点击