谈谈软件的性能测试_第1页
谈谈软件的性能测试_第2页
谈谈软件的性能测试_第3页
谈谈软件的性能测试_第4页
谈谈软件的性能测试_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、谈谈软件的性能测试摘要:根据所学的软件测试内容和你搜集的资料谈谈软件的性能测试,包括软件的性能测 试概念、重要性、进行性能测试的前提条件、基本策略等。结合一种测试工具,谈谈 测试方法和过程。关键词:性能测试、概念、重要性、前提条件、基本策略引言:为了验证系统是否达到用户提出的性能指标,同时发现系统中存在的性能瓶颈,起 到优化系统的目的。1软件性能测试的基本概念:软件性能测试(Performance Testing)软件性能测试是在交替进行负荷和强迫测试时常用的术语。理想的“软件性能测 试”(和其他类型的测试)应在需求文档或质量保证、测试计划中定义。软件性能测试 一般包括负载测试和软件压力测试。

2、通常验证软件的性能在正常环境和系统条件下重复使用是否还能满足性能指标。或者执行同样任务时新版本不比旧版本慢。一般还检查系统记忆容量在运行程序时会 不会流失(memory leak)。比如,验证程序保存一个巨大的文件新版本不比旧版本慢。1.2软件性能测试的几个阶段:对于互联网应用软件,性能是其质量的一个非常重要的组成部分。作为解决软件 性能问题的重要手段,软件软件性能测试已经广为人们所熟悉,并受到很高的关注。一般而言,软件性能测试都是在项目的后期才开展, 被测试的对象通常是已经具备一 定稳定性的产品。而实际上,软件性能测试应贯穿于整个软件生命周期中,和功能测 试一样,软件性能测试也分为几个阶段。

3、软件生命周期与软件性能测试不论哪种软件生命周期模型,需求分析、设计、编码、测试和运行维护这几个阶 段都是其中的基本要素,只是在不同的软件生命周期模型中可能迭代、合并、拆分或 重组这几个阶段,在此不做过多的描述。与其他几个阶段相对应,测试从软件开发过 程按阶段可以划分为:单元测试、集成测试、系统测试,在其他的书上可能还能见到 诸如确认测试、验收测试等名词,但是前 3种测试确实是最基本的测试活动,而其他 的测试活动只是在某些软件开发过程中会发生。值得注意的是,通常在谈论单元测试、集成测试和系统测试时,其实仅仅谈论的 是不同阶段的功能测试;而当讨论软件性能测试时,绝大多数的情况是,一个已经开发完毕或

4、基本开发完毕的软件,测试人员用一种或几种软件性能测试工具,以尽量模 拟真实用户行为的方式对该软件进行并发操作,收集并比较不同场景的结果,然后对软件的性能进行分析,这个活动通常发生在系统测试阶段,甚至更往后的阶段,如运 行维护阶段。一直以来,软件性能测试跟单元测试、集成测试似乎都是绝缘的。可是它们真的 应该是绝缘的吗?没有任何理由可以说明软件性能测试跟单元测试、集成测试无关, 除非你认为“这太难了,我不会做”。1.3软件性能测试的规则确定预期输出是测试必不可少的一部分如果事先无法肯定预期的测试结果,往往会把看起来似是而非的东西当作正确结果。 必须提倡用事先精确对应的输入和输出结果来详细检查所有的

5、输出。对于性能测试来说, 预期输出就是用户的性能需求,一份明确的性能需求是成功性能测试的先决条件。必须彻底检查每一个测试结果事实上,在最终发现的错误,有相当一部分在前面的测试中已经暴露出来了,然而由 于人们未能细心检查先前的测试结果而遗漏了。一段程序中存在的错误概率与在这段程序 中发现的错误数呈正比。这是pareto原则应用于软件测试,也包括性能测试,即性能测试发现的错误中的80% 很可能集中在20%的程序模块中。穷举测试是不可能的在性能测试中不可能覆盖每一个功能部分,这也意味着有性能问题的模块可能被忽略 掉,这样的话,我们在设计性能测试案例时,应该采取一些策略和技巧,使用尽可能少的 性能测试

6、用例,发现尽可能多的bug。1.4常见的性能测试方法有以下几种:负载测试在这里,负载测试指的是最常见的验证一般性能需求而进行的性能测试,在上面我们 提到了用户最常见的性能需求就是“既要马儿跑,又要马儿少吃草”。因此负载测试主要 是考察软件系统在既定负载下的性能表现。我们对负载测试可以有如下理解:负载测试是站在用户的角度去观察在一定条件下软件系统的性能表现。负载测试的预期结果是用户的性能需求得到满足。此指标一般体现为响应时间、交易 容量、并发容量、资源使用率等。压力测试压力测试是为了考察系统在极端条件下的表现,极端条件可以是超负荷的交易量和并 发用户数。注意,这个极端条件并不一定是用户的性能需求

