软件性能测试基本概念.doc

上传人:pu****.1 文档编号:549577030 上传时间:2022-10-01 格式:DOC 页数:22 大小:944.50KB
返回 下载 相关 举报
软件性能测试基本概念.doc_第1页
第1页 / 共22页
软件性能测试基本概念.doc_第2页
第2页 / 共22页
软件性能测试基本概念.doc_第3页
第3页 / 共22页
软件性能测试基本概念.doc_第4页
第4页 / 共22页
软件性能测试基本概念.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《软件性能测试基本概念.doc》由会员分享,可在线阅读,更多相关《软件性能测试基本概念.doc(22页珍藏版)》请在金锄头文库上搜索。

1、19第1章 软件性能测试基本概念第1章 软件性能测试基本概念1.1 什么是软件性能当我们提到软件性能测试的时候,有一点是很明确的:测试关注的重点是“性能”。那么,本书要解决的第一个问题就是:究竟什么是“软件性能”?一般来说,性能是一种指标,表明软件系统或构件对于其及时性要求的符合程度;其次,性能是软件产品的一种特性,可以用时间来进行度量。性能的及时性用响应时间或者吞吐量来衡量。响应时间是对请求作出响应所需要的时间。对于单个事务,响应时间就是完成事务所需的时间;对于用户任务,响应时间体现为端到端的时间。比如,“用户单击OK按钮后2秒内收到结果”就是一个对用户任务响应时间的描述,具体到这个用户任务

2、中,可能有多个具体的事务需要完成,每个事务都有其单独的响应时间。对交互式的应用(例如典型的Web应用)来说,我们一般以用户感受到的响应时间来描述系统的性能,而对非交互式应用(嵌入式系统或是银行等的业务处理系统)而言,响应时间是指系统对事件产生响应所需要的时间。通常,对软件性能的关注是多个层面的:用户关注软件性能,管理员关注软件性能,产品的开发人员也关注软件性能,那么这些不同的关注者所关注的“性能”的具体内容是不是都完全相同呢?如果不同,这些不同又在哪里?最后,作为软件性能测试工程师,不同层面的软件性能都需要关注,在关注全部这些层面的性能体现的时候,又应该注意哪些内容呢?下面我们从3个不同层面来

3、对软件性能进行阐述。1.1.1 用户视角的软件性能从用户的角度来说,软件性能就是软件对用户操作的响应时间。说得更明确一点,对用户来说,当用户单击一个按钮、发出一条指令或是在Web页面上单击一个链接,从用户单击开始到应用系统把本次操作的结果以用户能察觉的方式展示出来,这个过程所消耗的时间就是用户对软件性能的直观印象。图1.1以一个Web系统为例,说明了用户的这种印象。图1.1 Web系统的响应必须要说明的是,用户所体会到的“响应时间”既有客观的成分,也有主观的成分。例如,用户执行了某个操作,该操作返回大量数据,从客观的角度来说,事务的结束应该是系统返回所有的数据,响应时间应该是从用户操作开始到所

4、有数据返回完成的整个耗时;但从用户的主观感知来说,如果采用一种优化的数据呈现策略,当少部分数据返回之后就立刻将数据呈现在用户面前,则用户感受到的响应时间就会远远小于实际的事务响应时间(顺便说一下,这种技巧是在C/S结构的管理系统中开发人员常用的一种技巧)。关于响应时间的进一步讨论请见1.2.1节对“响应时间”的解释。1.1.2 管理员视角的软件性能从管理员的角度来看,软件系统的性能首先表现在系统的响应时间上,这一点和用户视角是一样的。但管理员是一种特殊的用户,和一般用户相比,除了会关注一般用户的体验之外,他还会关心和系统状态相关的信息。例如,管理员已经知道,在并发用户数为100时,A业务的响应

5、时间为8秒,那么此时的系统状态如何呢?服务器的CPU使用是不是已经达到了最大值?是否还有可用的内存?应用服务器的状态如何?我们设置的JVM可用内存是否足够?数据库的状况如何?是否还需要进行一些调整?这些问题普通的用户并不关心,因为这不在他们的体验范围之内;但对管理员来说,要保证系统的稳定运行和持续的良好性能,就必须关心这些问题。另一方面,管理员还会想要知道系统具有多大的可扩展性,处理并发的能力如何;而且,管理员还会希望知道系统可能的最大容量是什么,系统可能的性能瓶颈在哪里,通过更换哪些设备或是进行哪些扩展能够提高系统性能,了解这些情况,管理员才能根据系统的用户状况制定管理措施,在系统出现计划之

