loadrunner事务、检查点、集合点、思考时间
事务就是一段脚本语句,在进行性能测试时事务很重要,定事务时,首先在脚本中找到事务的开始和结束位置,然后分别插入一个开始事务、结束事务,这样当脚本运行的时候,loadrunner会自动在事务的起始点计时,脚本运行到事务的结束点时计时结束,系统会自动记录这段操作的运行时间等性能数据
注意事项:事务必须成对出现,事务的名称一定要有意义,如开始事务lr_start_transaction("登录bbs"),结束事务lr_end_transaction("登录bbs", LR_AUTO),事务的名字必须相同,事务中的代码最好只有一个请求,可以把Mode=HTTP,这样保证只有一个请求,或者使用URL录制,一个action尽量放一个接口,如果这个接口要依赖于登录,可以把登录放到init里面,如果action中的请求依赖于别的请求,别的请求也要放在acton里
文本检查点函数:
从response里面找出一个固定的字符串作为检查点,步骤是在Tree视图里HTTP View的Response里右键一个固定的字符串,点击Add Text Check Step,弹出如下的对话框,BestTest是刚才右键选中的,Savecount的值随便写,这里写成count了,把找到次数放在count里,其他两个勾选不勾选都无所谓,点击OK就在脚本前面生成了检查点函数,因为是预注册要放在请求前面,检查点就是判断脚本的请求是否正确
为了保证请求的成功率使用检查点,查询操作必须使用检查点,写操作不需要检查点,直接去数据库里比对,比如写100条带标识位的数据到数据库,直接去数据库查询就行,和钱相关以及修改操作Passed Transactions必须是100%,其他业务成功率可以是99%或99.9%或99.99%,Passed Transactions在Controller Scenario里
集合点的目的是加大瞬时并发的概率,所有用户触发集合点后请求下面的代码,秒杀,抢购适合集合点的使用,为了使某个请求并发的概率大一些就把集合点放在请求的前面,放在事务的外面,集合点函数lr_rendezvous("login");
思考时间的作用:控制单位时间段内向服务器发起请求的数量,以达到控制服务器压力的目的,从而影响测试的响应时间以及tps,lr_think_time(2)
模拟并发 vu1/vu2/vu3/vu4/vu5,tps=1,处理时间是1s,五个用户的等待时间是0/1/2/3/4s,五个用户的响应时间是1/2/3/4/5s
Run-time Settings:
Run Logic Number of Iterations设置几次只是对Action起作用
Think Time 默认是忽略思考时间,切换到Replay think time
As recorded:按照录制时的思考时间回放
Multiply recorded think time by:按照录制时的思考时间的倍数回放
Use random percentage of recorded think time:按照百分比范围
Limit think time to:最大设置几秒,超过这个时间就不等了
Pacing 步长的意思
As soon as the previous iteration ends:上次迭代完成立即开始第二次迭代
After the previous iteration ends:上次迭代完成开始第二次迭代要等待fixed的时间
At fixed intervals,every多长时间:这个时间包括脚本运行时间和等待时间(provided that the previous iteration ends by that time)
Log 前提要勾选Enable logging,默认是标准日志,切换到扩展日志
Parameter substitution:打印出关联、参数化的值
Data returned by server:服务器返回的结果,相当于一次debug,打印出好多内容
Advanced trace:高级追踪
Miscellaneous:
Error Handing的意思是出错处理
Continue on error是发生错误继续运行脚本
Fail open transactions on lr_error_message是打印错误信息
Generate snapshot on error是生成错误快照
Multithreading的意思是多线程
Run Vuser as a process是以进程模式运行虚拟用户,进程快,默认一个进程包含50个线程,进程模拟ip,做ip欺骗用进程
Run Vuser as a thread默认是以线程模式运行虚拟用户,线程解约资源
Automatic Transactions的意思是自动的事务,并发时不要勾选下面任何一个
Define each action as a transaction是定义每个action是一个事务
Define each step as a transaction是定义每一步是一个事务
Speed Simulation模拟网络带宽,2g时代,现在是5g时代,没啥用
Browser Emulation模拟浏览器,只勾选下面那个,不走缓存
Proxy不走代理,No proxy
Preferences里Options只关注以下几项,UTF-8可能会解决回放时的乱码,录制时options里的UTF-8解决脚本里的乱码