第五章 Analysis分析器

  在Controller组件执行场景的过程中,LoadRunner会将数据收集起来并保存到数据库中,当场景执行完成后,可以进入Analysis组件对这些数据进行分析。
  分析器中保存着大量用来分析性能测试结果的数据视图,但并不一定要对每个视图进行分析,可以根据实际情况选择相应的数据视图进行分析,分析结果可以生成一些不同格式的测试报告。
  本章主要讲述以下几部分内容:
  ● Analysis简介
  ● 摘要报告
  ● Analysis常见图分析
  ● Analysis报告

5.1 Analysis简介

5.1.1 Analysis基础知识

  要分析系统瓶颈,就必须借助LoadRunner分析器中的数据来帮助分析。在场景执行过程中,LoadRunner会收集执行过程中的数据,并将数据保存到结果文件中,其扩展名为.lrr。在Analysis分析器中,打开保存的结果文件,Analysis会对收集到的信息进行处理,并生成图和报告。
  Analysis会话至少包含一组方案结果(lrr文件)。Analysis会将活动图的显示信息和布局设置存储在扩展名为.lrr的文件中。
  关于数据分析,不仅局限于只在Analysis分析器中对数据进行分析,还可以采用多种方式进行分析:
  ●  Vuser日志文件。Vuser日志文件包括每个Vuser运行方案的完整跟踪。这些文件位于方案结果目录中。
  ● Controller输出窗口。在Controller输出窗口会显示出整个方案运行过程中的错误或警告信息,当然其中最关注的信息还是输出的错误信息,通过查看这些错误信息有助于性能调试工作。
  ● Analysis图。通过使用一些分析技术对数据图表进行合并、关联等操作,更好地帮助分析事务、Vuser等其他一些信息。
  ● “图数据”视图和“原始数据”视图。以电子表格形式显示用于生成图的实际数据。当然也可以将这些数据复制到外部电子表格应用程序中进行处理。
  ● 报告形式。LoadRunner自动带了多种格式的报告供分析。
  那么Analysis中的数据是怎么得到的呢?其实在场景运行的时候,默认情况下,所有的Vuser信息都保存在该Vuser的负载机上。只有当场景运行结束后,这些数据才会自动进行整理或合并,这时负载机上所有Vuser信息和数据都将被传输到结果目录中。默认情况下,当场景运行结束后,这些数据会被自动整理或合并。(Results—Auto Collate Results 是被选中的),也可以不选中这一项,不选中这一项,并不代表不会对这些数据进行整理或合并,在Analysis分析器对这些数据进行分析之前,Analysis会对这些数据进行整理;或者可以在Controller控制器中选择Results—Collate Results命令进行手动整理。
  同时关于场景运行过程中结果如何保存也需要设置,在Controller控制器中选择Results—Results Settings命令,弹出如图所示的对话框。
  第五章 Analysis分析器
  Results Name:设置结果保存的名称。
  Directory:是指结果保存的路径,一般情况下结果路径不应该包括中文字符,这样可能导致弹出来的错误信息对话框中的信息无法正确的查询。
  而保存结果的情况又分为以下两种情况:
  Automatically create a results directory for each scenario execution:每执行一次场景都生成一份结果文件,结果文件的命名方式为res后接一个序号(如res0),每执行一次序号依次加1。
  Automatically overwrite existing results directory without promting for Configuration:每执行一次场景,将执行后的结果覆盖以前的结果。
  在场景策略中应该设置好结果保存的方式,为了防止丢失一些不必要的结果,一般会选择第一种保存方式。

5.1.2设置选项

