性能测试脚本的增强:
·参数化
·关联
·事务
·检查点
·思考时间
·集合点

·事务:事务的引入是为了度量相关的业务请求的响应时间和吞吐量指标。
在LR中,事务是通过两个事务函数来实现的。
lr_start_transaction() 开始计时
lr_end_transaction() 结束计时

·注意事项:
·事务函数只是两个计时器函数,是不会影响脚本的执行逻辑的。
·事务函数一定要成对出现。除了函数本身以外,是通过函数中的事务名称来配对处理的。因此要保证事务名称的一致性。
·事务函数的添加位置,取决于业务和测试的需要。
·事务时间的构成。
事务时间=结束计时-开始计时
我们希望:
事务时间=(业务的)响应时间
但是在LR中,事务时间并不真的等于响应时间,都是大于真正的响应时间的。
在LR中,事务时间=响应时间+wasted time(浪费时间)+think time(思考时间)
·wasted time:浪费时间,是指LR自身的脚本编译、执行所需要的时间,并不包含代码执行之后的效果的时间,仅仅是代码本身的执行时间。
这个时间的大小一般客观的翻译了负载机本身的性能的好坏。
Vugen--》Controller--》Analysi。
当脚本在Controller中运行时,LR会自动将浪费时间从事务时间中剔除。

·think time:思考时间。是指LR脚本的思考时间的执行实际等待的时间。
PS:默认选项下,Vugen中是不运行思考时间函数,Controller是运行的。
当Controller中的结果导入到Analysis组件后,LR会自动将思考时间从事务时间中剔除。这就意味着在Analysis组件中看到的事务时间,已经是非常非常接近真实的响应时间的。
Analysis中的 事务响应时间=事务时间-浪费时间-思考时间。

综上:我们建议,在事务函数中,除了要度量的请求函数,尽量不要添加其它额外的代码。

·事务的结束状态。
在LR中,事务的结束状态总计有四种:
LR_PASS:表示事务的结束状态是成功。
LR_FAIL:表示事务的结束状态是失败。失败只是说脚本运行逻辑出现了fail信号。
LR_STOP:表示事务的结束状态是被停止的。基本不会出现。

LR_AUTO:表示LR会自动来判断事务的结束状态,从而选择PASS\FAIL\STOP。
LR会自动根据事务函数中所包含的有结束状态的函数的结束状态来自动判断。
如果函数是请求类函数,那么该类函数成功与否是取决于服务器的响应的响应代码(状态码)。
如果函数是功能型函数,那么该类函数成功与否是取决于函数自身的功能是否实现的。

因此,如果是LR_AUTO,那么事务成功其实不一定代表业务成功。如果要检测业务是否成功,则需要用户自己添加检查点来实现判断。

·检查点:
又叫断言(assertion)。
其实就是由代码代替人去完成功能测试(对比实际结果和预期结果)。
在LR中,检查点函数主要使用的是:web_reg_find()函数。

·注意事项:
·web_reg_find函数是一个注册型函数,一定要放在要检查的请求之前。
·检查内容可以来源于正确的响应,也可以来源于错误的响应。
(预期值)要求具有唯一性和排他性。
示例:假设服务器响应的情况有六种,三种正确和三种错误的情况,分别如下:
T1:abc 123
T2:abd 134
T3:acd 245
F1:efg 567
F2:efh 578
F3:egh 568
问:通过哪些字符可以判断请求是成功还是失败?
a、e

·检查内容必然是来源于服务器的响应源代码,而不是界面所见到的内容。

·检查内容必须精确(准确)。

·检查点函数的解析:
·检查点函数内部有三个功能:查找、保存查找到次数、判断是否找到。
·Fail if:默认是执行的。选项有两个:
Not Found:如果预期值没有找到,则失败。
Found:如果预期值找到,则失败。
默认选择的是Not Found,即针对的是正确响应的预期值。

·Save Count:该选项是用来填写一个参数名,由用户自己指定。用来存储预期值的查找次数。
PS:如果勾选该选项,没有勾选Fail if选项,则最终检查点函数是不会执行Fail if 检测的。
通常来说,如果勾选了Save Count选项,则意味着我们不希望检查点函数自己检测,则是由我们自己来实现事务成功与否的判断啦。

