坚持到底!测试到底!

发布新日志

  • 性能测试方法

    2007-02-07 14:38:24

    对性能测试方法有很多不同的分类,我觉得从一种大的范围上来进行分类的话,主要有几种:性能测试、负载测试、压力测试、配置测试、并发测试、可靠性测试和失效恢复测试。现对每种测试方法的目的分别描述一下我的理解,望各位多提意见

    1、  性能测试(performance testing):它是一种我们常见的一种方法,它是通过模拟生产运行的业务压力量和使用场景组合,测试系统的性能是否满足生产性能的要求。简单地说就是要在特定的运行条件下验证体系统的能力状况。

    这种方法的主要特点有:

    1)  这种方法的主要目的是验证系统是否有系统说明具有的能力

    2)  这种方法需要事先了解被测试系统典型场景,并具有确定的性能目标

    3)  这种方法要求在已确定的环境下运行

    2、  负载测试(load testing):有时被叫做可量性测试,它主要是通过在被测系统上不断增加压力,直到性能达到预定目标或者资源达到饱和状态。它可以找到体系统的处理能力的极限,为系统调优提供数据。

    它的主要特点有

    1)  它的主要目的是找到系统处理能力的极限

    2)  需要在给定的测试环境下进行,也需要考虑被测试体系统的业务压力量和典型场景,使得测试结果具有业务上的意义

    3)  一般用来了解系统的性能容量,或是配合性能调优来使用。

    3、  压力测试(stress testing):这种方法测试系统在一定饱和状态下,系统能够处理的会话能力,以及体系学统是否会出现错误。

    这种性能测试方法具有以下特点

    1)      它的主要目的是检查系统处于压力情况下时,应用的表现

    2)      一般通过模拟负载等方法,使得系统的资源使用达到较高的水平

    3)      一般用于测试系统的稳定性

    4、  配置测试(configuration testing):通过对被测系统的软/硬环境的调整,了解各种不同环境对系统性能影响的程度,从而找到体系统各项资源的最优分配原则。

    这种方法的特点有:

    1)  它的主要目的是了解各种不同因素对系统性能影响的程度,从而判断出最值得进行的调优方法。

    2)  一般在对系统性能状况有一定的了解后进行

    3)  一般用于性能调优和规划能力

    5、  并发测试(concurrency testing):通过模拟用户的并发访问,测试多用户并发访问同一个应用、同一模块或者数据记录时是否存在死锁或者其它性能的问题

    1)  主要目的是发现系统中可能隐藏的并发访问时的问题

    2)  主要关注系统可能存在的并发问题,例如系统中的内存泄漏、死锁等方面的问题

    3)  这种方法可以在开发的各个阶段使用,需要相关的测试工具的配合和支持

    6、  可靠性测试(reliability testing):软件的可靠性包含很多的内容,比如:成熟性、容错性等等,但这里所说的可靠性测试主要是指通过给系统加载一定的业务压力的情况下,让应用持续运行一段时间,测试系统在这种条件下是否能够稳定运行。

    它的特点有:

    1)  主要目的是验证系统是否支持长期稳定的运行

    2)  需要在压力下持续一段时间的运行

    3)  需要关注系统的运行状况

    7、  失效恢复测试方法(failover testing):它主要是针对有冗余备份和负载均衡的系统设计的。它可以人用来检验如果系统局部发生故障,用户是否能够继续使用系统;以及如果这种情况发生,用户将受到多大程度的影响。

    它的主要特点有:

    1)  主要目的是验证在局部故障情况下,系统能否继续使用。

    2)  这种性能测试方还需要指出,当问题发生时“能支持多少用户访问”的结论和“采取何种应急措施”的方案

    3)  一般来说,只有对系统持续运行指标有明确要求的系统才需要进行这种类型的测试

  • 性能测试应用领域及所使用的测试方法

    2007-02-07 14:35:07

    性能测试的应用领域可以分为能力验证、能力规划、性能调优和缺陷发现

    1、  能力验证,它是经常用到的应用领域,它与性能测试很接近,要有已确定的环境下运行,要根据典型场景设计测试方案和用例,能力验证一般采用performance testing方法,还可以用其它的测试方法:reliability testingstress testing failover testing的方法

    2、  规划能力,它与能力验证领域不同,能力验证关心的是在给定条件下,系统能否具有预期的能力表现,而规划能力应用关心的是应该如何才能使系统具有我们要求的性能能力。或是在某种可能发生的条件下,系统具有如何的性能能力。规划能力应用领域的问题常常是“某系统能否支持未来一段时间内的用户增长或是应该如何调整系统配置,使系统能够满足增长的用户数的需要”

    常用的测试方法有:负载测试、配置测试和压力测试

    3、  性能调优,主要对系统性能进行调优,可以在不同的测试阶段和场合下使用,不同的环境调优关注的内容也不同,比如对已经在实际的生产环境上的应用系统来说,对其进行调优首先关注的是应用系统部署环境的调整,对开发中的应用来说,更多的关注应用逻辑的实现方法、算法、数据库访问层的设计因素。

    一个标准的性能调优过程如下:

    1、  确定基准环境、基准负载和基准性能指标

    2、  调整系统运行环境和实现方法,执行测试,这是性能调优过程中的核心步聚,对一个应用系统来说,主要做硬件环境、系统设置和应用级别三个方面的调整

    3、  记录测试结果,进行分析

      性能调优使用的主要测试方式有:配置测试、负载测试、压力测试和失效恢复测试

    4、  缺陷发现,主要目的是通过性能测试的手段来发现系统中存下的缺陷。它一般可以作为系统测试阶段的一种补充测试手段,在测试过程中发现并发时的应用问题,或是作为在系统维护阶段的问题定位手段,对系统运行过程中已经出现的问题进行重现和定位

    缺陷发现一般采用并发测试方支,如果还需要关注压力失效恢复过程中出现的问题,还可以采用压力和失效恢复方法。

  • 软件性能的几个主要术语

    2007-02-06 16:08:44

     

    接触过软件性能测试的人,会经常听到响应时间、并发用户数、吞吐量、性能计数器、思考时间等这样的术语,网上也有这方面的讨论,总觉得都是似明白似不明白的,现将我对他们的理解写出来,和大家分享一下,还望各位多指教:

    1、  响应时间,响应时间是对用户请求作出响应所需要的时间,它可以划分为两个部分,一是呈现时间、二是系统响应时间,其中呈现时间取决于数据在被客户端收到响应数据后呈现页面所消耗的时间,而系统响应时间指应用系统从请求发现开始到客户端接收到数据所消耗的时间。在一般性能测试中,一般不关注呈现时间,这是因为呈现时间在很在程度上取决于客户端的表现。如果一台内存不足的客户端机器在处理复杂页面的时候,其呈现时间可能就很长,而这并不能说明整个系统的性能。

    为了能更好定位性能瓶颈的所在,还可以对响应时间再进一步分解,它是由网络传输时间和数据处理时间(也叫应用延迟时间)。

    需要说明一点是,对客户来说,响应时间能否被接受是一带有一定的主观色彩,它的时间长短没有绝对区别,所以在进行性能测试的时候,合理的响应时间取决于实际的用户需求,而不能依据测一群群人员自已的设想来决定

     

    2、  并发用户数:从客户端角度是理解,它是在同一个时间内访问系统的用户数量,也就是说如果性能测试的目标是验证当前系统能否支持现有用户的访问,最好的办法就是弄清楚会有多少用户会在同一个时间段内访问被测试的系统。通过测试了解到当系统处于该用户量的访问时,会具有怎么的性能表现。从服务器端承受的压力考虑,它是同时向服力器端发出请求的客户数,一般结合并发测试使用,体现的是服务端承受的最大并发访问数。在实际的性能测试中,要搞清与并发用户数相关的概念,系统用户数(该体系统的使用用户数)和同时在线用户人数,

    3、  吞吐量:是指单位时间内系统处理的客户请求的数量,直接体现软件系统的性能承载能力。一般来说,吞吐量用请求数/秒或是页页数/秒来衡量,从业务的角度,吞吐量也可以用访问人数/天或是处理的业务数/小时等单位来衡量,从网络的角度来说,也可以用字数/天来考察网络流量。

    对于交互式应用来说,吞吐量指标反映的是服务器承受的压力。在容量规划的测试中,吞吐量是一个重点关注的指标,因为它能够说明系统级别的负载能力;另外,在性能调优的过程中,吞吐量指标也有得要的价值。吞吐量指档可以在两个方面发挥作用:

    1)  用于协肋设计性能测试场景,以及衡量性能测试场景是否达到了预期的设计目标:在设计性能测试场景时,吞吐量可被用于协助设计性能测试场景,根据估算的吞吐量数据,可以人对应到测试场景的事务发生频率、事务发生次数等;另外,在测试完成后,根据实际的吞吐量可以衡量测试是否达到了预期的目标。

    2)  用于协助分析性能瓶颈:吞吐量的限制是性能瓶颈的一种重要表现开式,因此有针对性地对吞吐量设计测试, 可以协助尽快定位到性能瓶颈所在的位置。

    4、  性能计数器:是描述服务器或操作系统性能的一些数据指标。例如:对windows系统来说,使用内存数(Memory In Usage)就是常见的计数器。

    计数器在性能测试中发挥着“监控和分析”的关键作用,尤其是在分析系统的可扩展性、进行性能瓶颈的定位时,对数器取值的分析非常关键。 与性能计数器相关的另一个术语是“资源利用率”。它指的是系统各种资源的使用状况。为了方便比较,一般用“资源的实际使用/总的资源可用量”形成资源利用率的数据,用以进行各种资源使用的比较。

    5、  思考时间:从业务的角度来说,在这个时间指的是用户在进行操作时,第个请求这间的间隔。从自动化测试实现的角度来说,要真实地模拟用户操作,就必须在测试脚本中让各个操作之间等待一段时间,体现在脚本中,具体而言,就是在操作之间放置一个Thinktime的函数,使得脚本在执行两个操作之间等待一段时间。

Open Toolbar