{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

image.png

a.每执行一次场景都生成一份结果文件,结果文件的命名方式为res后 接一个序号(如res0),每执行一次序号依次加1;

b.每执行一次场景,将执行后的结果覆盖以前的结果。(为了防止意外 发生,一般会选择第一种结果保存方式)。

3、分析器收集测试结果设置:

在Analysis中,Tools->options->Result Collection

image.png

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
image.png

1、给测量更换颜色

2、选择显示比例(可以调整大小)

a.手动设置一个比例值;          b.使用优化的自动比例来显示图中每个度量;

c.将图中所有度量比例都设置为1; d.查看所有度量的趋势。

默认值为1,即按原始比例进行显示,有时波形显示的幅值太小,就需要适当地调整放大比例。

5、 设置筛选条件

在录制测试脚本过程中,如果执行脚本时没有忽略think time时间,那么analysis分析器在统计分析结果时会把think time包含进去,这样当think time存在于用户事务的开始与结束之间时,相关事务统计情况会受到影响。因此,很多时候需要过滤用户的思考时间,在下拉框中删除include think time选项即可,分析结果中就会自动滤掉思考时间。

image.png

6、 摘要报告 设置

image.png

一、 分析器 摘要

image.png

二、统计 摘要

image.png

三、事务 摘要

image.png

第一行统计场景运行时所有事务通过、失败、停止的数量。而表格里则是显示了所有事务执行时的详细信息:

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响应 摘要

image.png

五. 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

//服务器当前不能处理客户端的请求,一段时间后可能恢复正常