性能测试loadrunner

Posted hally

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了性能测试loadrunner相关的知识,希望对你有一定的参考价值。

一,脚本增强

  参数化:为什么要做参数化?(简单点说就是1,模拟不同的数据,2,模拟不同的用户)

  专业角度讲:被业务场景所迫:所有的用户都输入相同的数据,不能体现出真实的业务环境

  被系统体系所迫:存在缓存,不能体现出真正的性能

 

  被系统业务约束所迫:有些系统禁止一个用户多次登录的系统,也就是严重到无法测试的地步了

 

  用户在录制脚本操作系统的过程中输入提交的数据,实际运行虚拟多用户的时候为了符合实际业务需要提交不同的值,参数化输入是一种不错的解决方法

  掌握参数化的几种方法

  如果参数化错误了,不想参数化了,可以选择脚本回滚:在Tools---->Regenerate Script,点击即可,这个是脚本回滚到录制时的初始化脚本

  技术图片

 

 

  技术图片

 

 

  技术图片

 

  

   

  下面是两个随机数和时间参数化的列子: 

Action()

{

//随机格式数据

lr_output_message("第一次=======%s",lr_eval_string("{P_num}{P_num1}{P_num2}"));

lr_output_message("第二次=======%s",lr_eval_string("{P_num}{P_num1}{P_num2}"));

lr_output_message("第三次=======%s",lr_eval_string("{P_num}{P_num1}{P_num2}"));

//日期格式数据

lr_output_message("第一次时间%s",lr_eval_string("{P_time}"));

lr_output_message("第二次时间%s",lr_eval_string("{P_time1}"));

return 0;

}

参数化取值方式:

顺序取值

随机取值

唯一取值

技术图片

Select next row 选项: Sequential 按照顺序,每一个虚拟用户都会按照相同的顺序读取。

Random 在每次循环里随机的读取一个 Unique 唯一的数。注意:使用该类型必须注意数据表有足够多的数。

Same Line As 某个参数(比如Username):和前面定义的参数取同行的值

Update value on 选项: each iteration 每次迭代(循环)都要取新值 each occurrence 只要发现该参数就要重新取值,也就是如果一个action中有多个该参数,每遇到一个就要重新取一个值 Once 在所有的反复中都使用同一个值

When out of values 选项: Abort vuser 数据不够时退出执行,用户停止。

Continue in a cyclic manner 数据不够时,重新开始从第一个参数取值循环利用

Continue with last value 数据不够时取最后一个参数值。

Allocate Vuser values in the Controller 选项: Automatically allocate block size 系统根据迭代次数自动分配参数块 Allocate XX values for each Vuser 为每个用户分配XX条数据

技术图片

 

 

 

二,关联:为什么要做关联?

关联:取得响应返回的值,当后面的请求需要这个值的时候,且这个值是变化的,就可以使用关联

常见的关联场景:1cookie,session,token------认证信息,2,删除订单,再次删除订单号不存在

关联函数的位置,关联函数如何写

通过手工去查找需要关联的数据,手动编写脚本完成的关联

录制两份相同操作的脚本----》通过WinDiff工具比较两份脚本----web_reg_save_param函数手动建立关联

WinDiff工具为Loadrunner自带工具,也可以使用Uedit比较,目的就是找出两次录制过程中变化的值

web_reg_save_param语法:

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

注意:关联完成后需要用关联定义的参数名称{ParamName}去替换脚本中所有需要此关联的参数值

web_reg_save_param("outFlightVal",//参数名称

“LB=outboundFlight value=”," RB=>",//参数左右边界,该属性必须有,并且区分大小写。

“ORD=ALL”,//查询参数位置的序号,当ORD=1时,只匹配第一个出现的参数,当ORD=ALL时,所有匹配保存到一个数组,可以用outFlightVal_1,outFlightVal_2,....把所有匹配的数据取出

“RelFrameID=ALL”,//相对于所有请求URLhtml页面的层级,可能的值是ALL或者数字,all会查找本url下所有的HTML页面,默认是查找最后一个页面

“Notfound=error”,//没有找到关联参数时报错类型,默认为error,可以指定是error或者warning,warning一般在不想出现错误提示且脚本想继续执行时会用到

“Savelen=18”.//参数字符串长度

“SaveOffset=0”,//从查到参数的第几个字符开始保存参数,默认是0

“Search=ALL”//搜索参数的范围,可以是Header,Body,NoResouce,

ALL(缺省)

LAST);//参数属性列表结束

一般关联函数放到获取值的请求的上面,不能放到下面

技术图片

 

 

技术图片

 

 

 

 

技术图片

 

技术图片

 

 

 技术图片

 

 

 

 

 

 技术图片

 

技术图片

 

 技术图片

 

技术图片

 

 

 

 技术图片

 

技术图片

 

 

技术图片

 

技术图片

 

 

技术图片

 

 

技术图片

 

技术图片

 

 

技术图片

 

技术图片

 

 技术图片

 

技术图片

 

 

 技术图片

 

技术图片

 

 

 技术图片

 

技术图片

 

 

 技术图片

 

技术图片

 

 

 技术图片

 

技术图片

 

 技术图片

 

以上是关于性能测试loadrunner的主要内容,如果未能解决你的问题,请参考以下文章

LoadRunner 性能测试总结,LoadRunner 性能测试实例

loadrunner性能测试的时候,测试的事务响应时间比实际情况的值还要大。这个是啥原因?

性能测试与LoadRunner

性能测试迭代与检查点(loadrunner12.55)

如何使用loadrunner测试页面性能

LoadRunner 性能测试脚本