当前位置:文档之家› 性能测试的思路

性能测试的思路

性能测试的思路文:解决方案技术中心邸贺华Is that has the standard process workflow for performance testing?可能大家都希望找到一种关于性能测试的标准化的方法,但是到目前为止还没有一种通用的方法能够普遍适用于所有性能测试案例或大多数性能测试的案例。

这是由性能测试本身是一个非常复杂的过程决定的。

影响性能测试的因素可能来源于被测项目本身、测试环境、业务的驱动程序、验收标准、测试所应用的技术、测试的日程、测试人员的能力和测试工具等等。

而且这些因素在整个项目中所占的比例不同和它们由不同的事件所引起、在不同的时间出现以及对它们不同的关注度都会影响到测试的成败,因此对于寻找一种统一的性能测试方法显得有些不契合实际。

我们性能测试人员能够做到的是如何在各种因素影响下来更有效的开展我们的测试工作,从而使我们的项目最终取得成功。

那么如何使我们的性能测试更有效率呢?我将从以下段落来阐述。

The definition of Performance Testing首先我们要了解性能测试的基本定义,它是指在预期用户或是大用户量情况下度量系统响应时间,系统地资源消耗和吞吐量的一种测试。

性能测试同时也用来确认系统性能是否满足用户需求,一般通过负载产软件包(load generation software package) 模拟应用的真实使用情况。

性能测试主要包含三种类型的测试:负载测试(Load Test) –模拟真实环境下的用户活动,被度量的值包括吞吐量(Throughput)、稳定性(stability)和应用的响应(responsiveness)。

压力测试(Stress Test) –用来检测应用在扩展情况下的临界点(breaking point)。

举例来说,向服务器尽可能快地发送大量交易数据就是对应用的一种压力测试。

这种测试不仅对检测系统的最大承受压力能力,而且也能够检测每个时间度量单位内系统能够处理的最大请求数。

可靠性测试(Reliability Test) –检测应用在预期负载下能够持续一定性能水平的时间。

这种测试在预期时间内把恒定的负载施加于应用上。

以上每种测试允许测试人员对于被测应用进行完整的性能分析,识别出应用瓶颈。

The work Process of Neusoft performance testing东软性能测试流程图是东软性能工程的重要组成部分,旨在通过全面、有效的过程和方法指导下,成功顺利地完成软件性能测试项目。

流程图中包含了计划、执行、分析、收尾四个阶段,并且在每个阶段中又包含了一系列活动,他们相互支持,相互依赖,形成了一个具有PDCA质量持续提升特点的工作环。

Most common activities relevant to successful performance testing一个性能测试周期是由一系列的活动组成的,只有我们充分的理解和把握住每个活动背后的细节,才能做好我们的性能测试。

这些活动包括项目的背景、性能验收的标准、性能测试的设计、测试环境的搭建、测试脚本的录制、测试的执行、测试的分析、性能调优和回归、测试报告的生成,简单而言我们可以归纳为以下的英文单词方便记忆。

Background,Criteria,Design,Install,Script,Execute,Analyze,Tuning&Regression,Report。

下面我对这些活动做出具体的解释:Background:进行性能测试之前我们要对项目的相关背景有所了解。

项目的背景主要包括项目的意向、性能测试的目标、系统性能各项指标、项目开发的周期、项目的进度、项目的预算、现有的测试环境和工具、性能测试人员的技能、性能关注的优先级和性能问题对业务的影响度。

如果我们对这些方面理解的不充分,那么性能测试工作将会遇到不可避免的阻挠,我们不仅会浪费大量的时间,甚至导致我们整个测试的失败。

Criteria:性能验收的标准包括项目性能的需求、性能的目标和性能的阀值。

由于在项目的生命周期中这些标准可能会发生变化,因此我们在性能测试中要与这些变化保持同步。

对于这些标准我们可以给出简单的定义,以便加深对它们的了解并加以区分。

⏹Performance requirements:是指与用户所签署在合同中性能需求条款,它代表了用户的固定业务需求,是不可以拿来进行协商的。

⏹Performance goals: 是指对于产品发布的预期性能值,但是在某些情况下可以它可以进行适当的调整,产品的终端用户比较关注的一些指标。

⏹Performance testing objectives:是指为了提高产品的性能,对性能测试过程中的一些数值加以定义并以期达到的一系列指标。

这些指标是不必进行量化的或与系统的其他性能标准相联系的。

⏹Performance targets: 是指在某特定的状态下系统资源的预期值。

例如响应时间,吞吐量和资源的利用率。

⏹Performance thresholds: 是指系统最大的可接受的性能值,例如响应时间,吞吐量和资源的利用率的阀值。

Design:对性能测试的设计也可计说成是进行性能测试所使用的一些策略。

和其它类型的测试一样,在做性能测试之前必须要对测试有过良好的设计,只有这样我们得到的结果才能最大限度地与我们的产品在实际上线时获得的数值一致。

设计主要是对测试用例的选取来验证产品将达到的性能需求、测试场景的制定来反映出产品在生产环境中的真实情况、各种测试数据的创建以期来模拟不同类型的应用者。