7、,可能要远远高于用户的性能 需求。可以这样理解,压力测试和负载测试不同的是,压力测试的预期结果就是系统出现 问题,而我们要考察的是系统处理问题的方式。比如说,我们期待一个系统在面临压力的 情况下能够保持稳定,处理速度可以变慢,但不能系统崩溃。因此,压力测试是能让我们 识别系统的弱点和在极限负载下程序将如何运行。并发测试验证系统的并发处理能力。一般是和服务器端建立大量的并发连接,通过客户端的响 应时间和服务器端的性能监测情况来判断系统是否达到了既定的并发能力指标。负载测试 往往就会使用并发来创造负载,之所以把并发测试单独提出来,是因为并发测试往往涉及 服务器的并发容量,以及多进程/多线程协调同步

8、可能带来的问题。这是要特别注意,必须 测试的。基准测试当软件系统中增加一个新的模块的时候,需要做基准测试,以判断新模块对整个软件 系统的性能影响。按照基准测试的方法,需要打开/关闭新模块至少各做一次测试。关闭模 块之前的系统各个性能指标记下来作为基准(Benchmark),然后与打开模块状态下的系统性 能指标作比较,以判断模块对系统性能的影响。稳定性测试“路遥知马力”,在这里我们要说的是和性能测试有关的稳定性测试,即测试系统在 一定负载下运行长时间后是否会发生问题。软件系统的有些问题是不能一下子就暴露出来 的,或者说是需要时间积累才能达到能够度量的程度。为什么会需要这样的测试呢?因为 有些软件

9、的问题只有在运行一天或一个星期甚至更长的时间才会暴露。这种问题一般是程 序占用资源却不能及时释放而引起的。比如,内存泄漏问题就是经过一段时间积累才会慢 慢变得显著,在运行初期却很难检测出来;还有客户端和服务器在负载运行一段时间后, 建立了大量的连接通路,却不能有效地复用或及时释放。可恢复测试测试系统能否快速地从错误状态中恢复到正常状态。比如,在一个配有负载均衡的系 统中,主机承受了压力无法正常工作后,备份机是否能够快速地接管负载。可恢复测试通 常结合压力测试一起来做。每种测试有其存在的空间和目的。当我们接手一个软件项目后,在有限的资源条件下, 选择去做哪一种测试,这应该根据当前软件过程阶段和项

10、目的本身特点来做选择。比如, 在集成测试的时候要做基准测试,在软件产品每个发布点要做性能测试。2重要性首先,软件性能测试属于软件测试范畴,存在于软件测试的生命周期中。在通常的软 件生产周期中,先由用户提出用户需求或经系统分析核定以后提出系统需求,开发人员再 经过需求分析提出软件需求规格说明,进行概要设计,提出概要设计说明,进行详细设计, 提出详细设计说明,最后就是对每个模块进行编码。到测试阶段,测试按照开发过程逐阶 段进行验证并分步实施,体现了从局部到整体、从低层到高层逐层验证系统的思想。对应 软件开发过程,软件测试步骤分为代码审查、单元测试、集成测试、系统测试。而性能测 试就属于软件系统级测

11、试,其最终目的是验证用户的性能需求是否达到,在这个目标下, 性能测试还常常用来做:识别系统瓶颈和产生瓶颈的原因;最优化和调整平台的配置(包括硬件和软件)来达到最高的性能;判断一个新的模块是否对整个系统的性能有影响。测试工作在软件生命周期中的重要性不言而喻,而性能测试作为测试工作的一部分, 其作用和意义更是软件质量保障工作的重要组成部分。首先,功能测试的局限性,作为功 能测试的补充。功能测试更多的是关注功能操作能否达到预期的结果,考察是否满足用户 的操作习惯,以及处理用户的一些误操作能力等,多是从单用户的角度出发来衡量软件系 统的实现;但目前的系统大多是多用户、任务的,难免就会出现多个用户挣用资

12、源的情况, 那系统能否正常处理这种资源挣用呢?这是单纯的功能测试无法考察的,需要由性能测试 来实现;其次,测试工作的左膀右臂。如果说功能测试是测试工作的左膀,那性能测试就 是测试工作的右臂。上面说了,功能测试更多的是站在功能实现与否的角度考察被测系统, 而性能测试则更多的是从用户的体验出发,比如用户执行了查询后,多长时间能得到查询 结果。这个响应时间是否可以忍受等;因此,它与功能测试相结合,使得测试工作更加全 面、可靠;第三,协助排除系统故障,让我们的系统更健康。有过开发经验的朋友都知道, 最头痛的事情就是用户打来电话,大声埋怨到:我们的系统又崩溃了。那到底什么原因导 致系统频繁的崩溃呢?那系

