【读书笔记】《深入性能测试-LoadRunner性能测试》【第5章 Analysis 分析器】

文/秋之川

【目录】

【上一章】

LoadRunner 在场景执行的过程中,会将数据收集起来保存到本地数据库,完成后,就通过 Analysis 组件对这些数据进行分析。我们也不是会用到所有的数据视图,一般都是根据不同的产品和实际需要选择相应的数据视图进行分析,分析结果能生成不同格式的测试报告。

5.1 Analysis 简介

5.1.1 Analysis 基础知识

在场景执行过程中,LoadRunner 会收集执行过程中的数据,存储到扩展名为 .lrr 的结果文件中,在 Analysis 中打开保存的结果文件,会对收集到的数据进行处理,生成图和报告。

默认情况下,所有 Vuser 的信息都保存在该 Vuser 的负载机上,只有当场景运行结束后,才会自动进行整理或合并,然后所有 Vuser的信息和数据都会被传输到结果目录中。

如下图,在 Controller 控制器中, Result -> Auto Collate Results 是默认被选中的。

Result -> Auto Load Analysis 如果被选中,当 Controller 运行结束后,会自动调起 Analysis 组件对结果文件进行分析。

Result Menu


Set Results Directory

在 Controller 中选择 Result -> Results Settings,会打开上图对话框,我们会通过这个来设置结果的保存参数。

Results Name:结果保存的名称
Directory:结果保存的路径
Automatically create a results directory for each scenario execution:每执行一次场景都生成一份结果文件,命名方式为 res 后加一个序号,执行一次就 +1,建议在正式运行开始后,勾选该项,但要定期将文件备份至其他机器,以免磁盘空间不够
Automatically overwrite existing results directory without prompting for confirmation:每执行一次就覆盖前一次的结果,而且不弹出覆盖提示信息,建议不要勾选该项。

5.1.2 设置选项

为什么要在分析图之前进行设置呢?因为场景运行结束后,Analysis 收集到的所有数据都是原始数据,是未经过任何条件筛选的数据,会有很多我们其实并不关注的数据干扰到数据分析。

   1. Result Collection 设置


Result Collection

    在Analysis里,Tools -> Options 打开上述对话框。

Data source:
    Generate summary data only:表示仅查看摘要数据。
    Generate complete data only:表示仅查看经过处理的完整数据,但是不显示摘要。
    Display summary while generating complete data:在处理完整数据时,查看摘要。

Data Aggregation:
    Automatically aggregate data to optimize performance:表示使用内置数据聚合公式聚合数据,以优化性能
    Automatically aggregate Web data only:表示使用内置数据聚合公式仅仅聚合与 Web 有关的数据
    Apply user-defined aggregation:表示用户自定义设置聚合数据(一般都只用默认选项)

    2. Configure Measurements 设置


Measurement Options

这里需要注意,只有当你选中一种 Graphs 时,你才能看到 View -> Configure Measurements 菜单

    3. 设置筛选条件

这个设置的作用是,在结果分析的过程中,有效的提取最关键的数据,来分析结果,筛选有两种:

Set Filter/Graph by:设置单个图的筛选条件
Set Global Filter:设置方案中所有图的筛选条件

5.1.3 Analysis 图

常见的图有8类:Vuser 图、错误图、事务图、Web 资源图、网页细分图、系统资源图、Web 服务器资源图和数据库服务器资源图,我们可以通过 Graph -> Add Graph 打开相应对话框:


Open a New Graph

这里要注意的是,右上角的 “Display only graphs containing data” 复选框默认是选中的,如果勾选去掉,会出现很多其他类型的分析图。

我们在实际应用中,常用的分析图有这么几个:

(1) Vuser 图
该图可以确定在场景执行期间 Vuser 的整体行为。它显示 Vuser 状态和完成脚本的 Vuser 数量。
(2) Error 图
主要是统计场景执行时的错误信息。主要包括 Error Statistics (by Description)、Error per Second (by Description)、Error Statistics 和 Error per Second  四种图。
(3) 事务图
描述了整个脚本执行过程中的事务性能和状态。主要包括平均事务响应时间图、每秒事务数图、每秒事务总数、事务摘要图、事务性能摘要图、事务响应时间图、事务响应时间(百分比)图和事务响应时间(分布)图。
(4) Web 资源图
主要提供有关 Web 服务器性能的一些信息,可以用于分析场景运行期间每秒点击次数、服务器的吞吐量、从服务器返回的 HTTP 状态代码、每秒 HTTP 响应数、每秒页面下载数、每秒服务器重试次数、服务器重试摘要、连接数和每秒连接数。
(5) 网页细分图
提供一些信息来评估页面内容是否影响事务响应时间,如果出现,可以分析是什么原因影响的,包括网页细分、页面组件细分、页面组件细分(随时间变化)、页面下载时间细分、页面下载时间细分(随时间变化)和已下载组件图几种。
(6) 系统资源图
用于监控场景运行期间系统资源使用率的情况,可以监控 Windows 资源、Unix 资源等。
(7) Web 服务器资源图
用于捕捉场景运行时 Web 服务器的信息,主要用来分析 Apache 服务器等。
(8) 数据库服务器资源图
用来显示数据库服务器的统计信息,目前支持 DB2、Oracle、SQL Server 和 Sybase 数据库。