常用的设置选项的设置。
1、Results Collection设置
  在LoadRunner处理这些数据时,可以查看这些数据的摘要。具体怎样查看摘要数据,要在Results Collection选项卡中进行设置。选择Tools—options命令,在弹出的对话框中选择Results Collection选项卡,如图所示:
  第五章 Analysis分析器
  Data source:
  ● Generate summary data only:表示查看摘要数据。如果选中该单选按钮,那么Analysis不会处理数据以用于筛选和分组等高级用途。注意,当选中该单选按钮时,Data Aggregation项是不可以设置的。
  ● Generate complete data only:表示仅查看经过处理的完整数据,但是不显示摘要数据。
  ● Display summary while generating complete data:表示在处理完整数据时,查看摘要 数据。
  Data Aggregation:
  ● Automatically aggregate data to optimize performance:表示使用内置数据聚合公式聚合数据,以优化性能。
  ● Automatically aggregate Web data only:表示使用内置数据聚合公式仅仅聚合与Web有关的数据。
  ● Automatically user-defined aggregation:表示用户自定义来设置聚合数据。
  单击Aggregation Configuration按钮:会弹出聚合配置的对话框,如图所示,这里有以下几个设置项:
  第五章 Analysis分析器
  Aggregation Data(available only for complete data):用于设置聚合数据的类型,这里只适用于完整数据。可以选择需要聚合数据的图的类型,这样可以减小数据库的容量。可供选择数据图的类型有Transactions、Web、Monitors、Data Points和Script Errors几种。
  Select graph properties to aggregate:指定要聚合的图属性,可选择的属性有VuserID、Group Name、Script Name和Do not aggregate failed Vusers。
  Web data aggregation only:表示仅聚合Web的数据,在这里可以设置聚合的粒度。
  2、Configure Measurements设置
  在分析图时,有时会发现分析图的Y轴幅值过小,这时就可以通过设置Configure Measurements,对Y轴进行适当的放大或缩小操作。
  选择菜单View—Configure Measurements命令,弹出Configure Measurements设置对话框,如图所示。
  第五章 Analysis分析器
  在这里Y轴的比例设置有四种选择:
  ● Set measurement scale to:手动设置一个比例值。
  ● Set automatic scale for all Measurements:使用优化的自动比例来显示图中每个度量。
  ● Set scale 1 for all Measurements:将图中所有度量比例都设置为1.
  ● View Measurements trends for all Measurements:查看所有度量的趋势。
  默认值为1,即按原始比例进行显示,有时波形显示的幅值太小,那么就需要适当地调整放大的比例,如10倍、100倍等。
  3、设置筛选条件
  在Analysis分析器中,关于筛选有两种:如果只设置单个图的筛选条件时,使用Set Filter/Graph by对话框;如果要设置方案中所有图的筛选条件时,使用Set Global Filter对话框;
  下面主要设置Set Filter/Graph by对话框:
  筛选条件:在这里要为每个筛选条件选择条件和值。
  条件:可以选择“=”或者“<>”(不以等号)。
  值:从Values栏列表中选择一个值。筛选条件的值有3种类型,包括离散、连续和基于时间。离散值是一个明确的整数值,如Transaction Name下拉列表框中会显示出所有的事务名。
  注:在这里可以使用Transaction Hierarchical Path事务父树路径来筛选子事务。选择“事务名”以筛选父级的子事务,选择“无”以筛选父事务,或者选择“未知”以筛选其父级未知(通常由会话期间的嵌套错误引起)的子事务。
  ● 连续值是一个变量维度,可以在最小值和最大值范围限制内取任何值,如
  ● 基于时间的值是基于方案开始时间的值。
  分组方式:使用这些设置来对图显示按组排序。有可用组和选定组两个列表框。
  需要注意Think Time维度的设置,在录制测试脚本过程中,如果执行脚本时没有忽略Think Time时间,那么Analysis分析器在统计分析结果时会把Think Time包含进去。这样当Think Time存在于用户事务的开始和结束之间时,相关事务统计情况会受到影响。因此,很多时候需要过滤用户的思考时间。默认情况下Think Time的值设置为Include Think Time,在下拉列表框中该选项删除即可,分析结果中就会自动过滤掉思考时间。

