一.事物,思考时间,检查点,集合点

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请求.

  

最新文章

  1. 【leetcode】Find Minimum in Rotated Sorted Array I&&II
  2. Atitit Server Side Include  ssi服务端包含规范 csi  esi
  3. InitGoogleLogging坑爹
  4. Hello world!让 grub2 引导自己的操作系统 Xos 内核
  5. DD_belatedPNG,IE6下PNG透明解决方案
  6. C# Flash 图片上传案例(结合网上腾讯头像上传Flash插件)
  7. java EE 学习
  8. c#序列化反序列化工具(json,binary,xml)
  9. C语言学习笔记---谭浩强
  10. css3 menu 手机菜单3
  11. 标准IO: 文件的打开与关闭函数 fopen & fclose
  12. Maven:常用命令
  13. Binder和SurfaceFlinger以及SystemServer介绍-android学习之旅(79)
  14. OpenGL Shader Key Points (1)
  15. URL tomcat中文乱码
  16. Fiddler-学习笔记-远程抓包
  17. EasyARM-iMX283A的Linux 开发环境构建
  18. zz Alex's BLOG 串口连接
  19. 使用async-http-client实现异步批量http请求
  20. jQueryUI datepicker 报错: TypeError: inst is undefined

热门文章

  1. AndroidStudio第一次提交项目代码到git服务器/github
  2. _T(x) _TEXT(x) L 代表什么?
  3. confluent 更换ip地址之后修改数据库
  4. JAVA初级必须要搞懂的事项(希望对新手有所帮助)
  5. SQLite基础教程目录
  6. 安装PIL报错解析
  7. blog.yiz96.com
  8. 歌乐第二弹:C++九九八十一
  9. ios之UISplitViewController
  10. 【动态规划】loj#2485. 「CEOI2017」Chase