5.2 摘要报告


Analysis Summary

5.2.1 概要部分
主要包括场景名、场景结果和场景运行时间

5.2.2 统计部分
主要包括最大运行的Vuser数、总吞吐量、平均吞吐量(吞吐率)、总点击数、平均每秒点击数和HTTP相应摘要、总错误数

5.2.3 事务统计部分
第一行:统计场景运行时所有事务通过、失败和停止的数量;
表格里:具体每个事务的详细信息;
(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,停止的事务个数。

这里我们要注意一点,事务的通过率一定要大于95%,因为如果事务的失败率过高,说明客户在使用系统时很容易出错,这样无论响应时间多么短也是不合格的,因为基本功能都不能正确处理,更别谈性能了。

5.2.4 SLA(Service Level Agreement,服务水平协议)
在性能测试过程中,我们可以在SLA里定义性能测试目标和度量性能,分析运行结果时,Analysis 会将收集的数据与 SLA 中定义的度量数据进行比较,并将分析的结果显示在分析器中:
    Pass:表示 SLA 获得该项测试数据,并且该数据达到目标要求
    Fail:表示 SLA 获得该项测试数据,但是结果未达标
    No Data:表示 SLA 为获取到该项测试数据

这部分目前没有实际应用过,后续会深入了解。

5.2.5 HTTP 响应统计
该视图只有 Web Vuser 才有,它反映了 Web Server 的处理情况。
(1) HTTP Responses:表示 HTTP 响应的状态码
(2) Total:该 HTTP 响应状态码总的点击数
(3) Per second:该 HTTP 响应状态码每秒的点击数

HTTP 协议是无状态协议,依赖瞬间或者近乎瞬间的请求处理,理想情况下没有延迟,客观还是存在延迟的。

HTTP 协议有一种内置的超时机制,一个超时就是客户端等待请求消息返回信息的最长时间。

HTTP 协议响应机制交换过程

(1) 建立连接:客户端与服务器建立 TCP 连接;
(2) 发送请求:打开一个连接后,客户端把请求信息发送到服务器的相应端口上,完成请求动作的提交;
(3) 发送响应:服务器在处理完客户端请求之后,向客户端发送响应消息;
(4) 关闭连接:客户端和服务器端都可以关闭套接字来结束 TCP/IP 对话;

在接收和解释请求消息后,服务器返回一个 HTTP 响应消息,也是由3个部分组成:状态行、消息报头和响应正文。


状态代码格式


响应状态码(1)


响应状态码(2)


响应状态码(3)

5.3 Analysis 常见图分析

5.3.1 Vuser 图

它主要显示 Vuser 状态和完成脚本的 Vuser 的数量,我们可以将这些图与事务图结合使用来确定 Vuser 的数量对事务响应时间的影响。

    Running Vuser 图:显示在场景执行期间的每一秒内执行 Vuser 脚本的 Vuser 数量及状态。
    Vuser Summary 图:显示运行场景成功、失败或停止的 Vuser 的情况。

5.3.2 点击率图

它主要显示在场景运行过程中 Vuser 每秒钟向 Web 服务器提交的 HTTP 请求数,我们一般会用来评估 Vuser 产生的负载量。我们可以将此图与平均事务响应时间图放在一起查看点击数对事务性能产生的影响。

但是我们并不能认为点击率就能衡量服务器的真实处理能力,因为服务器即使出现了瓶颈也不会影响到这个值的变化,因为 LoadRunner 其实也就是模拟用户提交请求,在提交时间统计发出的 HTTP 请求,进而生成点击率视图。但不排除因为客户端本身的问题或网关的问题,因为前一个接口的响应超时等原因造成请求数丢失,从而反映到点击率图上数值偏低。

5.3.3 平均事务响应时间图

它主要显示场景运行期间执行事务所用的平均时间,它直接反映了事务的性能情况。一般会结合 Vuser 图来分析 Vuser 运行对事务性能的影响。

5.3.4 吞吐量图

它主要显示场景运行过程中服务器上每秒的吞吐量。单位为字节,表示 Vuser  在一秒时间内从服务器获得的数据量。可以和平均事务响应时间图对照观察分析吞吐量对事务性能产生的影响。

吞吐量直接反映了服务器的处理能力,如果吞吐量的值越大,说明服务器处理业务的能力越强,但我们在实际测试过程中不可能一次就测试出服务器吞吐量的值,需要多次测试才能找到该值,即吞吐量的拐点。

5.4 Analysis 报告

5.4.1 HTML 报告

在创建 HTML 报告时,会同时生成一个 Report 文件夹,Excel 文件链接的数据就来自这里。

5.4.2 SLA 报告

5.4.3 自定义报告

5.4.4 使用报告模板定义报告

【下一章】

【目录】

推荐阅读更多精彩内容