5.1.3 Analysis图

  Analysis分析器中提供了丰富的分析图,常见的有8类:Vusers图、错误图、事务图、Web资源图、网页细分图、系统资源图、Web服务器资源图和数据库服务器资源图。选择Graph—Add Graph命令,打开对话框,如图所示:
  第五章 Analysis分析器
  在实际分析过程中,只有常见的几种分析图会用到。
  (1)Vusers图
  使用Vusers图可以确定方案执行期间Vuser的整体行为。它显示Vuser状态和完成脚本的Vuser的数量。主要包括正在运行的Vuser图和Vuser摘要图两种。
  (2)Errors图
  在方案执行期间,并不是每个Vuser都一定会执行成功,可能有执行失败、停止或因错误而终止的情况。Errors图主要是统计方案执行时的错误信息。主要包括Error Statistics(by Description)、Errors per Second(by Description)、Errors Statistics和Error per Second四种图。
  (3)事务图
  事务图描述了整个脚本执行过程中的事务性能和状态,主要包括平均事务响应时间图、每秒事务图、每秒事务总数、事务摘要图、事务性能摘要图、事务响应时间
  (4)Web资源图
  Web资源图主要提供有关呢Web服务器性能的一些信息。使用Web资源图可以分析方案运行期间每秒点击次数、服务器的吞吐量、从服务器返回的HTTP状态代码、每秒HTTP响应数、每秒页面下载数、每秒服务器重试次数、服务器重试摘要、连接数和每秒连接数。
  (5)网页细分图
  网页细分图主要提供一些信息来评估页面内容是否影响事务响应时间。如果出现影响事务响应时间的情况,可以通过细分图进一步分析是什么原因影响网页事务响应时间,包括网页细分、页面组件细分、页面组件细分(随时间变化)、页面下载时间细分、页面下载时间细分(随时间变化)和已下载组件图几种。
  (6)系统资源图
  系统资源图要监控场景运行期间系统资源使用率的情况。可以监控Windows资源、Unix资源、SNMP资源、Antara FlameThrower资源和SiteScope资源。
  (7)Web服务器资源图
  Web服务器资源图主要用来捕捉场景运行时Web服务器的信息。主要用来分析Microsoft IIS服务器、Apach服务器、iPlanet/Netscape服务器和iPlanet(SNMP)服务器。
  (8)数据库服务器资源图
  数据库服务器资源图主要显示数据库服务器的统计信息。目前支持DB2、Oracle、SQL Server和Sybase数据库。

5.2 摘要报告

  摘要报告提供了场景执行的一般信息。该报告始终存在于树视图或者作为Analysis窗口中的选项卡。可以通过View—Export Summary to Excel菜单命令将摘要报告导出到Excel中。主要包括概要、统计、事务统计、SLA分析和HTTP响应统计五大部分。

5.2.1 概要部分

第五章 Analysis分析器
  Analysis概要总结部分包括三部分内容:
  (1)Scenario Name(场景名)。
  显示场景名的内容,如果该场景保存过,那么将会显示场景的保存路径。
  (2)Results in Session(场景结果)
  显示场景结果文件存储的路径和结果文件名。
  (3)Duration(运行时间)
  显示本场景运行的总时间,如果脚本中包含有Think Time,那么会显示Think Time的时间。

5.2.2 统计部分

  统计部分包含6个链接内容:
  (1)Maximum Running Vusers(最大运行Vuser数)
  显示的信息是场景运行时设置的Vuser用户数,但是发现这个数值往往比设置的Vuser数要小,这是因为LoadRunner有加载时间和延迟时间。
  (2)Total Throughput(bytes)(总吞吐量)
  表示场景在运行时产生的全部网络流量,单位为字节
  (3)Average Throughput(bytes/second)(平均吞吐量)
  表示平均每秒的吞吐量,即吞吐率
  (4)Total Hits(总点击数)
  表示在场景运行期间,所有的HTTP请求总数。
  (5)Average Hits per Second(平均每秒点击数)
  表示平均每秒的点击数。
  (6)View HTTP Responses Summary(查看HTTP响应摘要)
  查看HTTP响应摘要。

5.2.3 事务统计部分

  事务统计部分第一行统计场景运行时所有事务通过、失败、停止的数量,接下来是一个表格,在该表格中显示了所有事务执行时的一些较详细的信息,表格中每列的意义如下:
  (1)Transaction Name:事务名
  (2)Minimum:事务运行的最短时间
  (3)Average:事务运行的平均时间
  (4)Maximum:事务运行的最长时间
  (5)Std. Deviation:
  标准方差,Std是单词standard的缩写,方差描述一组数据偏离其平均值的情况。方差公式如下:
