一.事物,思考时间,检查点,集合点
1.事务
lr里面的事物是lr运行脚本的基础.lr里面 要测试的三个维度都以事物为单位,所以一定要有事物.事务的概念贯穿loadrunner的使用,比如我们说的响应时间其实是事务的的相应时间;tps,每秒中处理的事务数.当脚本跑完之后没有响应时间,导致此种情况之一就是没定义事务.
而在录脚本时:
1.在录脚本是要添加事务
2.添加事务是为了准确的测出相应请求的响应时间,尽量保证每一个事务中只有一个请求.但当录制脚本的时候,在录制HTML脚本时,由于一个HTML下可以有多个url,此时为了保证请求的"干净",可以将mode改为http.http就会只发送这个请求,而html会下载上下文.
3.做脚本时每个事物就放一个请求,这样响应时间就是这个事物的时间,每个事物只包含一个请求
4,思考时间,检查点,关联函数都放在事务外面
ps:做测试的时候action里面最好只有一个请求.因为如果有多个请求,运行同样的时间下,脚本比较"干净"的脚本跑的tps会大一点,这样就影响了tps; 当跑并发的时候,应用服务器里面只处理一个请求和处理多个请求,一定是处理一个请求的更快一点.也就是说,脚本的"干净性"会影响tps和响应时间.
2.检查点
检查点实际是从请求的返回结果里面判断某一个字符串是否有返回,从而判断脚本的请求是否正确
方法:
a.抓包看请求的返回值,从请求的返回值里面.从返回值里面找出能标识返回值的唯一字段
b.在lr中打开脚本的tree视图--HTTP View---从response中找到上一步在返回值里面找出的标识返回值的唯一字段---选中这个字段后右键---选择"Add Text Check Step"
在脚本中显示如下:
其中,以web_reg开头,所以该函数是预注册函数要放在要检查请求的前面,并且为了准确的测出事务的响应时间要放在事务的外面.
PS:1.当在做性能的压测的时候一定要保证请求的成功率=正确的请求/总请求.只有当加检查点后才能保证请求的成功率.
2.检查点会影响性能,当要做结果的检查但又想不影响性能的话,可以做数据库的写操作(update,insert,delete)
3.集合点
集合点在并发的时候才会生效;集合点是为了保障所有的并发都一起运行集合点下面的请求,加大瞬时并发的概率.
集合点放置的位置也要放在事务之前
集合点的添加:Insert -- Rendezvous
4.思考时间
等待时间,相当于sleep
添加思考时间方法:
1.在脚本中添加函数lr_think_time(5),添加时添加到事务的外面.
2.设置run time setting:
思考时间作用:控制单位时间内像服务器发起请求的数量,以达到控制服务器压力的目的,从而影响事务的响应时间及tps.
eg:
注册 tps=1s rt=1s (说明服务器1s处理一个请求)
1个并发 rt=1s
2个vu vu1 rt=1s 2s(vu2的1s+自己处理的1s)
vu2 rt=2s(处理时间1s+等待vu1的1s)
5.tps(每秒钟处理事务数)
理论上说,响应时间越大,tps越大;响应时间越小,tps越大.因为响应时间越小,处理的事务越多. 当服务器到达极限值以后,响应时间会增加,但tps不会变了
tps与响应时间的关系
tps与并发用户的关系:
随着并发用户量的不断增大,tps不断增大
二.手写接口
下面介绍请求接口常用的几个函数:
1.web_custom_request
这个函数用于接口的get/post请求.get请求参数与url拼接使用?,参数与参数之间连接使用&,
如http://127.0.0.1/bbs/upload/member.phpmod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1
post请求,在body里面添加请求参数.
当参数为json时,使用该函数更简洁方便.
注:尽量把Mode改为HTTL,这样在tree视图中会过滤掉css等一些请求.Mode默认为HTML
2.web_url
这个函数用于接口的get请求,只能做get请求
3.web_submit_data
使用web_submit_data做接口时,会自己往接口url后面拼问号.故,不论是get还是post请求,都要将参数写到data部分.但使用这个函数通常都用来做post请求.