一章系统测试.ppt
《一章系统测试.ppt》由会员分享,可在线阅读,更多相关《一章系统测试.ppt(98页珍藏版)》请在三一文库上搜索。
1、第6章 系统测试,主要内容:,性能测试 压力测试 容量测试 健壮性测试 安全性测试 可靠性测试 可用性测试 验收测试的内容、策略和方法 系统测试工具及其应用,6.1 性能测试,6.1.1 性能测试的基本概念,性能测试主要检验软件是否达到需求规格说明书中规定的各类性能指标,并满足一些性能相关的约束和限制条件。,性能测试包括以下几个方面 :,评估系统的能力。测试中得到的负荷和响应时间等数据可以被用于验证所计划的模型的能力,并帮助做出决策。 识别系统中的弱点。受控的负荷可以被增加到一个极端的水平并突破它,从而修复系统的瓶颈或薄弱的地方。 系统调优。重复运行测试,验证调整系统的活动得到了预期的结果,从
2、而改进性能,检测软件中的问题。,6.1.2 性能测试方法,基准法 性能测试的基准大体有以下几方面: 响应时间 从应用系统发出请求开始,到客户端接收到最后一个字节数据为止所消耗的时间。合理的响应时间取决于实际的用户需求。 并发用户数 常见的错误理解: 使用系统的全部用户数量 使用系统的全部在线用户数量 正确理解: 与服务器进行交互的在线用户数量 吞吐量 单位时间在网络上传输的数据量 这个是衡量网络性能的主要指标 注:由S-C 性能计数器 描述服务器或操作系统性能的一些数据指标,比如Windows系统资源管理器。,6.1.2 性能测试方法,性能测试的其他常见用语: TPS 每秒钟系统能够处理事务的
3、数量 点击率 每秒发送的HTTP请求的数量 点击率越大对SERVER的压力也就越大 请求响应时间 从Client端发出请求到得到响应的整个时间。 一般包括网络响应时间+server的响应时间 事务响应时间 完成这个事务所用的时间 这个是性能测试中重点关注的指标,6.1.2 性能测试执行,分为三个阶段: 1计划阶段 2测试阶段 3分析阶段,6.2 压力测试(负载测试、并发测试),6.2.1 压力测试的基本概念,压力测试(Stress Testing)是指模拟巨大的工作负荷,以查看系统在峰值使用情况下是否可以正常运行。 压力测试是通过逐步增加系统负载来测试系统性能的变化,并最终确定在什么负载条件下
4、系统性能处于失效状态,以此来获得系统性能提供的最大服务级别的测试。,在一种需要反常(如长时间的峰值)数量、频率或资源的方式下,执行可重复的负载测试,以检查程序对异常情况的抵抗能力,找出性能瓶颈。从本质上来说,测试者是想要破坏程序。,压力测试方法具有如下特点:,(1)压力测试是检查系统处于压力情况下的能力表现。 比如,通过增加并发用户的数量,检测系统的服务能力和水平; 通过增加文件记录数来检测数据处理的能力和水平等等。,(2)压力测试一般通过模拟方法进行。 通常在系统对内存和CPU利用率上进行模拟,以获得测量结果。如将压力的基准设定为:内存使用率达到75%以上、CPU使用率达到75%以上,并在此
5、观测系统响应时间、系统有无错误产生。 除了对内存和CPU的使用率进行设定外,数据库的连接数量、数据库服务器的CPU利用率等等也都可以作为压力测试的依据。,(3)压力测试一般用于测试系统的稳定性。 如果一个系统能够在压力环境下稳定运行一段时间,那么该系统在普遍的运行环境下就应该可以达到令人满意的稳定程度。在压力测试中,通常会考察系统在压力下是否会出现错误等方面的问题。,压力测试与性能测试的联系与区别:,压力测试是用来保证产品发布后系统能否满足用户需求,关注的重点是系统整体; 性能测试可以发生在各个测试阶段,即使是在单元层,一个单独模块的性能也可以进行评估。,压力测试是通过确定一个系统的瓶颈,来获
6、得系统能提供的最大服务级别的测试。 性能测试是检测系统在一定负荷下的表现,是正常能力的表现;而压力测试是极端情况下的系统能力的表现。,例如对一个网站进行测试,模拟10到50个用户同时在线并观测系统表现,就是在进行常规性能测试;当用户增加到系统出项瓶颈时,如1000乃至上万个用户时,就变成了压力测试。,压力测试和负载测试(Load Test):,负载测试是通过逐步增加系统工作量,测试系统能力的变化,并最终确定在满足功能指标的情况下,系统所能承受的最大工作量的测试。 压力测试实质上就是一种特定类型的负载测试。,压力测试和并发性测试:,并发性测试是一种测试手段,在压力测试中可以利用并发测试来进行压力
7、测试。,6.2.2 压力测试方法,压力测试应该尽可能逼真的模拟系统环境。 对于实时系统,测试者应该以正常和超常的速度输入要处理的事务从而进行压力测试。 批处理的压力测试可以利用大批量的批事务进行,被测事务中应该包括错误条件。,压力测试中使用事务获得途径,测试数据生成器; 由测试小组创建的测试事务; 原来在系统环境中处理过的事务。,压力测试中应该模拟真实的运行环境。 测试者应该使用标准文档,输入事务的人员或者系统使用人员应该和系统产品化之后的参与人员一样。 实时系统应该测试其扩展的时间段,批处理系统应该使用多于一个事务的批量进行测试。,有效的压力测试将可采用以下测试手段:,(1)重复(Repet
8、ition)测试: 重复测试就是一遍又一遍地执行某个操作或功能,比如重复调用一个Web服务。 确定在极端情况下一个操作能否正常执行,并且能否持续不断地在每次执行时都正常。,(2)并发(Concurrency)测试: 并发是同时执行多个操作的行为,即在同一时间执行多个测试线程。 例如,在同一个服务器上同时调用许多Web服务。并发测试原则上不一定适用于所有产品(比如无状态服务),但多数软件都具有某个并发行为或多线程行为元素,这一点只能通过执行多个代码测试用例才能得到测试结果。,(3)量级(Magnitude)增加: 压力测试可以重复执行一个操作,但是操作自身也要尽量给产品增加负担。 量级的确定总是
9、与应用系统有关,可以通过查找产品的可配置参数来确定量级。,(4)随机变化: 该手段是指对上述测试手段进行随机组合,以便获得最佳的测试效果。,6.2.3 压力测试执行,可以设计压力测试用例来测试应用系统的整体或部分能力。压力测试用例选取可以从以下几个方面考虑: 输入待处理事务来检查是否有足够的磁盘空间; 创造极端的网络负载; 制造系统溢出条件;,当应用系统所能正常处理的工作量并不确定时需要使用压力测试。压力测试意图通过对系统施加超负载事务量来达到破坏系统的目的。 压力测试的弱点在于准备测试的时间与在测试的实际执行过程中所消耗的资源数量都非常庞大。 通常在应用程序投入使用之前这种消耗的衡量是无法进
10、行的。,【例6.4】某个电话通信系统的测试,测试采用压力测试方法。在正常情况下,每天的电话数目大约2000个,一天24小时服从正态分布。在系统第1年使用时,系统的平均无故障时间大约1个月左右。分析表明,系统的出错原因主要来源于单位时间内电话数量比较大的情况下,为此,对系统采用压力测试,测试时将每天电话的数目增加10倍,即20000个左右,分布采用均匀和正态两种分布,测试大约进行了4个月,共发现了314个错误,修复这些错误大约花费了6个月的时间,修复后的系统运行了近2年,尚未出现问题。,6.3 容量测试,6.3.1 容量测试基本概念,所谓的容量测试(Volume Testing)是指,采用特定的
11、手段测试系统能够承载处理任务的极限值所从事的测试工作。 这里的特定手段是指,测试人员根据实际运行中可能出现极限,制造相对应的任务组合,来激发系统出现极限的情况。,容量测试的目的 容量测试的目的是使系统承受超额的数据容量来发现它是否能够正确处理,通过测试,预先分析出反映软件系统应用特征的某项指标的极限值(如最大并发用户数、数据库记录数等),确定系统在其极限值状态下是否还能保持主要功能正常运行。 容量测试还将确定测试对象在给定时间内能够持续处理的最大负载或工作量。,对软件容量的测试,能让软件开发商或用户了解该软件系统的承载能力或提供服务的能力,如电子商务网站所能承受的、同时进行交易或结算的在线用户
12、数。知道了系统的实际容量,如果不能满足设计要求,就应该寻求新的技术解决方案,以提高系统的容量。有了对软件负载的准确预测,不仅能对软件系统在实际使用中的性能状况充满信心,同时也可以帮助用户经济地规划应用系统,优化系统的部署。,容量测试与压力测试的区别,与容量测试十分相近的概念是压力测试。二者都是检测系统在特定情况下,能够承担的极限值。 然而两者的侧重点有所不同,压力测试主要是使系统承受速度方面的超额负载,例如一个短时间之内的吞吐量。 容量测试关注的是数据方面的承受能力,并且它的目的是显示系统可以处理的数据容量。,容量测试往往应用于数据库方面的测试 数据库容量测试使测试对象处理大量的数据,以确定是
13、否达到了将使软件发生故障的极限。容量测试还将确定测试对象在给定时间内能够持续处理的最大负载或工作量。,压力测试、容量测试和性能测试的区别,更确切的说,压力测试可以看作是容量测试、性能测试和可靠性测试的一种手段,不是直接的测试目标。 压力测试的重点在于发现功能性测试所不易发现的系统方面的缺陷,而容量测试和性能测试是系统测试的主要目标内容,也就是确定软件产品或系统的非功能性方面的质量特征,包括具体的特征值。 容量测试和性能测试更着力于提供性能与容量方面的数据,为软件系统部署、维护、质量改进服务,并可以帮助市场定位、销售人员对客户的解释、广告宣传等服务。,压力测试、容量测试和性能测试的测试方法相通,
14、在实际测试工作中,往往结合起来进行以提高测试效率。一般会设置专门的性能测试实验室完成这些工作,即使用虚拟的手段模拟实际操作,所需要的客户端有时还是很大,所以性能测试实验室的投资较大。对于许多中小型软件公司,可以委托第三方完成性能测试,可以在很大程度上降低成本。,6.4 健壮性测试,6.4.1 健壮性测试基本概念,健壮性测试(Robustness Testing)主要用于测试系统抵御错误的能力。这里的错误通常指的是由于设计缺陷而带来的系统错误。测试的重点为当出现故障时,是否能够自动恢复或忽略故障继续运行。,健壮性的两层含义:,一是高可靠性,二是从错误中恢复的能力。前者体现了软件系统的质量;后者体
15、现了软件系统的适应性。二者也给测试工作提出了不同的测试要求,前者需要根据符合规格说明的数据选择测试用例,用于检测在正常情况下系统输出的正确性;后者需要在异常数据中选择测试用例,检测非正常情况下的系统行为。,6.4.2 健壮性测试方法,健壮性测试可以根据以下方面评价系统的健壮性: 通过:系统调用运行输入的参数产生预期的正常结果。 灾难性失效:这是系统健壮性测试中最严重的失效,这种失效只有通过系统重新引导才能得到解决。 重启失效:一个系统函数的调用没有返回,使得调用它的程序挂起或停止。 夭折失效:程序执行时由于异常输入,系统发出错误提示使程序中止。 沉寂失效:异常输入时,系统应当发出错误提示,但是
16、测试结果却没有发生异常。 干扰失效:指系统异常时返回了错误的提示,但是该错误提示不是期望中的错误。,自动化实现上述测试内容是需要把握以下原则: 可移植性:健壮性测试基准程序是用来比较不同系统的健壮性,因此移植性是测试基准程序的基本要求。 覆盖率:理想的基准程序能够覆盖所有的系统模块,然而这种开销是巨大的。因此一般选取使用频度最高的模块进行测试。 可扩展性:可扩展性体现在当需要扩展测试集时能够前后一致。这种可扩展性不仅指为已有模块增加测试集,还包括为新增加的模块增加测试集。 测试结果的记录:健壮性测试的目的是找出系统的不健壮性因素,因此应详细的记录测试结果。,设计健壮性测试的策略,基于错误的策略
17、:确认所有可能的错误源,为每一类错误开发错误注入技术; 基于覆盖率的策略:接口覆盖的数量,故障位置覆盖的数量,例外覆盖的数量; 基于失效的策略:用例设计故障是否被处理了,例外是否被处理了,一个组件中的失效是否影响另一个组件;,健壮性测试用例设计方法,在进行健壮性测试时,常用的用例设计方法主要有三种:故障插入测试,变异测试和错误猜测法。健壮性测试方法通常需要构造一些不合理的输入来引诱软件出错,如输入错误的数据类型,输入定义域之外的数值等。,6.4.3 一个健壮性测试案例分析,【例66】为了更清楚的让读者了解什么是健壮性测试,在这里举个简单的例子。假如定义了两个变量X1和X2,两个变量都有自己的取
18、值范围,则写成如下这种形式:aX1b;cX2d;用坐标的形式表示,如图6.7所示。,图6.7 两变量函数的健壮性测试用例,在图中,灰色区域外的4个点就是健壮性测试要重点考虑的情况。一般情况下,边界值分析的大部分讨论都直接适用于健壮性测试。健壮性测试最需要关注的部分不是输入,而是预期的输出。当物理量超过其最大值时,会出现什么情况。如果是飞机机翼的迎角,则飞机可能失速,健壮性测试的主要价值是观察例外处理情况。,6.5安全性测试,6.5.1安全性测试基本概念,安全性测试是检查系统对非法侵入的防范能力,其目的是为了发现软件系统中是否存在安全漏洞。软件安全性是指在非正常条件下不发生安全事故的能力。 安全
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 系统 测试
链接地址:https://www.31doc.com/p-3247714.html