5.4.2测试结果分析LoadRunner性能测试结果分析是个复杂的过程,通常可以从结果摘要、并发数、平均事务响应时间、每秒点击数、业务成功率、系统资源、网页细分图、Web服务器资源、数据库服务器资源等几个方面分析,如图5-1所示。性能测试结果分析的一个重要的原则是以性能测试的需求指标为导向。我们回顾一下本次性能测试的目的,正如错误!未找到引用源。所列的指标,本次测试的要求是验证在30分钟内完成2000次用户登录系统,然后进行考勤业务,最后退出,在业务操作过程中页面的响应时间不超过3秒,并且服务器的CPU使用率、内存使用率分别不超过75%、70%,那么按照所示的流程,我们开始分析,看看本次测试是否达到了预期的性能指标,其中又有哪些性能隐患,该如何解决。图5-1性能测试结果分析流程图结果摘要LoadRunner进行场景测试结果收集后,首先显示的该结果的一个摘要信息,如图5-2所示。概要中列出了场景执行情况、“StatisticsSummary(统计信息摘要)”、“TransactionSummary(事务摘要)”以及“HTTPResponsesSummary(HTTP响应摘要)”等。以简要的信息列出本次测试结果。图5-2性能测试结果摘要图场景执行情况该部分给出了本次测试场景的名称、结果存放路径及场景的持续时间,如图5-3所示。从该图我们知道,本次测试从15:58:40开始,到16:29:42结束,共历时31分2秒。与我们场景执行计划中设计的时间基本吻合。图5-3场景执行情况描述图StatisticsSummary(统计信息摘要)该部分给出了场景执行结束后并发数、总吞吐量、平均每秒吞吐量、总请求数、平均每秒请求数的统计值,如图5-4所示。从该图我们得知,本次测试运行的最大并发数为7,总吞吐量为842,037,409字节,平均每秒的吞吐量为451,979字节,总的请求数为211,974,平均每秒的请求为113.781,对于吞吐量,单位时间内吞吐量越大,说明服务器的处理能越好,而请求数仅表示客户端向服务器发出的请求数,与吞吐量一般是成正比关系。图5-4统计信息摘要图TransactionSummary(事务摘要)该部分给出了场景执行结束后相关Action的平均响应时间、通过率等情况,如图5-5所示。从该图我们得到每个Action的平均响应时间与业务成功率。注意:因为在场景的“Run-timeSettings”的“Miscellaneous”选项中将每一个Action当成了一个事务执行,故这里的事务其实就是脚本中的Action。图5-5事务摘要图HTTPResponsesSummary(HTTP响应摘要)该部分显示在场景执行过程中,每次HTTP请求发出去的状态,是成功还是失败,都在这里体现,如图5-6所示。从图中可以看到,在本次测试过程中LoadRunner共模拟发出了211974次请求(与“统计信息摘要”中的“TotalHits”一致),其中“HTTP200”的是209811次,而“HTTP404”则有2163,说明在本次过程中,经过发出的请求大部分都能正确响应了,但还是有部分失败了,但未影响测试结果,“HTTP200”表示请求被正确响应,而“HTTP404”表示文件或者目录未能找到。有朋友可能会问,这里出现了404的错误,为什么结果还都通过了。出现这样问题的原因是脚本有些页面的请求内容并非关键点,比如可能请求先前的cookie信息,如果没有就重新获取,所以不会影响最终的测试结果。图5-6HTTP响应摘要常用的HTTP状态代码如下:400无法解析此请求。401.1未经授权:访问由于凭据无效被拒绝。401.2未经授权:访问由于服务器配置倾向使用替代身份验证方法而被拒绝。401.3未经授权:访问由于ACL对所请求资源的设置被拒绝。401.4未经授权:Web服务器上安装的筛选器授权失败。401.5未经授权:ISAPI/CGI应用程序授权失败。401.7未经授权:由于Web服务器上的URL授权策略而拒绝访问。403禁止访问:访问被拒绝。403.1禁止访问:执行访问被拒绝。403.2禁止访问:读取访问被拒绝。403.3禁止访问:写入访问被拒绝。403.4禁止访问:需要使用SSL查看该资源。403.5禁止访问:需要使用SSL128查看该资源。403.6禁止访问:客户端的IP地址被拒绝。403.7禁止访问:需要SSL客户端证书。403.8禁止访问:客户端的DNS名称被拒绝。403.9禁止访问:太多客户端试图连接到Web服务器。403.10禁止访问:Web服务器配置为拒绝执行访问。403.11禁止访问:密码已更改。403.12禁止访问:服务器证书映射器拒绝了客户端证书访问。403.13禁止访问:客户端证书已在Web服务器上吊销。403.14禁止访问:在Web服务器上已拒绝目录列表。403.15禁止访问:Web服务器已超过客户端访问许可证限制。403.16禁止访问:客户端证书格式错误或未被Web服务器信任。403.17禁止访问:客户端证书已经到期或者尚未生效。403.18禁止访问:无法在当前应用程序池中执行请求的URL。403.19禁止访问:无法在该应用程序池中为客户端执行CGI。403.20禁止访问:Passport登录失败。404找不到文件或目录。404.1文件或目录未找到:网站无法在所请求的端口访问。需要注意的是404.1错误只会出现在具有多个IP地址的计算机上。如果在特定IP地址/端口组合上收到客户端请求,而且没有将IP地址配置为在该特定的端口上侦听,则IIS返回404.1HTTP错误。例如,如果一台计算机有两个IP地址,而只将其中一个IP地址配置为在端口80上侦听,则另一个IP地址从端口80收到的任何请求都将导致IIS返回404.1错误。只应在此服务级别设置该错误,因为只有当服务器上使用多个IP地址时才会将它返回给客户端。404.2文件或目录无法找到:锁定策略禁止该请求。404.3文件或目录无法找到:MIME映射策略禁止该请求。405用于访问该页的HTTP动作未被许可。406客户端浏览器不接受所请求页面的MIME类型。407Web服务器需要初始的代理验证。410文件已删除。412客户端设置的前提条件在Web服务器上评估时失败。414请求URL太大,因此在Web服务器上不接受该URL。500服务器内部错误。500.11服务器错误:Web服务器上的应用程序正在关闭。500.12服务器错误:Web服务器上的应用程序正在重新启动。500.13服务器错误:Web服务器太忙。500.14服务器错误:服务器上的无效应用程序配置。500.15服务器错误:不允许直接请求GLOBAL.ASA。500.16服务器错误:UNC授权凭据不正确。500.17服务器错误:URL授权存储无法找到。500.18服务器错误:URL授权存储无法打开。500.19服务器错误:该文件的数据在配置数据库中配置不正确。500.20服务器错误:URL授权域无法找到。500100内部服务器错误:ASP错误。501标题值指定的配置没有执行。502Web服务器作为网关或代理服务器时收到无效的响应。并发数分析“RunningVusers(运行的并发数)”显示了在场景执行过程中并发数的执行情况。它们显示Vuser的状态、完成脚本的Vuser的数量以及集合统计信息,将这些图与事务图结合使用可以确定Vuser的数量对事务响应时间产生的影响。图5-7显示了在OA系统考勤业务性能测试过程中Vusers运行情况,从图中我们可以看到,Vusers的运行趋势与我们场景执行计划中的设置是一样,表明在场景执行过程中,Vusers是按照我们预期的设置运行的,没有Vuser出现运行错误,这样从另一个侧面说明我们的参数化设置是正确的,因为使用唯一数进行参数化设置,如果设置不正确,将会导致Vuser运行错误。在脚本中我们加入了这样一段代码:if(atoi(lr_eval_string({num}))0){lr_output_message(登录成功,继续执行.);}else{lr_error_message(登录失败,退出测试);return-1;}上述代码的意思是说,如果登录失败了,就退出脚本的迭代,那么什么原因可能会导致登录失败呢?就是我们前面参数化的设置,一旦Vuser分配不到正确的登录账号,就可能导致登录失败,从而引起Vuser停止运行。所以,从图5-7的表现,可以认为参数化是没有问题的。图5-7运行的并发数图测试脚本中我们还使用了集合点,那么这里还可以看看集合点在场景执行过程中的表现,点击左边的“NewGraph”,出现图5-8,展开“Vusers”前的加号,双击“Rendezvous”,出现集合点的图形后,点击【Close】,关闭添加新图界面。图5-8添加集合点统计图集合点的图形如图5-9所示,从图中可以看到,所有用户到达集合点后,立刻就释放了。与之前设定的集合点策略设置“所有运行用户到达后释放“是一致的。假设这样的一种情况,Running的Vusers有10个,集合点策略设置是“所有运行用户到达后释放”,而集合点图形显示的最大释放Vusers是7个,那么就表示有些Vuser超时了,引起超时的原因可能是Vuser得到的响应超时了,可以结合平均事务响应时间再详细分析原因。图5-9集合点状态图我们本次测试RunningVusers与集合点是一致,说明整个场景执行过程中,并发数用户的执行正确,OA系统测试服务器能够应付7个并发用户的业务操作。响应时间在性能测试要求中我们知道,有一项指标是要求登录、考勤业务操作的页面响应时间不超过3秒,那么本次测试是否达到了这个要求呢?我们先来看“AverageTransactionResponseTime(平均事务响应时间图)”(图5-10),这张图是平均事务响应时间与结果摘要中的“TransactionSummary”合成的。图5-10平均事务响应时间图从图形下部我们可以看到,登录部分对应的Action是“submit_login”,考勤业务提交对应的Action是“submit_sign”,他们的“AverageTime(平均响应时间为)”分别是4.425秒与0.848秒,从这两个数值来看,考勤业务的事务响应时间0.848秒小于预期的3秒,达到了要求,而登录是4.425秒,大于预期的3秒,不符合要求。这样的结果是不正确的,因为在统计的登录业务的时候,我们没有去除思考时间,所以,登录功能的实际事务时间应该是4.425秒-3秒=1.425秒,小于预期的3秒,故登录业务的事务响应时间也达到了我们的要求。在平时的性能测试活动中,统计结果的时候需要去掉思考时间,加上思考时间是为了真实的模拟用户环境,统计结果中除去思考时间是为了更真实的反映服务器的处理能力,两者并不矛盾。看完了“AverageTime”,我们再看“90PercentTime”,这个时间从某种程度来说,更准确衡量了测试过程中各个事务的真实情况,表示90%的事务,服务器的响应都维持在某个值附近,“AverageTime”值对于平均事务响应时间变动趋势很大的情况统计就不准确了,比如有三个时间:1秒、5秒、12秒,则平均时间为6秒,而另外一种情况:5秒、6秒、7秒,平均时间也为6秒,显然第二种比第一种要稳定多了。所以,我们在查看平均事务响应时间的时候,先看整体曲线走势,如果整体趋势比较平滑,没有忽上忽下的波动情况,取“AverageTime”与“90PercentTime”都可以,如果整体趋势毫无规律,波动非常大,我们就不用“AverageTime”而使用“90PercentTime”可能更真实些。从图5-10可以看出,所有Action平均事务响应时间的趋势都非常平滑,所以使用“AverageTime”与“90PercentTime”差别不是很大,用哪个都可以。这里是使用最常用的统计方法“90PercentTime”。登录业务的“90PercentTime”是5.298秒-3秒(思考时间)=2.298秒,考勤业务的