6、外的用户增长等紧急情况的时候能够立即制定相应措施,进行迅速的处理;此外,管理员可能还会关心系统在长时间的运行中是否足够稳定,是否能够不间断地提供业务服务等。因此,从管理员的视角来看,软件性能绝对不仅仅是应用的响应时间这么一个简单的问题。表1-1给出了管理员关注的部分性能相关问题的列表。表1-1 管理员关注的部分性能相关问题管理员关心的问题软件性能描述服务器的资源使用状况合理吗资源利用率应用服务器和数据库的资源使用状况合理吗资源利用率系统是否能够实现扩展系统可扩展性系统最多能支持多少用户的访问?系统最大的业务处理量是多少系统容量系统性能可能的瓶颈在哪里系统可扩展性更换哪些设备能够提高系统性能系统

7、可扩展性系统能否支持724小时的业务访问系统稳定性1.1.3 开发视角的软件性能从开发人员的角度来说,对软件性能的关注就更加深入了。开发人员会关心主要的用户感受响应时间,因为这毕竟是用户的直接体验;另外,开发人员也会关心系统的扩展性等管理员关心的内容,因为这些也是产品需要面向的用户(特殊的用户)。但对开发人员来说,其最想知道的是“如何通过调整设计和代码实现,或是如何通过调整系统设置等方法提高软件的性能表现”,和“如何发现并解决软件设计和开发过程中产生的由于多用户访问引起的缺陷”,因此,其最关注的是使性能表现不佳的因素和由于大量用户访问引发的软件故障,也就是我们通常所说的“性能瓶颈”和系统中存在

8、的在大量用户访问时表现出来的缺陷。举例来说,对于一个没有达到预期性能规划的应用,开发人员最想知道的是,这个糟糕的性能表现究竟是由于系统架构选择的不合理还是由于代码实现的问题引起?由于数据库设计的问题引起?抑或是由于系统的运行环境 引发?或者,对于一个即将发布到现场给用户使用的应用,开发人员可能会想要知道当大量用户访问这个系统时,系统会不会出现某些故障,例如,是否存在由于资源竞争引起的挂起?是否存在由于内存处理等问题引起的系统故障?因此,对开发人员来说,单纯获知系统性能“好”或者“不好”的评价并没有太大的意义,他们更想知道的是“哪些地方是引起不好的性能表现的根源”或是“哪里可能存在故障发生的可能

9、”。表1-2给出了开发视角的软件性能关注内容。表1-2 开发人员关注的性能问题开发人员关心的问题问题所属层次架构设计是否合理系统架构数据库设计是否存在问题数据库设计代码是否存在性能方面的问题代码系统中是否有不合理的内存使用方式代码系统中是否存在不合理的线程同步方式设计与代码系统中是否存在不合理的资源竞争设计与代码1.1.4 总结以上我们描述了3个不同层面上的软件性能关注点,由此可见,不同的对象对软件系统性能的关注是有着显著的差异的。从项目管理的角度,以我们的系统干系人来分析,大部分用户对性能的理解属于“用户视角”,项目的维护人员或是用户方的项目经理一般会从“管理员视角”来看待软件性能的问题,而

10、项目的创建者开发人员(包括设计人员)自然就是从“开发视角”来关注软件性能了。因此,对软件性能测试来说,在不同的层面上要求我们关注不同的内容:从直接体验的用户的角度来说,表现为软件系统对用户操作的响应时间;在系统或是管理员的关注层面,我们还需要从软件的性能表现分析系统的可扩展性、并发能力等指标;最后,从最贴近软件的创建者开发人员的角度来说,还需要为软件性能问题进行定位,了解性能的制约因素和引起性能问题的关键 原因。本书的第2章将描述软件性能测试的应用领域和主要测试方法,通过这些方法和应用领域的描述,可以了解怎样将不同层面的性能关注点体现在软件性能测试的过程中。1.2 软件性能的几个主要术语接触过