当然这里我们的设计思路一定要与我们项目的背景相结合。

Install:这一过程是指测试环境的搭建。

包括操作系统,应用服务器和数据库的选取、安装和配置,数据库的数据导入,应用程序的部署,自动化测试工具的选取来形成以期的负载压力环境等等。

另外,为了确保我们收集到的数据能够准确地反映出系统上线的结果,我们要对测试工具的参数配置和负载的分布尽量符合产品的实际的业务工作流程。

Script:对于性能测试脚本的录制,无论你使用什么样的工具来生成脚本和负载,它的最终目的就是要与被测系统相交互并产生所期望的数据。

一个好的测试工具不仅可以生成你所需要的脚本,而且它应该具有很强的维护机制,这样将会大大减少你的脚本维护时间,从而把更多的精力放在测试本身上去。

Execute:在性能测试的执行中,我们首先运行一次测试以建立基准。

验证环境与生产环境越相似,应用程序部署后的性能令人满意的可能性就越大。

因此,一开始有一个符合实际情况的验证环境很重要。

幸运的话,基准性能将符合性能目标,并且应用程序不需要任何调整。

但更可能的情况是,基准性能不令人满意。

然而,记录初始测试环境和基准结果可以为调整工作提供坚实的基础。

进行压力测试。

压力测试是性能测试的一种专门形式,它与其他工程领域的破坏性测试相似。

压力测试的目的是使应用程序产生故障,通过增加处理负载使其超过性能的降低,直到由于资源饱和或发生错误而使应用程序开始出问题。

压力测试有助于揭示细微的错误,这些错误本来要到部署应用程序时才会被发现。

由于此类错误通常是因设计缺陷所致,压力测试应该早在开发阶段便在应用程序的每个区域上开始进行。

在其源头修复这些细微的错误,而不是忽视这些错误,直到它们可能在应用程序中表现出症状时才修复它们。

同时我们也要时刻关注性能测试策略中的工作目标和性质。

例如某个性能测试内容在执行时由于某种原因异常中止,要尽快确认是否是性能瓶颈,而一旦确定是性能瓶颈,该项性能测试内容就要终止,表明已经达到检测目标,不要再尝试重新运行以期发现更多的问题。

其次要关注性能测试环境中各项要素的变化,例如基础数据的规模变化,测试数据的数量变化,系统资源的使用情况的变化等等。

Analyze:当测试场景执行完成后,很多测试工程师认为最困难的阶段到来了,那就是性能测试结果分析,那么怎样来分析性能测试结果呢?以下四步是对性能测试的结果分析做一个简要的归纳。

⏹在整个测试场景执行过程中,测试环境是否正常。

如果测试过程发生一些异常,这样的结果往往不准确,更不需要分析。

⏹测试场景的设置是否正确、合理。

测试场景的设置是否正确对测试结果有很大的影响。

因此当一次测试结束后,需要分析一下是不是场景设置不正确引起。

⏹测试结果是否暴露出系统的一些问题。

如果有必要我们可以调整场景(比如增大压力)进行测试。

而对于在测试过程中,使系统表现不正常的测试场景生成的结果则要进行深入地分析。

实际上,分析能反映性能问题的测试结果才是性能分析阶段要做的主要工作。

⏹从对性能测试的结果数据中我们可以很快发现系统性能问题的所在,例如从JVM的使用和回收情况可以定位到具体的应用程序代码问题,从操作系统的CPU、内存和磁盘的使用情况来定位到系统的瓶颈问题,从数组库的等待事件来发现数据死锁问题等等。

Tuning&Regression:性能测试分析人员经过对结果的分析以后,有可能提出系统存在性能瓶颈。

这时相关开发人员、数据库管理员、系统管理员、网络管理员等就需要根据性能测试分析人员提出的意见同性能分析人员共同分析确定更细节的内容,相关人员对系统进行调整以后,性能测试人员进行回归测试,与以前的测试结果进行对比,从而确定经过调整以后系统的性能是否有提升,直到系统达到你要优化的目标。

这里有一点需要提醒大家,就是在进行性能调整的时候,最好一次只调整一项内容或者一类内容,避免一次调整多项内容而引起性能提高却不知道是由于调整那项关键指标而改善性能的。

下面列出可能要进行优化的几个方面。

⏹硬件的优化⏹网络的优化⏹应用服务器、数据库等配置的优化⏹源代码、数据库脚本的优化Reports:对最终的测试结果进行归纳总结后形成了我们的性能测试报告。

如果测试报告没有清晰的表达出读者所关心的测试结论,那么也将会影响到整个测试的成败,而且这种失败并不是由于任何的技术原因导致的。

因此一个规范的测试报告在性能测试中也是至关重要的。

规范化的测试报告应该包含以上所讲的全部要素。

实际上,性能测试从始至终都应该是相当严谨的一项工程,各个阶段的工作环环相扣,性能测试工程师应该认真对待各个阶段的工作。

如果一味地追求找出系统瓶颈,无疑是舍本逐末的做法。

通过我们对性测试的深入了解,合理的去计划、组织、管理和实施将会对我们的性能测试工作起到事半功倍的效果。

相关主题