LoadRunner——LR的六大组件小结(十二)
{LR的六大组件小结}
一、第一大组件VuGen: 虚拟用户脚本生成器
1)根据相关协议、业务流程录制脚本-模拟自动化功能
如果有UI,通过浏览器或App界面进行录制生成脚本;
如果有UI,无法正常录制生成脚本,或没有UI,只有后台接口,
需要自己根据代码规范和协议写脚本,
或者借助抓包工具获取请求和响应包生成脚本。
相关协议:选择合适的协议
B/S架构,常用Web[HTTP/HTML]协议
App也可以选择:Mobie App(HTTP/HTML)协议 (WinPcap_4_1_3.exe)
2)业务需求:流程->用例中体现
3)常用设置
<1> IE浏览器: Internet选项
常规 设置 每次访问此页时检查
程序 重置Web设置
高级 去除 启用第三方浏览器扩展
<2> 当前建议关闭本地连接,提高工具效率
实际项目中不能关闭,客户端需要通过网络访问服务器
<3> 关闭一些冲突的服务:java oracle 杀毒进程...
<4> 使用脚本视图,设置界面字体、回放后自动弹出测试结果
<5> 录制选项:
录制方式-默认采用基于HTML方式
必要时采用基于URL方式,比如采用https协议 设置自动页面标题检查点,辅助检查
设置录制使用的字符集:UTF-8 和当前项目一致
使用默认方式录制后脚本中文出现乱码问题
<6> 采用架构:B/S或C/S
<7> 采用协议:Web[HTTP/HTML]
<8> 指定浏览器产品:IE
<9> URL地址:http://localhost/web/guest/home
<10> 录制位置:vuser_init Action vuser_end
<2> 设置Run-time Settings,模拟1VU回放
模拟运行轨迹、频率,发现脚本本身的问题
<3> 增强脚本:为性能测试提供帮助
事务:平均事务响应时间、TPS、并发的起点
lr_start_transaction("事务名");
请求、步骤的代码...
lr_end_transaction("事务名", LR_AUTO);
检查点:自动为响应内容进行检查 文本为主
性能测试要建立在功能实现的基础上,如果测试过程中
功能出现业务问题,一定会影响性能测试结果。
web_reg_find("Text=页面源代码文本", LAST);
reg函数 注册性函数 相应请求之前
技巧:Tree视图生成
集合点:
适合场景:并发测试,关注大用户量并发:所有人同时发请求
形成相对严格的并发。
函数:lr_rendezvous("集合点名称");
位置:在事务之前
集合策略:
参数化:业务数据多变、更真实 类型+数据+策略
SE UEA RE等组合
关联:让脚本适应服务器端动态数据的变化,关联函数
流程控制:分支、循环
函数调用:复用已有的功能
二、第二大组件Controller: 压力调度控制台
设置场景Scenario: 表示测试计划
<1> 场景类型:手工,取消使用百分比模式分配用户,比较灵活。(推荐)
目标,按照既定目标去创建场景
添加脚本到场景中(browser)。
<2> 脚本组:组名、脚本路径、VU数量、Load Generator的选择(联机测试);
<3> VU的行为:初始化、加载方式、持续时间、退出方式
<4> Run-time Settings: 迭代次数、Pacing迭代间隔、Think time步骤间隔、Log日志、其他(错误处理-错误时是否继续、线程方式模拟VU)、浏览器模拟(是否启用缓存-降低压力可以启用,促进数据测试成功率)、网络带宽、超时时间 600s
<5> 日志管理:指定输出位置、设置输出详细级别
<6> Monitor系统资源监控:CPU、Memory、Disk、Network、System等重要资源情况
<7>Load generator负载生成器(加压机):生成更多用户来测试,配置、连接、添加
<8>Agent 代理程序,需要启动,相当于通讯兵。
<9>ip欺骗,设置静态ip,ip设置:A\B\C类,启用ip欺骗以及验证
{常见的性能测试策略小结}
1)基准测试:单用户、单测试点、循环执行n次
2)并发测试:多用户、单测试点、瞬时压力,属于压力测试一个子集
3)压力测试:在超出范围后,考验系统最大承受点。使劲折腾
4)负载测试:在范围之内,检验系统能否承受指定的指标。见好就收
5)综合场景测试:多用户、多测试点、在线持续一段时间
(混合交易测试),较为真实模拟用户实际环境
6)递增测试:进行逐步加压,用户的加载方式
7)疲劳强度测试:压力更大、时间更长的综合场景测试
8)数据容量测试:模拟海量数据重新考量之前的性能
三、第三大组件分析器Analysis
【功能】收集场景运行后的各项测试结果,生成数据图表供分析,通过分析来定位性能瓶颈,最后形成性能测试报告。
说明:后续任务是性能调优,一般由测试经理、架构师参与。
【设置】
1、运行场景的测试结果收集方式设置:
在controller中,results->auto collate results默认是被选中的
(场景运行后,自动整理合并结果)
2、运行场景的测试结果存放路径设置:
在controller中,results->results setting
a.每执行一次场景都生成一份结果文件,结果文件的命名方式为res后 接一个序号(如res0),每执行一次序号依次加1;
b.每执行一次场景,将执行后的结果覆盖以前的结果。(为了防止意外 发生,一般会选择第一种结果保存方式)。
3、分析器收集测试结果设置:
在Analysis中,Tools->options->Result Collection
data source:数据来源
A. 表示仅生成摘要数据
B. 表示仅生成经过处理的完整数据
C. 表示在生成处理过的完整数据时,显示摘要数据。
data aggregation:数据聚合
a.表示使用内置数据聚合公式聚合数据,以优化性能
b.表示使用内置数据聚合公式仅仅聚合与web相关的数据
c.表示用户自定义来设置聚合数据,如右图所示:
aggregate data (available only for complete data):用于设置聚合数据的类型,这里只适用于完整数据,可以选择需要聚合数据的图的类型,这样可以减小数据库的容量。
A. 选择聚合的数据类型
B. 选择聚合的图属性。
web data aggregation only:表示仅聚合web的数据,在这里可以设置聚合的粒度。
4、测量分析图设置
选中分析图,View->configure measurements
1、给测量更换颜色
2、选择显示比例(可以调整大小)
a.手动设置一个比例值; b.使用优化的自动比例来显示图中每个度量;
c.将图中所有度量比例都设置为1; d.查看所有度量的趋势。
默认值为1,即按原始比例进行显示,有时波形显示的幅值太小,就需要适当地调整放大比例。
5、 设置筛选条件
在录制测试脚本过程中,如果执行脚本时没有忽略think time时间,那么analysis分析器在统计分析结果时会把think time包含进去,这样当think time存在于用户事务的开始与结束之间时,相关事务统计情况会受到影响。因此,很多时候需要过滤用户的思考时间,在下拉框中删除include think time选项即可,分析结果中就会自动滤掉思考时间。
6、 摘要报告 设置
一、 分析器 摘要
二、统计 摘要
三、事务 摘要
第一行统计场景运行时所有事务通过、失败、停止的数量。而表格里则是显示了所有事务执行时的详细信息:
1)transaction name(事务名);2)minimum(事务运行的最短时间);3)average(事务运行的平均时间);4)maximum(事务运行的最长时间);
5)std.deviation(标准方差):方差描述一组数据偏离其平均值的情况,方差值越大,说明这组数据就越离散,波动性也就越强;反之,则说明这组数据就越聚合,波动性也就越小;
6)90 percent:在controller运行场景时,并不会显示这个值,因为它是对整个一系列数据统计的结果。表示一个事务在执行过程中的90%所花费的时间,比如,一个事务执行了100次,对这100次事务响应时间进行升序排序,第90%即90次事务运行时间;
7)pass(通过的事务个数);8)fail(失败的事务个数);9)stop(停止的事务个数):在执行场景时,若用户手工停止场景的执行,事务没有自己的状态,那么就是停止状态。
注:事务的通过率一定要大于97%,也即失败率应该小于3%,因为如果事务失败率过高,就说明客户在使用系统时很容易出现错误,这样无论事务响应时间多么短也是不符合要求的,因为客户最基本的需求都没有被满足,功能都不能正确的处理,那么更无法谈性能了。
四、 HTTP响应 摘要
五. HTTP请求响应机制与HTTP响应状态码 :
请求响应机制:
1、客户端连接到Web服务器
一个HTTP客户端,通常是浏览器,与Web服务的HTTP端口(默认为80)建立一个TCP套接字连接。例如,http://www.tmooc.cn
2、发送HTTP请求
通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。
3、服务器接受请求并返回HTTP响应
Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。
4、释放连接TCP连接
若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;
5、客户端浏览器解析HTML内容
客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。
例如:在浏览器地址栏键入URL,按下回车之后会经历以下流程:
1、浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;
2、解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接;
3、浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器;
4、服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器;
5、释放 TCP连接;
6、浏览器将该 html 文本的内容显示出来;
响应 状态码有三位数字组成,第一个数字定义了响应的类别,共分五种类别:
-
1xx:指示信息--表示请求已接收,继续处理
-
2xx:成功--表示请求已被成功接收、理解、接受
-
3xx:重定向--要完成请求必须进行更进一步的操作
-
4xx:客户端错误--请求有语法错误或请求无法实现
-
5xx:服务器端错误--服务器未能实现合法的请求
常见状态码:
-
200 OK //客户端请求成功
-
400 Bad Request //客户端请求有语法错误,不能被服务器所理解
-
401 Unauthorized //请求未经授权
-
403 Forbidden //服务器收到请求,但是拒绝提供服务
-
404 Not Found //请求资源不存在,eg:输入了错误的URL
-
500 Internal Server Error //服务器发生不可预期的错误
-
503 Server Unavailable
//服务器当前不能处理客户端的请求,一段时间后可能恢复正常