loadrunner参数化和关联

请求不报错,不代表业务成功,Tools下面有个General Options,下面有个Display标签,勾上Show run_time viewer,回放的时候会出现右边的浏览器,如果输入的参数在某个场景时错误会把错误的信息打印出来,通过下图设置可以把参数化或关联的值打印出来,参数里的输入项一般需要进行参数化,非输入项一般需要关联

loadrunner代理录制脚本(如果正常可以录制到脚本就不用代理录制):

第一步是在Options里Network->Port Mapping,点击New Entry,配置如下图:

第二步是在Program to record中输入wplus_init_wsock.exe,URL Address可以不输入,等打开浏览器的时候输入也可以

第三步是在IE浏览器里配置代理,端口和loadrunner刚才配置的端口保持一致(端口不能被占用,这个是代理ip,lr里的ip是被测系统的ip),如下图:

通过这三步解决了浏览器打不开,没有events的情况,解决浏览器版本问题,点击Start Recording对话框的OK按钮就会弹出代理,如下图:

双击IE浏览器,输入URL Address,这里只能访问设置的lr中ip的地址,录制完成后关闭代理,点击Shutdown,然后点击停止按钮就会生成脚本,生成的脚本都是服务器相应的请求

 

如何避免参数化:1、数据库不做唯一性校验 2、关闭数据库查询缓存,命令是set global query_cache_type 0,开启是1,然后重启mysql

参数化的目的:为了完成业务逻辑,模拟真实压力,将服务器返回的动态值保存为一个参数,供后面的数据使用

为什么要参数化:1、应用程序或数据库对提交的值做唯一性校验 2、为了避免数据库缓存带来的性能测试结果的失真

参数化的步骤就是选中要参数化的值右键Replace with a Parameter,弹出下面的Select or Create Parameter框,改名如username,点击OK,admin就完成紫色的{username}

再点击P按钮,再Edit with Notepad,输入值,然后就从这个list中取值就可以了,如下图:

参数化的名称首先要和Parameter List里的名称保持一致,然后看它下面的文件就是参数化的值,如下图username就是pwd.dat里的值

By number是取第一列的值,触发值的变更条件是(Update value on),Update value on下面有Each iteration,Each occurrence,Once,取值怎么取(Select next row),Select next row下面有Sequential,Random,Unique

循环两次,迭代两次

Sequential +Each iteration:第一次迭代,循环两次,值没有触发,第二次迭代,循环两次,值触发了顺序取值,并发时每个用户都是一个独立的个体,运行相同的脚本,相同的参数化文件,相同的取值策略

Sequential +Each occurrence:每次出现值触发了,每个值按照顺序取值

Sequential +Once:这种参数化策略只取一个值,相当于写死了,用不到 

Random+Each iteration:只有迭代时才会重新取值,循环时值是一样的

Random+Each occurrence:每次出现值触发了,每个值按照顺序取值

Random+Once:每次取值都一样

Unique+Each iteration:唯一的第一个意思是这个值只能使用一次,第二个意思是这个值属于用户a,就不会属于用户b,为每个用户分配值,这样就不会重复,在压测的过程中选择这种策略,增加vu的时候会报错,报值不够的错误

Unique+Each occurrence:选择Unique时会弹出When out of values,有三种方式,第一种是报错,终止虚拟用户,第二种是循环取值,第三种是用最后一个值

Unique+Once:

10个用户,运行10分钟,每个用户的tps是10,该使用什么参数化策略和为每个虚拟用户分配多少值

1(秒)*10(tps)*10(用户)=100个请求/秒*10*60(秒)=60000/10(用户)=6000,实际上要分配6000+,因为有的用户跑的快,Each iteration和Each occurrence都行

10个用户,运行10分钟,每个用户的tps是10,服务器的最大tps是50,该使用什么参数化策略和为每个虚拟用户分配多少值

1(秒)*10(tps)*10(用户)=100个请求,服务器最大tps是50,处理不过来,按照50来计算,50/秒*10*60(秒)=30000/10(用户)=3000,实际上要分配3000+,因为有的用户跑的快

九中参数化策略中使用最多的是Unique+Each iteration和Unique+Each occurrence

下面这三个用的比较多

关联就是将服务器返回的动态的变化的一个值保存为一个参数,以供后面需要用到该值的请求进行使用,如果后面没有用到就不用关联

关联五种方式:

1、在Tree视图里HTTP View->Raw Data->Response,找到要关联的值,然后右键Create Parameter,就会在正确的位置出现关联函数,这是最简单的方式

2、在需要关联的位置右键Insert->New Step,在Add Step对话框里输入关联的函数名称web_reg_save_param,找到双击或点击OK,在弹出的对话框里输入关联的参数名称、左边界和右边界,点击OK即可看到关联函数,如果Tree视图里没有Response,可以通过扩展日志服务器返回结果取到左右边界值,手写关联,Log->Extended log->Data returned by server

3、通过抓包获取关联左右边界,手写关联函数

4、通过获取源文件获取关联左右边界,手写关联函数

5、找到需要关联的那一串不规则数字,粘贴到记事本中,在脚本里手写关联函数web_reg_save_param("formhash ","LB=name="formhash" value="","RB=" />",LAST);,formhash是关联函数的名字,LB是左边界,RB是右边界,用Ctrl+c和Ctrl+v来提取左右边界,有双引号的地一定要在前面放一个,来进行转义,然后用{formhash}取代脚本中要做关联的一串数字,替换成功后不会有颜色的变化,最关键的是关联函数的位置也很重要,放在请求函数的前面

web_reg是预注册,预先声明在使用,注释脚本是Ctrl+Alt+c,取消注释是Ctrl+Alt+u

原文地址:https://www.cnblogs.com/laosun0204/p/8677889.html