示例:假设服务器响应的情况有六种,三种正确和三种错误的情况,分别如下:
T1:abac 1aa2e3 4a
T2:abad 1aa34 4a
T3:acda 24aa5a 5a
F1:efag 567 a
F2:efh 5aa78 aa
F3:egah 568 a
问:如何判断请求是成功还是失败?
此时只能根据字符(字符串)“a”出现的次数来判断啦。
if(atoi(lr_eval_string("{num}"))>=4)

·思考时间:
参考运行时设置。

PS:在实际测试过程中,建议添加随机的思考时间,这样对于场景的模拟是有好处的。
随机思考时间建议1-5s。

·集合点:集合点是为了模拟严格意义的并发测试而存在的。
通常来说,一旦做集合点操作,即做严格意义的并发模拟,通常我们只关心两个指标:
·错误率
·响应时间

一般来说,一旦添加集合点,通常不会长时间负载,而是指定次数进行负载。

在LR中,集合点是通过函数(Vugen)+设置(Controller)来实现的。
函数:lr_rendezvous()

·注意事项:
·集合点函数本身不会影响脚本的执行逻辑,在脚本中只是一个标记。
表示任何虚拟用户任何时候运行集合点函数后,就会遵守集合点策略进行等待。

·集合点策略:
在Controller的菜单项:scenario-rendezvous选项中进行设置。
·disable Vusers:该选项并不是说禁止用户运行脚本,仅仅是表示这些用户不再受到集合点策略的影响,即列为不受控用户,不参与集合。
·集合点策略设置的是两个要素:一次集合的人数、超时时间。
针对集合的人数,LR提供了三种可选的方式:
·% all vusers:以所有受控虚拟用户为基数,通过百分比来设置集合人数。

·% all running vusers:以所有运行中的虚拟用户为基数,通过百分比来设置集合人数。
PS:个人理解,该处存在bug。在统计过程中,统计了不参与集合的虚拟用户。

·Vusers:直接设置集合点的人数。

超时时间,LR提供的超时时间是虚拟用户之间的等待时间,而不是第一个虚拟用户到最后一个虚拟用户的等待时间。

·不同业务的并发的实现:
·不同的业务一定要有两个不同的脚本。(A和AB)
·在不同的脚本中添加集合点,名称保持一致即可。

·集合点函数的添加位置:
集合点函数必然是添加在事务函数之前。

·脚本增强技术的总结:
·一般来说,事务和检查点是必加的。
·参数化和关联是属于增强手段,视情况而言。但是实际业务中,基本上也是必须使用的。
·思考时间的添加会影响到TPS(虚拟用户数固定的情况下)。
一般来说,对于没有高并发诉求的场景,我们都建议添加随机的思考时间。

·集合点:一般就是用来测试高并发的场景的。