第五章 Analysis分析器
  从数学角度看,方差值越大,说明这组数据就越离散,波动性也就越强;方差越小,说明这组数据就越聚合,波动性也就越小。
  (6)90 Percent
  表示一个事务在执行过程中的90%所花费的时间,比如一个事务执行了100次,对这100次事务响应时间进行肾虚排序,第90%即第90次事务运行时间。
  (7)Pass
  通过的事务个数
  (8)Fail
  失败的事务个数
  (9)Stop
  停止的事务个数。在执行场景时,若用户手工停止场景的执行,事务没有自己的状态,也就是停止状态。
  注意:事务的通过率一定要大于95%,即失败率应该小于5%,因为如果事务失败率过高,就说明客户在使用系统时很容易出现错误,这样无论事务响应时间多么短也是不符合要求的,因为客户的最基本的需求都没有被满足,功能都不能正确的处理,那么就更无法谈性能了。

5.2.4 SLA

  SLA(Service Level Agreement,服务水平协议)可在性能测试过程中,定义性能测试的目标和度量性能,在性能测试过程中LoadRunner会收集和保存性能的相关数据,在分析运行结果时,分析器会将收集的数据与SLA中定义的度量数据进行比较,并将分析的结果显示在分析器中,SLA的结果状态有以下3种:
  Pass:表示SLA获得该项测试数据,并且该数据达到目标要求。
  Fail:表示SLA获得该项测试数据,但是测试结果未达到目标要求。
  No Data:表示SLA未获得该项测试数据,所以无法确定是通过还是失败。
  SLA配置步骤如下:
  第一步:开始配置SLA。
  在Tools—单击 configure SLA Rules链接,弹出Service Level Agreement对话框,如图所示:
  第五章 Analysis分析器
  第二步:单击New按钮,定义SLA目标。
  单击New按钮后弹出Service Level Agreement-Goal Definition对话框,如图所示,该对话框详细描述了SLA的定义及其作用。
  第五章 Analysis分析器
  第三步:设置待度量的目标。
  单击下一步按钮,选择待度量的目标选项,如图所示,本例以(Transaction on Response Time)事务响应时间为例,关于事务响应时间的目标有两种方式,一种是按百分比来度量(即设置百分之多少的事务响应时间不能超过目标时间);另一种是按平均事务响应时间来度量。
  第五章 Analysis分析器
  本例分别依次介绍按百分比和平均事务响应时间来度量事务响应时间。
  第四步:选择事务
  单击“下一步”按钮会弹出选择事物的对话框,如图所示:
  第五章 Analysis分析器
  注意:在脚本中一定要插入事务,否则在该步选择事务时,对话框中不是出现事务,即无法选择待度量的事务。
  第五步:设置百分比阈值。
  如果是以百分比模式来度量事务响应时间时,单击“下一步”按钮会弹出设置百分比阈值的对话框
  第五章 Analysis分析器
  该步骤需要设置好百分比和事务响应时间阈值,如图所示,设置的百分比是90%,事务响应时间为3秒,意思为只要90%的事务响应时间不超过3s,那么SLA的报告结果即为PASS,否则结果为FAIL。
  第六步:设置负载标准
  如果选择按平均事务响应时间来度量,则会弹出如图所示的设置负载标准的对话框。
  选择负载标准,即通过什么指标来衡量事务响应时间的变化情况,本例以运行的虚拟用户数为例,需要设置在不同运行虚拟用户数下事务的响应时间。
  第五章 Analysis分析器
  第五章 Analysis分析器
  
  第七步:设置阈值
  选择好负载标准后,需要设置在不同的负载标准情况下,事务响应时间情况,此例中即需要设置在不同运行虚拟用户下事务的响应时间情况,本例中的设置为当虚拟用户数少于10个时,事务响应时间应该不超过1s,当虚拟用户数大于10个时,事务响应时间不超过1.5s。
  第五章 Analysis分析器
  到这一步,关于SLA的设置就已经全部完成。
  纵观SLA设置的整个过程,不难看出SLA从本质上来它是一种目标,是一种度量测试结果是否达到目标的一种手段。目标场景的运行
  第五章 Analysis分析器
  完成SLA设置后,在分析器中会显示出每个度量事务在不同时间域中的结果表现。如图所示
  第五章 Analysis分析器
  在此可以选择不同事务、不同时间域进行详细的分析,以vuser_init_transaction事务为例,选择分析的时间域为00:00:00~00:00:05进行详细的分析。单击Analysis Transaction按钮分析器会显示出vuser_init_transaction事务的详细分析信息。详细分析信息包括事务摘要信息、事务相关联信息、错误信息和快照视图。事务摘要信息如下图所示。
  第五章 Analysis分析器
  Transaction Duration:事务迭代的时间。
  Filter:分析事务时所设置的筛选条件。
  事务相关联信息如下图所示,主要包括显示分析事务时可能需要关联的相关信息:脚本运行时的一些错误信息、系统资源消耗情况、Web资源消耗情况和数据库资源消耗情况。
  第五章 Analysis分析器
  错误信息主要显示整个场景运行过程中出现的错误信息,这与场景运行过程中产生的错误输出信息类似。
  第五章 Analysis分析器
  错误信息种详细记录了错误的类型、错误代码、事务名称、脚本、错误代码行数、运行过程中哪个虚拟用户出错等一些相关的信息。
  快照视图主要是描述分析的时间域中事务响应时间的情况,如图所示。
  第五章 Analysis分析器
  快照视图中横坐标表示场景执行的时间,纵坐标表示事务响应时间,在视图中有3条曲线,其中A曲线表示为场景运行时的虚拟用户数,B曲线为场景运行时事务的响应时间,C曲线表示SLA定义的阈值,即SLA期望值,如果B曲线超过C曲线则说明该点的SLA失败,那么SLA的状态将会置为失败;反之则成功,SLA的状态将置为通过。
  

