软件测试性能测试.ppt
《软件测试性能测试.ppt》由会员分享,可在线阅读,更多相关《软件测试性能测试.ppt(295页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、6.1性能测试6.1.1性能测试的基本概念n性能测试主要检验软件是否达到需求规格说明书中规定的各类性能指标,并满足一些性能相关的约束和限制条件。性能测试包括以下几个方面:n评估系统的能力。测试中得到的负荷和响应时负荷和响应时间间等数据可以被用于验证所计划的模型的能力,并帮助做出决策。n识别系统中的弱点。受控的负荷可以被增加到一个极端的水平并突破它,从而修复系统的瓶颈或薄弱的地方。n系统调优。重复运行测试,验证调整系统的活动得到了预期的结果,从而改进性能,检测软件中的问题。6.1.2性能测试方法n基准法性能测试的基准大体有以下几方面:n响应时间从应用系统发出请求开始,到客户端接收到最后一个字节数
2、据为止所消耗的时间。合理的响应时间取决于实际的用户需求。n并发用户数一般是指同一时间段内访问系统的用户数量。n吞吐量指单位时间内系统处理的客户请求数量。n性能计数器描述服务器或操作系统性能的一些数据指标,比如Windows系统资源管理器。6.1.2性能测试执行分为三个阶段:n1计划阶段n2测试阶段n3分析阶段计划阶段n定义目标并设置期望值n收集系统和测试要求n定义工作负载定义工作负载n选择要收集的性能度量值n标出要运行的测试并决定什么时候运行它们n决定工具选项和生成负载n编写测试计划,设计用户场景并创建测试脚本测试阶段n做准备工作(如建立测试服务器或布置其他设备)n运行测试n收集数据分析阶段n
3、分析结果n改变系统以优化性能n设计新的测试6.1.3性能测试案例分析n一个数据库应用系统性能测试的具体应用n目前有许多用于功能测试的自动化测试工具可供用户使用来节省测试时间、提高测试效率。n结合现在比较流行的JMeter这一开源的自动化测试工具介绍一下数据库系统的性能测试。n(1)系统介绍n被测系统是一个分布式数据库系统Testbase。该数据库采用Oracle数据库,Testbase里包括三张表,这里仅取其中一张名为City的表来说明测试过程,表的创建语句如下:createtableCity(Countryvarchar(20)notnull,Namevarchar(20)notnull,D
4、esvarchar(20)notnull)n(2)测试目的测试Testbase数据库的查询性能。n(3)测试工具的选择Jmeter。JMetern(4)测试步骤n安装必要的JDBC驱动(数据生成可以使用工具DataFactory)n准备好Jmeter测试工具n建立测试计划n配置与数据库的连接n设置结果的查看方式n用JMeter分析了Oracle数据库的查询性能图6.4配置数据库连接图6.5测试结果6.2压力测试(负载测试、并发测试)6.2.1压力测试的基本概念n压力测试(StressTesting)是指模拟巨大的工作负荷,以查看系统在峰值使用情况下是否可以正常运行。n压力测试是通过逐步增加系统
5、负载来测试系统性能的变化,并最终确定在什么负载条件下系统性能处于失效状态,以此来获得系统性能提供的最大服务级别的测试。压力测试方法具有如下特点:n(1)压力测试是检查系统处于压力情况下的能力表现。n比如,通过增加并发用户的数量,检测系统的服务能力和水平;通过增加文件记录数来检测数据处理的能力和水平等等。n(2)压力测试一般通过模拟方法进行。n通常在系统对内存和CPU利用率上进行模拟,以获得测量结果。如将压力的基准设定为:内存使用率达到75%以上、CPU使用率达到75%以上,并在此观测系统响应时间、系统有无错误产生。n除了对内存和CPU的使用率进行设定外,数据库的连接数量、数据库服务器的CPU利
6、用率等等也都可以作为压力测试的依据。n(3)压力测试一般用于测试系统的稳定性。n如果一个系统能够在压力环境下稳定运行一段时间,那么该系统在普遍的运行环境下就应该可以达到令人满意的稳定程度。在压力测试中,通常会考察系统在压力下是否会出现错误等方面的问题。压力测试与性能测试的联系与区别:n压力测试是用来保证产品发布后系统能否满足用户需求,关注的重点是系统整体;n性能测试可以发生在各个测试阶段,即使是在单元层,一个单独模块的性能也可以进行评估。n压力测试是通过确定一个系统的瓶颈,来获得系统能提供的最大服务级别的测试。n性能测试是检测系统在一定负荷下的表性能测试是检测系统在一定负荷下的表现,是正常能力
7、的表现;而压力测试是现,是正常能力的表现;而压力测试是极端情况下的系统能力的表现。极端情况下的系统能力的表现。n例如对一个网站进行测试,模拟10到50个用户同时在线并观测系统表现,就是在进行常规性能测试;当用户增加到系统出项瓶颈时,如1000乃至上万个用户时,就变成了压力测试。压力测试和负载测试(LoadTest):n负载测试是通过逐步增加系统工作量,逐步增加系统工作量,测试系统能力的变化,并最终确定在满足功能指标的情况下,系统所能承受的最大工作量的测试。n压力测试实质上就是一种特定类型的负载测试。压力测试和并发性测试:n并发性测试是一种测试手段,在压力测试中可以利用并发测试来进行压力测试。6
8、.2.2压力测试方法n压力测试应该尽可能逼真的模拟系统环境。对于实时系统,测试者应该以正常正常和超常的速度输入和超常的速度输入要处理的事务从而进行压力测试。批处理的压力测试可以利用大批量的批事务大批量的批事务进行,被测事务中应该包括错误条件。压力测试中使用事务获得途径n测试数据生成器;n由测试小组创建的测试事务;n原来在系统环境中处理过的事务。n压力测试中应该模拟真实的运行环境。n测试者应该使用标准文档,输入事务的人员或者系统使用人员应该和系统产品化之后的参与人员一样。实时系统应该测试其扩展的时间段,批处理系统应该使用多于一个事务的批量进行测试。有效的压力测试将可采用以下测试手段:n(1)重复
9、(Repetition)测试:n重复测试就是一遍又一遍地执行某个操作或功能,比如重复调用一个Web服务。压力测试的一项任务就是确定在极端情况下一个操作能否正常执行,并且能否持续不断地在每次执行时都正常。这对于推断一个产品是否适用于某种生产情况至关重要,客户通常会重复使用产品。重复测试往往与其它测试手段一并使用。n(2)并发(Concurrency)测试:n并发是同时执行多个操作的行为,即在同一时间执行多个测试线程。例如,在同一个服务器上同时调用许多Web服务。并发测试原则上不一定适用于所有产品(比如无状态服务),但多数软件都具有某个并发行为或多线程行为元素,这一点只能通过执行多个代码测试用例才
10、能得到测试结果。n(3)量级(Magnitude)增加:n压力测试可以重复执行一个操作,但是操作自身也要尽量给产品增加负担。例如一个Web服务允许客户机输入一条消息,测试人员可以通过模拟输入超长消息来使操作进行高强度的使用,即增加这个操作的量级。这个量级的确定总是与应用系统有关,可以通过查找产品的可配置参数来确定量级。n(4)随机变化:该手段是指对上述测试手段进行随机组合,以便获得最佳的测试效果。随机变化n使用重复时,在重新启动或重新连接服务之前,可以改变重复操作间的时间间隔、重复的次数,或者也可以改变被重复的Web服务的顺序;n使用并发时,可以改变一起执行的Web服务、同一时间运行的Web服
11、务数目,也可以改变关于是运行许多不同的服务还是运行许多同样的实例的决定。随机变化n量级测试时,每次重复测试时都可以更改应用程序中出现的变量(例如发送各种大小的消息或数字输入值)。n如果测试完全随机的话,因为很难一致地重现压力下的错误,所以一些系统使用基于一个固定随机种子的随机变化。这样,用同一个种子,重现错误的机会就会更大。6.2.3压力测试执行n可以设计压力测试用例来测试应用系统的整体或部分能力。压力测试用例选取可以从以下几个方面考虑:n输入待处理事务来检查是否有足够的磁盘空间;n创造极端的网络负载;n制造系统溢出条件;n当应用系统所能正常处理的工作量并不确定时需要使用压力测试。压力测试意图
12、通过对系统施加超负载事务量来达到破坏系统的目的。n压力测试和在线应用程序非常类似,因为很难利用其他测试技术来模拟高容量的事务。n压力测试的弱点在于准备测试的时间与在测试的实际执行过程中所消耗的资源数量都非常庞大。通常在应用程序投入使用之前这种消耗的衡量是无法进行的。【例例6.4】某个电话通信系统的测试n测试采用压力测试方法。在正常情况下,每天的电话数目大约2000个,一天24小时服从正态分布。在系统第1年使用时,系统的平均无故障时间大约1个月左右。分析表明,系统的出错原因主要来源于单位时间内电话数量比较大的情况下,为此,对系统采用压力测试,测试时将每天电话的数目增加10倍,即20000个左右,
13、分布采用均匀和正态两种分布,测试大约进行了4个月,共发现了314个错误,修复这些错误大约花费了6个月的时间,修复后的系统运行了近2年,尚未出现问题。6.3容量测试6.3.1容量测试基本概念n所谓的容量测试(VolumeTesting)是指,采用特定的手段测试系统能够承载处理任务的极限值所从事的测试工作。n这里的特定手段是指,测试人员根据实际运行中可能出现极限,制造相对应的任务组合,来激发系统出现极限的情况。n容量测试的目的n容量测试的目的是使系统承受超额的数据容量来发现它是否能够正确处理,通过测试,预先分析出反映软件系统应用特征的某项指标的极限值(如最大并发用户数、数据库记录数等),确定系统在
14、其极限值状态下是否还能保持主要功能正常运行。容量测试还将确定测试对象在给定时间内能够持续处理的最大负载或工作量。n对软件容量的测试,能让软件开发商或用户了解该软件系统的承载能力或提供服务的能力,如电子商务网站所能承受的、同时进行交易或结算的在线用户数。知道了系统的实际容量,如果不能满足设计要求,就应该寻求新的技术解决方案,以提高系统的容量。有了对软件负载的准确预测,不仅能对软件系统在实际使用中的性能状况充满信心,同时也可以帮助用户经济地规划应用系统,优化系统的部署。容量测试与压力测试的区别n与容量测试十分相近的概念是压力测试。二者都是检测系统在特定情况下,能够承担的极限值。n然而两者的侧重点有
15、所不同,压力测试主要是使系统承受速度方面的超额负载,例如一个短时间之内的吞吐量。n容量测试关注的是数据方面的承受能力,并且它的目的是显示系统可以处理的数据容量。n容量测试往往应用于数据库方面的测试n数据库容量测试使测试对象处理大量的数据,以确定是否达到了将使软件发生故障的极限。容量测试还将确定测试对象在给定时间内能够持续处理的最大负载或工作量。压力测试、容量测试和性能测试的区别n更确切的说,压力测试可以看作是容量测试、性能测试和可靠性测试的一种手段,不是直接的测试目标。n压力测试的重点在于发现功能性测试所不易发现的系统方面的缺陷,而容量测试和性能测试是系统测试的主要目标内容,也就是确定软件产品
16、或系统的非功能性方面的质量特征,包括具体的特征值。n容量测试和性能测试更着力于提供性能与容量方面的数据,为软件系统部署、维护、质量改进服务,并可以帮助市场定位、销售人员对客户的解释、广告宣传等服务。n压力测试、容量测试和性能测试的测试方法相通,在实际测试工作中,往往结合起来进行以提高测试效率。一般会设置专门的性能测试实验室完成这些工作,即使用虚拟的手段模拟实际操作,所需要的客户端有时还是很大,所以性能测试实验室的投资较大。对于许多中小型软件公司,可以委托第三方完成性能测试,可以在很大程度上降低成本。6.3.2容量测试方法n进行容量测试的首要任务就是确定被测系统数据量的极限,即容量极限。这些数据
17、可以是数据库所能容纳的最大值,可以是一次处理所能允许的最大数据量等等。系统出现问题,通常是发生在极限数据量产生或临界产生的情况下,这时容易造成磁盘数据的丢失、缓冲区溢出等一些问题。资源利用率、响应时间、用户负载关系图n为了更清楚的说明如何确定容量的极限值,参看图6.6(资源利用率、响应时间、用户负载关系图):n图中反映了资源利用率、响应时间与用户负载之间的关系。可以看到,用户负载增加,响应时间也缓慢的增加,而资源利用率几乎是线形增长。这是因为应用做更多的工作,它需要更多的资源。n一旦资源利用率接近百分之百时,出现一个有趣的现象,就是响应以指数曲线方式下降,这点在容量评估中被称作为饱和点。饱和点
18、是指所有性能指标都不满足,随后应用发生恐慌的时间点。n执行容量评估的目标是保证用户知道这点在哪,并且永远不要出现这种情况。在这种负载发生前,管理者应优化系统或者增加适当额外的硬件。一些组合条件下的测试n为了确定容量极限,可以进行一些组合条件下的测试,如核实测试对象在以下高容量条件下能否正常运行:n链接或模拟了最大(实际或实际允许)数量的客户机。n所有客户机在长时间内执行相同的、可能性能不稳定的重要业务功能。n已达到最大的数据库大小(实际的或按比例缩放的),而一起同时执行多个查询或报表事务。选用不同的加载策略n当然需要注意,不能简单地说在某一标准配置服务器上运行某软件的容量是多少,选用不同的加载
19、策略可以反映不同状况下的容量。n举个简单的例子,网上聊天室软件的容量是多少?在一个聊天室内有1000个用户,和100个聊天室每个聊天室内有10个用户,同样都是1000个用户,在性能表现上可能会出现很大的不同,在服务器端数据输出量、传输量更是截然不同的。在更复杂的系统内,就需要分别为多种情况提供相应的容量数据作为参考。容量测试执行n开始进行容量测试的第一步也和其他测试工作一样,通常是获取测试需求。系统测试需求确定测试的内容,即测试的具体对象。获取测试需求n测试需求主要来源于各种需求配置项,它可能是一个需求规格说明书,或是由场景、用例模型、补充规约等组成的一个集合。其中,容量测试需求来自于测试对象
20、的指定用户数和业务量。容量需求通常出现在需求规格说明书中的基本性能指标、极限数据量要求和测试环境部分。容量测试常用的用例设计方法n容量测试常用的用例设计方法有规范导出法、边界值分析、错误猜测法。容量测试的步骤n分析系统的外部数据源,并进行分类;n对每类数据源分析可能的容量限制,对于记录类型数据需要分析记录长度限制,记录中每个域长度限制和记录数量限制;n对每个类型数据源,构造大容量数据对系统进行测试;n分析测试结果,并与期望值比较,确定目前系统的容量瓶颈;n对系统进行优化并重复以上四步,直到系统达到期望的容量处理能力。常见的容量测试例子n处理数据敏感操作时进行的相关数据比较;n使用编译器编译一个
21、极其庞大的源程序;n使用一个链接编辑器编辑一个包含成千上万模块的程序;n一个电路模拟器模拟包含成千上万块的电路;n一个操作系统的任务队列被充满;n一个测试形式的系统被灌输了大量文档格式;n互联网中庞大的E-mail信息和文件信息。6.3.4一个容量测试案例分析n【例6.5】容量测试是用来研究程序加载非常大量的数据时、处理很大量数据任务时的运行情况,这一测试主要关注一次处理合理需求的大量数据,而且在一段较长时间内高频率地重复任务。对于像银行终端监控系统这样的产品来讲,容量测试是至关重要的。在下面的内容中将选取一个银行系统进行容量测试的案例进行简单的分析。银行系统进行容量测试的案例n首先根据某银行
22、终端监控系统的需求说明,作出如下分析:n服务器支持挂接100台业务前置机。n每台前置机支持挂接200台字符终端。n字符终端有两种登录前置机的模式,即终端服务器模式和Telnet模式。n不同的用户操作仅反映为请求数据量的不同。n不同的配置包括:不同的系统版本(如SCO、SOLARIS等),不同的shell(shell、cshell、kshell)。容量需求分析的策略n对应上面五条容量需求分析,分别制定如下策略:n对于需求1、2,挂接100台业务前置机,200台字符终端的容量环境不可能真实地构造,这里采取虚拟用户数量的方式,多台业务前置机采用在一台前置机上绑定多个IP地址的方式实现,同时启动多个前
23、置程序。n对于需求3可以给出两种字符终端登录前置机的模式。n对于需求4,不同数据量可以执行不同的shell脚本来实现。实际上可以执行相同的脚本,而循环输出不同字节数的文本文件内容。最后,对于不同的系统版本,则只能逐一测试,因为谁也代替不了谁。当然,以用户实际使用的环境为重点。测试用例的设计n测试工作离不开测试用例的设计。不完全、不彻底是软件测试的致命缺陷,任何程序只能进行少量而有限的测试。测试用例在此情况下产生,同时它也是软件测试系统化、工程化的产物。当明确了测试需求和策略后,设计用例只是一件顺水推舟的事。怎样组合测试点n从测试需求可以提取出许多的测试点,而测试用例则是测试点的组合。怎样组合呢
24、?n可以参考这样一个原则:一个测试用例是为验证某一个具体的需求,在一个测试场景下,进行的若干必要操作的最小集合。也就是说,只要明确地定义目的、场景、操作,就形成了用例的基本轮廓。再加上不同类型测试必须的测试要素,就构成了完整的测试用例。对于容量测试来说,测试要素无外乎容量值、一定容量下正常工作的标准等。下面给出一个容量测试用例模版的例子。表6.1容量测试用例模版系统测试用例用例标识用例类型容量测试编写人编写日期测试目的需求可追踪性测试约束测试环境测试工具初始化N操作步骤及输入预期结果及通过准则1.2.测试结果问题报告标识码审核:附注:n作为前面例子的延续,下面简单说明一下各栏目的填法:n1)测
25、试目的:需要验证的测试需求,如“在XXX的容量条件下,前置程序是否能正常工作”。n2)需求可追踪性:对应测试需求的标识号。n3)测试约束条件:本次测试需遵循的制约条件,如终端以终端服务器模式登录到主机。n4)测试环境:前置程序的版本等。n5)测试工具:来源于测试策略,如前面提到的终端服务器模拟程序。n6)初始化:在测试前需作的准备工作。n7)操作步骤及输入:如终端登录,不同的数据量操作等。n8)预期结果及通过准则:一定容量下正常工作的标准,如正常录像,正常压缩传送,资源占用率等。n对于不同的容量条件,因为测试场景不一样,建议编写不同的用例。n执行出了测试策略,也完成了测试用例的设计,接下来的事
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 测试 性能
限制150内