11、软件性能测试的人,会经常听到这样一些词汇:响应时间、并发用户数、吞吐量、性能计数器,在使用性能测试工具进行测试时,还会接触到“思考时间(Think Time)”的概念,那么,这些术语的确切含义究竟是什么呢?本节重点介绍以上的各个术语。1.2.1 响应时间在1.1节和1.1.1节中都提到了“响应时间”的概念,响应时间是“对请求作出响应所需要的时间”,而且,我们把响应时间作为用户视角的软件性能的主要体现。图1.1将用户所感受到的软件性能(响应时间)划分为“呈现时间”和“系统响应时间”两个部分,其中“呈现时间”取决于数据在被客户端收到响应数据后呈现页面所消耗的时间,例如,对一个Web应用,呈现时间就

12、是浏览器接收到数据后用户把数据呈现出来的时间;而“系统响应时间”指应用系统从请求发出开始到客户端接收到数据所消耗的时间。在一般的性能测试中,我们并不关注“呈现时间”,这是因为呈现时间在很大程度上取决于客户端的表现,例如,一台内存不足的客户端机器在处理复杂页面的时候,其呈现时间可能就很长,而这并不能说明整个系统的性能。在后续的软件性能测试的讨论中,我们不会区分“系统响应时间”和“响应时间”,直接把这里的“系统响应时间”等同于“响应时间”。?读者点拨:有些细心的读者可能已经注意到了,在这里把“系统响应时间”定义为“应用系统从发出请求开始到客户端接收到响应所消耗的时间”,而许多描述性能测试的书或者工

13、具却把“响应时间”定义为“应用系统从请求发出开始到客户端接收到最后一个字节数据所消耗的时间”。造成这种差异的原因是我们认为,对用户体验来说,可以采用一些技巧在数据尚未完全接收完成时进行呈现来减少用户感受到的响应时间。当然,在后续的对性能测试的描述中,尤其是针对Web应用的测试(因为浏览器行为是既定的),我们仍然采用后一种定义方式来描述响应时间。响应时间可以被进一步分解。图1.2描述了一个Web应用的页面响应时间的构成。从图中可以看到,页面的响应时间可被分解为“网络传输时间”(N1+N2+N3+N4)和“应用延迟时间”(A1+A2+A3),而“应用延迟时间”又可以分解为“数据库延迟时间”(A2)

14、和“应用服务器延迟时间”(A1+A3)。之所以要对响应时间进行这些分解,主要目的是为了能更好定位性能瓶颈的所在。在后续的实例讨论中,读者将会看到如何应用这些响应时间的分解进行性能问题的定位。图1.2 Web应用的页面响应时间分解关于响应时间,要特别说明的一点是,对客户来说,该值是否能够被接受是带有一定的用户主观色彩,也就是说,响应时间的“长”和“短”没有绝对的区别。例如,对一个电子商务网站来说,在美国和欧洲,一个普遍被接受的响应时间标准为2/5/10秒,也就是说,在2秒之内给客户响应被用户认为是“非常有吸引力的”,在5秒之内响应客户被认为是“比较不错的”,而10秒是客户能接受的响应的上限。但考

15、虑一个税务报账系统,该系统的用户每月使用一次该系统,一次花费2小时以上进行数据的录入,当用户单击“提交”按钮后,即使系统在20分钟后才给出“处理成功”的消息,用户仍然不会认为该系统的响应时间不能接受毕竟,相对于一个月才进行一次的操作来说,20分钟确实是一个可以接受的等待时间。因此,在进行性能测试时,“合理的响应时间”取决于实际的用户需求,而不能依据测试人员自己的设想来决定。1.2.2 并发用户数在阐述这个术语之前,先来看看为什么在性能测试中需要关注这个“并发用户数”。首先,如果性能测试的目标是验证当前系统能否支持现有用户的访问,最好的办法就是弄清楚会有多少用户会在同一个时间段内访问被测试的系统

16、,如果使用性能测试工具模拟出与系统的访问用户数相同的用户,并模拟用户的行为,那得到的测试结果就能够真实反映实际用户访问时的系统性能表现,这样一来,也就能够通过性能测试了解到当系统处于实际用户访问时,会具有怎样的性能表现。这里提到的在同一个时间段内访问系统的用户数量,也就是我们说的并发用户数的一个概念,这种并发的概念通常在性能测试(Performance Testing)方法中使用,用于从业务的角度模拟真实的用户访问,体现的是业务并发用户数。如果抛开业务的层面,仅从服务器端承受的压力来考虑,那么,对C/S或是B/S结构的应用来说,系统的性能表现毫无疑问地主要由“服务端”决定。在什么时候“服务端”会承受最大的压力,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号