5.2.5 HTTP响应统计

  HTTP响应摘要如图所示
  第五章 Analysis分析器
  此视图只有Web Vuser才有,它反映了Web Server的处理情况。
  表格有3列,各列含义如下:
  (1)HTTP Responses。
  这里表示HTTP响应的状态码
  (2)Total
  该HTTP响应状态码总的点击数
  (3)Per second
  该HTTP响应状态码每秒的点击数。
  HTTP是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到Web浏览器。HTML是一种用于创建文档的标记语言,这些文档包含到相关信息的链接,可以单击一个链接来访问其他文档、图像或多媒体对象,并获得关于链接项的附加信息。
  HTTP协议是无状态协议,依赖瞬间或者近乎瞬间的请求处理。请求信息被立即发送,理想的情况是没有延迟的进行处理,不过延迟还是客观存在的。HTTP协议有一种内置的超时机制,一个超时就是客户端等待请求消息返回信息的最长时间。
  基于HTTP协议的客户端/服务器请求响应机制的信息交换过程如图所示:
  第五章 Analysis分析器
  (1)建立连接:客户端与服务器建立TCP连接
  (2)发送请求:打开一个连接后,客户端把请求信息发送到服务器的响应端口上,完成请求动作提交。
  (3)发送响应:服务器在处理完客户端请求后,要向客户端发送响应信息
  (4)关闭连接:客户端和服务器端都可以关闭套接字来结束TCP/IP对话
  在接收和解释请求消息后,服务器返回一个HTTP响应消息。HTTP响应也是由3个部分组成,分别是状态行、消息报头和响应正文。
  状态行格式如下:HTTP-Version Status-Code Reason-Phrase CRLF
  其中HTTP-Version表示服务器HTTP协议的版本;Status-Code表示服务器发回的响应状态代码;Reason-Phrase表示状态代码的文本描述。
  状态代码由3位数字组成,第一个数字定义了响应的类别,且有5种可能取值:
  1xx:指示信息,表示请求已接收,继续处理。
  2xx:成功,表示请求已被成功接收、理解、接受。
  3xx:重定向,要完成请求必须进行进一步的操作。
  4xx:客户端错误,请求有语法错误或请求无法实现。
  5xx:服务器端错误,服务器未能实现合法的请求。
  详细的HTTP响应状态码如下图所示。
  第五章 Analysis分析器
  第五章 Analysis分析器

