天天看点

LoadRunner 部分工具使用方法记录

Loadrunner12安装包下载地址:https://pan.baidu.com/s/1E8AUGLefucKaxDrEEJRg_g

1、如何用Loadrunner进行断言?(根据页面返回结果判断成功与否)

第一步:如果已经录制了一个注册用户脚本,在注册成功后的脚本上,打开快照,然后由data页面切换到图形界面;

LoadRunner 部分工具使用方法记录

第二步:选中page view下展示的标志位(成功/失败的区分),右键 ->Add check text step ->

LoadRunner 部分工具使用方法记录

search in :Body (在返回体的body中找) / header(在返回体头部中找)/ All (全部..)

save count: 如果在选中区域找到几个标志位就加1,可以设置一个变量来装

确定之后会自动在脚本里加一句:

LoadRunner 部分工具使用方法记录

判断saveCount 设置的这个变量registerflag,如果次数大于0,那么就代表成功。

LoadRunner 部分工具使用方法记录

atoi():将字符串转成数字类型;

2、关联

为什么要进行关联?

在录制生成的脚本中,录制到了一些服务器分配的数据,但是再回访的过程中,服务器又重新分配了新的数据,导致这些录制时生成的数据已经无法使用,需要使用服务器分配的最新数据。

关联可以在脚本中捕获到服务器分配的数据,存储到参数中,需要使用时从参数中取出,从而保证使用的是服务器最新分配的数据。

其实关联也属于特殊的参数化,只是与一般的参数化有些不同。一般的参数化的参数来源于一个文件、一个定义的table、通过sql写的一个结果集等,但关联所获得的参数是服务器响应请求所返回的一个符合条件的、动态的值,也是不可控的。

如何关联?

第一种:手动关联

我们需要找到哪些数据是动态变化的,需要录制几次才能看出来需要关联的值。

方法:使用LR自带的WinDiff工具协助找出需要关联的数据:

在第二份脚本中,点选VuGen的【Tools】>【Compare with Vuser…】,并选择第一份录制的脚本。

接着WinDiff会开启,同时显示二份脚本,并显示有差异的地方。WinDiff会以一整行黄色标示有差异的脚本,并且以红色的字体显示真正差异的文字。(假如没看到红色字体,请点选【Options】>【View】>【Show Inline Differences】)。

找到不同的部分后,复制,然后打开Recording Log或是Generation Log,按Ctrl+F,在查找窗口中粘贴差异部分的内容,点击查找找到后,查看该部分的信息,确认是客户端的请求信息还是服务器回应的信息

如果出现在$$$$$$ Request Header For Transaction With Id 3 Ended $$$$$$这个部分,那证明是客户端发出的请求,这里是不需要做关联的。

一般做的关联都是出现在****** Response Header For Transaction With Id 7 ******和****** Response Body For Transaction With Id 7 ******中的部分。

在找到这个信息后,需要记录如下信息:

a、记录这个不同数据之前的内容和之后的内容

b、记录这个不同数据出现的位置,是Header还是Body

关联的位置:一般情况下关联函数写到发出请求的函数之前就可以了。

web_reg_save_param 函数(保存参数)的书写方式:

语法:

int web_reg_save_param(const char *ParamName, <list of Attributes>, LAST);

详情请参考LR帮助文档。在这个函数中,*ParamName是用来存放得到的动态内容的参数名称。

<list of Attributes>:其它属性,包括:Notfound, LB, RB, RelFrameID, Search, ORD, SaveOffset, Convert, SaveLen。属性值不分大小写。这其中比较常见的是:

LB( Left Boundary ) : 返回信息的左边界字串。该属性必须有,并且区分大小写。

RB( Right Boundary ): 返回信息的右边界字串。该属性必须有,并且区分大小写。

Search : 返回信息的查找范围。可以是Headers,Body,Noresource,All(缺省)。该属性质可有可无。

SaveOffSet:偏移量,指从左侧偏移几个位置后开始存储该数据。

SaveLen:存储长度,指从左侧开始,存储长度为多少的数据。