性能测试基础---事务&检查点&思考时间&集合点的更多相关文章

  1. LoadRunner手写脚本、检查点、集合点、事务、思考时间

    手写脚本 什么时候要手写? 可以有条件手写脚本的场景有两类: 有接口说明文档 没有借口说明文档,要去录制,录制不了,抓包手写 所需函数 我们这里讲的例子是基于 http 协议的,也是常见的两种请求类型 ...

  2. 性能测试基础---LR参数化相关

    性能测试脚本的增强:·参数化·关联·事务·检查点·思考时间·集合点 ·参数化:模拟不同用户的不同请求. ·为什么要做参数化? ·功能:通常来说,系统的某些业务数据具有唯一性的要求. ·性能:一般来说, ...

  3. JMeter基础【第六篇】JMeter5.1事务、检查点、集合点、思考时间、其余设置等

    JMeter5.1事务.检查点.集合点.思考时间.其余设置等

  4. 性能学习笔记之四--事务,思考时间,检查点,集合点和手写lr接口

    一.事物,思考时间,检查点,集合点 1.事务 lr里面的事物是lr运行脚本的基础.lr里面 要测试的三个维度都以事物为单位,所以一定要有事物.事务的概念贯穿loadrunner的使用,比如我们说的响应 ...

  5. LoadRunner事务/集合点/思考时间详解(转)

    在LoadRunner的脚步编写中,有三个重要的概念:事务.集合点.思考时间. 一.事务: 事务又称为Transaction,我们为了衡量某个action的性能,需要在action的开始和结束位置插入 ...

  6. LoadRunner几个重要的概念:事务、集合点、思考时间

    在LoadRunner的脚步编写中,有三个重要的概念:事务.集合点.思考时间 事务: 事务又称为Transaction,在LoadRunner中的定义如下:An end-to-end(browser- ...

  7. jmeter--九种定时器介绍(包括思考时间、集合点)

    知识来源:http://www.cnblogs.com/imyalost/p/6004678.html jmeter提供了很多元件,帮助我们更好的完成各种场景的性能测试,其中,定时器(timer)是很 ...

  8. LoadRunner 思考时间与事务响应时间的区别与关系

    LoadRunner 思考时间与事务响应时间的区别与关系   思考时间lr_think_time 就是一个事务要开始时思考的时间;比如 你要点击一个 登录按钮 我们都要点击这个按钮要先思考下 就是人为 ...

  9. loadrunner 事务、同步点和思考时间

    事务 在LoadRunner里,我们定义事务主要是为了度量服务器的性能.每个事务度量服务器响应指定的Vuser请求所有的时间,这些请求可以是简单任务,也可以是复杂任务. 要度量事务,需要插入Vuser ...

随机推荐

  1. a标签设置水平右对齐

      1.情景展示 如上图所示,这其实是一个a标签,如何让它右对齐呢? 2.解决方案 第一步:将行内标签转化成块级元素,即display:block: 第二步:文字右对齐,即text-align:rig ...

  2. Tomcat通过脚本自动部署

    1:autodeploy_tomcat_app.sh now=`date +%Y%m%d%H%M%S` tomcatPath=/home/test/apache-tomcat- backupPath= ...

  3. shell三剑客之grep

    背景 对于很多的测试人员来说,grep命令都很熟悉,用的最多的比如去查找指定的进程:ps -ef | grep *** ,其中***为进程名或进程号,这里我们只用到的grep的最基础功能-从标准输出中 ...

  4. [IOI 1994]数字三角形

    数字三角形 总时间限制: 1000ms 内存限制: 65536kB 描述 73 88 1 02 7 4 44 5 2 6 5 (图1) 图1给出了一个数字三角形.从三角形的顶部到底部有很多条不同的路径 ...

  5. 深入理解JVM-类加载初始化阶段-类的主动与被动引用

    JVM的类加载阶段中初始化阶段 P210 虚拟机规定的五种情况必须对类的“初始化”情况 1.遇到new.getstatic.putstatic.或invokestic 四条字节码指令时,如果类没有经过 ...

  6. 关于nginx proxy_next_upstream 重试 和 max_fails的那些事

    背景及简要分析 前几天一次故障定位的时候发现,后端服务(java)在从故障中恢复之后,会出现大量499,且会持续较长时间无法自行恢复.根本原因是服务容量问题,处理太慢导致客户端等不了了,主动断开.不过 ...

  7. WeakhashMap源码1

    弱引用(WeakReference)的特性是:当gc线程发现某个对象只有弱引用指向它,那么就会将其销毁并回收内存.WeakReference也会被加入到引用队列queue中. 它的特殊之处在于 Wea ...

  8. DataTable 删除行 UpdateTable 方法

    .不要使用DataTable.Rows.Remove(row) 而要使用 DataTable.Rows[i].Delete() .DataTable.Rows.Remove(row)相当于DataTa ...

  9. idea Autowired 提示红色的解决方式

  10. C语言创建链表

    一.链表中结点的存储 链表的结点左边一部分是存放的数据,右边一部分是后继指针指向下一个结点的地址.C语言中通常定义一个结构体类型来存储一个结点,如下: struct node { int data; ...