5.3 Analysis常见图分析

  通常分析的视图有Vuser图、点击率视图、平均事务响应时间视图和吞吐量视图。

5.3.1 Vuser图

  在方案执行过程中,Vuser在执行事务时生成数据。使用Vuser图可以确定方案执行期间Vuser的整体行为。它显示Vuser状态和完成脚本的Vuser的数量。将这些图与事务图结合使用可以确定Vuser的数量对事务响应时间产生的影响。
  这里包含两种图:正在运行的Vuser图和Vuser摘要图。
  正在运行的Vuser图显示在测试期间的每一秒内执行Vuser脚本的Vuser数量及其状态。可以帮助确定任何给定环境中服务器上的Vuser负载。默认情况下,此图仅显示状态为Running的Vuser。当然可以更改筛选条件来查看其它状态的Vuser情况。
  X轴表示从方案开始运行以来已用的时间,Y轴表示方案中的Vuser数,
第五章 Analysis分析器

5.3.2 点击率图

  点击率图显示在方案运行过程中Vuser每秒钟向Web服务器提交的HTTP请求数。借助此图可以依据点击数来评估Vuser产生的负载量。一般会将此图与平均事务响应时间图放在一起进行查看,观察点击数对事务性能产生的影响。
  X轴表示方案从开始运行以来所用的时间,Y轴表示服务器上的点击数。随着方案的运行,每秒点击数趋于稳定,说明服务器运行比较稳定。
  注意:点击数并不能衡量服务器的真实处理能力,也不能仅仅通过点击率来衡量服务器的处理能力,因为服务器即使出现了瓶颈也不会影响到这个值的变化。

5.3.3 平均事务响应时间图

  平均事务响应时间图显示方案在运行期间执行事务所用的平均时间,其中X轴表示从方案开始运行以来已用的时间,Y轴表示执行每个事务所用的平均时间(以秒为单位)。平均事务响应时间最直接的反映了事务的性能情况,一般会将平均事务响应时间图与Vuser图对照着看,来观察Vuser运行对事务性能的影响。
  第五章 Analysis分析器
  在这里可以右击并在弹出的快捷菜单中选择show Transaction Breakdown Tree命令进一步查看子事务或者所有的事务每个页面所花费的时间。
  平均事务响应时间图直接反映系统的性能情况,这也是客户眼中的性能,在需要时必须明确地定义好业务的响应时间,当平均事务响应时间符合定义时,也仅仅说明响应时间能达到要求,但是此时并不代表系统达到客户要求,因为LoadRunner统计出来的事务响应时间不一定正确,所以当事务响应时间达到要求后,也一定要分析一些其他的数据,需要确定的是业务是否都做成功了,如果业务都做成功了,并且事务响应时间达到要求,这样才能说明事务响应时间达到客户的要求:如果平均事务响应时间达不到要求,就需要进一步分析,是哪些原因导致事务响应时间过长,这样才能进一步优化系统的性能。

5.3.4 吞吐量图

  吞吐量图显示方案运行过程中服务器上每秒的吞吐量。吞吐量的单位为字节,表示Vuser在一秒时间内从服务器获得的数据量,借助此图可以依据服务器吞吐量来评估Vuser产生的负载量。
  吞吐量直接反映了服务器的处理能力,如果服务器处理的吞吐量的值越大,说明服务器处理业务的能力越强,测试过程中一定要找到吞吐量的拐点,这样才能找到服务器处理业务时的最大吞吐量,亦即服务器处理的最大能力。

5.4 Analysis报告

  场景运行结束后,可以在Analysis分析器中生成报告。Analysis分析器提供了丰富的报告形式:HTML报告、SLA报告、自定义报告和使用报告模板定义报告。

5.4.1 HTML报告

5.4.2 SLA报告

5.4.3 自定义报告

5.4.4 使用报告模板定义报告