ORD:假如通过LB,RB取到了多个数据,通过此参数可以定位到底是要哪一个数据,默认为第一个。

拿loadrunner自带网站举例:

第一步:找到需关联的参数sessionid;

LoadRunner 部分工具使用方法记录
LoadRunner 部分工具使用方法记录

第二步:取出并保存关联的值

然后在脚本中添加函数:web_reg_save_param("paramSessionID","LB=userSession value=","RB=>",LAST);

意思就是:取出“userSession value=” 到 “>” 之间的值存到paramSessionID 变量中。(可以看到就是sessionid的值)

也可以查找对应函数,然后自动生成:

Insert .> New Step…,找到web_reg_save_param函数

LoadRunner 部分工具使用方法记录

填写参数名左右边界等信息

LoadRunner 部分工具使用方法记录

点击“OK”生成函数,如下图:

LoadRunner 部分工具使用方法记录

第三步:插入函数到脚本,并在需要关联的地方填入取出的值

在请求到服务器返回的sessionid之后,便插入 web_reg_save_param保存参数函数,取出值,并保存为你自定义的值,

LoadRunner 部分工具使用方法记录

在需要用到关联值的地方,使用这个关联的变量:

LoadRunner 部分工具使用方法记录

第五步:验证

我们回放一下脚本,在下面的Replay Log中查看是否有这样的语句:

LoadRunner 部分工具使用方法记录

这就说明已经关联成功了!

第二种:自动关联

(1)回放脚本:回放之前要打开Tools->recording Options 窗口,点击correlation标签页,确保Enable correlation during recording 选项处于勾选状态,如下图

LoadRunner 部分工具使用方法记录

回放日志如下,出现了异常:Requested image not found

LoadRunner 部分工具使用方法记录

 (2)找到关联值

这时候我们可以通过扫描脚本查找关联值,如下图点击“Scan script for Correlations”,也可以用快捷键ctrl+F8

LoadRunner 部分工具使用方法记录

这里标黄的部分就是sessionid了,然后我们对这个sessionId做关联。

(3)进行关联

选中这一大串sessionID,然后右键点击“Create Correlation”

LoadRunner 部分工具使用方法记录

然后回到脚本中可以看到已经生成了一块函数web_reg_save_param_ex,被保存的参数名为“CorrelationParameter_1”

LoadRunner 部分工具使用方法记录

最后,打开登录函数块,我们就可以看到sessionid就已经参数化了,如下图。

LoadRunner 部分工具使用方法记录

3、loadrunner内置函数介绍

Help ->Function Reference 打开函数助手;

(1)拼接字符串函数:sprintf(param[],param1,param2);  //将param1和param2拼接起来,然后放到param数组里面。

(2)比较字符串函数:strcmp(str);

(3)查找字符串函数:web_reg_find();

(4)输出字符串:  lr_output_message (" this is a %s ", tmp);

   (5) 保存变量函数:web_reg_save_param() / web_reg_save_param_ex();    // web_reg_save_param_ex("ParamName=depart","LB=\">","RB=</option>","Ordinal=All",LAST);

(6)将参数对应的值转化成字符串: lr_eval_string("{username}");

4、loadrunner 使用vuser Gen处理ajax请求

有时候会遇到浏览器使用ajax提交数据,然后使用loadrunner录制好脚本后,回放脚本发现数据库并没有改变跟原来还是一样。这是使用的是Javascript 函数处理的,但是loadrunner对Javascript 这种处理能力又有限,所以就会出现这种。

loadrunner录制脚本只要是再浏览器上操作的,都是基于的HTTP协议,那么我们抓一个使用了ajax请求的包,会发现这个包的请求头部和其他包有点不一样,多了一个:

X-Requested-With,并且值为XMLHttpRequest

这代表此请求采用了ajax,那么我们照着这种思路,我们只要在回放的脚本里面添加上这个请求头值,是不是就行了呢?答案是肯定的。

在此请求前面添加一行:web_add_header("X-Requested-With","XMLHttpRequest");

再次回放发现成功了。

5、