13、统又是在什么情况下会出现崩溃呢?等等带着这些疑问,您需 要借助性能测试定位故障根源,是网络的原因?是中间件的缺点?还是数据库的不足?找 出病因给出“良方”,使我们的系统更“健康”。3进行性能测试的前提条件在任何性能测试活动开始前,软件应用程序必须达到性能测试接受标准。如果应用程 序没有达到这些标准,则不应该进行性能测试,否则就是浪费时间和成本。进行性能测试 的前提条件包括:(1)已通过单元测试能力在性能测试前所有应用程序必须先通过全面的单元测试策略,同时所附带的可被执行 的单元测试代码应是完整和有效的。如果单元测试因为应用程序中的错误或缺少单元测试 代码,那么应用程序则不应该进行性能测试。已通

14、过低负载级别能力在单用户和10个用户的低负载级别上,应用程序应该能在正常的计算时间达到合理的 性能。如果应用程序无法在低负载级别正常运行,那么它肯定无法在更高负载级别正常运 行。这时,开始性能测试将会浪费时间。已准备好测试数据在性能测试期间执行应用程序所需的数据必须先准备好或已详细描述,以使性能测试 小组能够建立与生产环境尽可能接近的模拟数据,要确保测试数据必须是真实、一致和完 整的,任何与真实环境相差太远的测试数据都是无用的性能测试行为。4基本策略4.1常见性能测试的分类通常进行性能测试无非是为了验证系统的性能是否满足开发合同中对性能的需求,或 是为了全面考察系统的性能状况,或是为了定位系统

15、故障,抑或是为了让系统运行状态达 到最优。而为了满足上述目的,可以借助如下种类的性能测试手段来达到。根据经验,性 能测试可分为负载测试、压力测试、并发测试、疲劳测试等几种类型。其中负载测试和压 力测试一般会伴随进行并发测试,而疲劳测试也通常与压力测试相结合,统称疲劳强度测 试,用以衡量系统稳定性能。下面我们看一下各个分类是如何界定的:1、负载测试通常可以定义为一种性能测试,通过模拟不同工作负载确定软件系统性能能力的活动。 其采用的方法是通过不断的增加系统压力,来验证系统各项性能指标的变化情况,知道出 现“性能拐点”,即某个性能指标出现不满足事先约定的指标阈值。该方法可以找到系统 的处理极限,可

16、以为性能调优提供依据,同时还可以为确定相同容量提供参考。该类方法 通常要基于或模拟系统真实运行环境,且选取的典型业务场景也要与实际情况相同或接近。2、压力测试可以定义为一种性能测试,通过模拟极限负载获得系统所能提供的最大服务级别的活 动。通常该类测试的前提是使得系统已处于一种饱和状态,比如CPU利用率已达到85%以上, 内存利用率已超过70%等等。在此前提下再继续给系统增大负载,观察系统的性能表现,是 否出现拒绝服务、系统宕机等严重的异常。这种测试一般辅助于系统故障定位、考察系统 的稳定性等工作。3、并发测试并发测试通常分为广义的并发和狭义的并发。其中广义的并发可以理解为多个用户同 时操作不同

17、的功能,而狭义的并发可以理解为多个用户同时操作同一个功能。通常用于验 证系统处理死锁、资源争用的能力。因此,通常伴随着负载和压力测试同时开展。当然, 也有单独对某个特殊的功能进行并发测试。4、疲劳测试疲劳测试一般用于考察系统的稳定、可靠性。因此,可以定义为一种性能测试,在某 一特定环境下,通过模拟一定数量的用户持续较长时间连续使用或访问系统,确定系统长 时间运行稳定性的活动。根据经验,它一般与压力测试配合进行,综合验证系统在一定压 力下,长时间运行的稳定情况,通常可称为“疲劳强度测试”。5常用性能测试工具LoadRunnerLoadRunner:LoadRunner,是一种预测系统行为和性能的

18、负载测试工具。通过以模拟上千万用户实施 并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行 测试。通过使用LoadRunner,企业能最大限度地缩短测试时间,优化性能和加速应用系统 的发布周期。LoadRunner是一种适用于各种体系架构的自动负载测试工具,它能预测系统 行为并优化系统性能。loadrunner性能测试过程LoadRunner的虚拟用户LoadRunner使用虚拟用户来模拟实际用户对业务系统施加压力。虚拟用户在一个中央控制 器的监视下工作。创建虚拟用户执行脚本。LoadRunner提供了 Virtual User Generator来 录制或编辑虚拟用户脚本。使用Vugen创建虚拟用户执行脚本从菜单中选择运行Virtual User Generator:创建一个单协议脚本

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论