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

·事务:事务的引入是为了度量相关的业务请求的响应时间和吞吐量指标。
在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. 2019年上海市大学生网络安全大赛两道misc WriteUp

    2019年全国大学生网络安全邀请赛暨第五届上海市大学生网络安全大赛 做出了两道Misc== 签到 题干 解题过程 题干提示一直注册成功,如果注册失败也许会出现flag. 下载下来是包含010edito ...

  2. Golang(二)基本概念

    类型 18个基本类型:bool.string.rune.byte.int.uint.int8.uint.int8.int16.uint16.int32.uint32.int64.uint64.floa ...

  3. jQuery前端生成二维码

    引用: <script src="assets/js/jquery.qrcode.min.js" charset="UTF-8"></scri ...

  4. python面试题300多题

    第一部分 Python基础篇(80题) 为什么学习Python? 通过什么途径学习的Python? Python和Java.PHP.C.C#.C++等其他语言的对比? 简述解释型和编译型编程语言? P ...

  5. IIS 10 PHP 运行环境

    1.下载php for windows  解压到指定目录 https://windows.php.net/download/ 2.安装iis 勾选CGI 3  ,处理映射 4.添加测试站点测试是否已经 ...

  6. Windows docker k8s asp.net core

    在上一篇文章 Ubuntu 18 Kubernetes的Install and Deploy 我们在ubuntu在部署了k8s集群, 今天来看看windows下怎么搞. 主要点有: 1) window ...

  7. 300iq Contest 1 简要题解

    300iq Contest 1 简要题解 咕咕咕 codeforces A. Angle Beats description 有一张\(n\times m\)的方阵,每个位置上标有*,+,.中的一种. ...

  8. HTML 引用大全

    路径logo <link rel="icon" href="../framework7-4.4.10/kitchen-sink/core/img/ztjs.png& ...

  9. SQLServer作业调用链接服务器失败解决办法

    新建一个SQL作业,语句手动执行OK,但是作业计划执行总是报错. 消息已以用户 NT SERVICE\SQLSERVERAGENT 的身份执行. 链接服务器 "172.16.10.23&qu ...

  10. Python与Golang对比

    一:前言 刚看了一篇软文,说什么“才华是改变人生最有效的途径”,反正呢,大体就是科技进步,要想一直在车上,就得不断的学习,刚好最近也准备学习Golang,最近火的不能在火了吧,刚好也有些Python基 ...