性能测试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);//参数属性列表结束

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

 

 

 

 

 

 

 

 

 

 

原文地址:https://www.cnblogs.com/hally/p/12638285.html