1、08软件质量与质量保证软件质量与质量保证 2不论什么产品,质量都是极其重要。软件不论什么产品,质量都是极其重要。软件产品是逻辑产品,其特点是研发周期长,耗产品是逻辑产品,其特点是研发周期长,耗资巨大,必须特别注意保证质量。资巨大,必须特别注意保证质量。软件质量问题引发的事故已直接伤害到生软件质量问题引发的事故已直接伤害到生命和社会安全。命和社会安全。忽视质量必将付出更大的代价,受到更为忽视质量必将付出更大的代价,受到更为严厉的惩罚。严厉的惩罚。质量是唯一不能妥协的,没有质量的质量是唯一不能妥协的,没有质量的生产是一种破坏!生产是一种破坏!P.167 3提提 纲纲软件质量的定义软件质量的定义影响
2、软件质量的因素影响软件质量的因素软件质量保证策略软件质量保证策略软件质量保证活动软件质量保证活动软件评审软件评审软件质量保证的标准软件质量保证的标准结构化程序的测试结构化程序的测试面向对象的软件测试面向对象的软件测试测试计划与测试分析报告测试计划与测试分析报告软件维护软件维护 48.1 软件质量的定义P.167ANSI/IEEE(美国国家标准化组织(美国国家标准化组织/电电气和电子工程师协会)气和电子工程师协会)Std 729-1983定定义软件质量为义软件质量为:“与软件产品满足规定的和与软件产品满足规定的和隐含的需求的能力有关的特隐含的需求的能力有关的特征或特性的全体征或特性的全体”。58
3、.1 软件质量的定义P.167定义至少明确了如下要点:定义至少明确了如下要点:1)1)软件需求是度量软件质量的基础,不符合需求的软软件需求是度量软件质量的基础,不符合需求的软件就没有质量。件就没有质量。2)2)在各种标准中定义了一些开发准则,用来指导软件在各种标准中定义了一些开发准则,用来指导软件人员用工程化的方法开发软件。如果不遵守这些开发人员用工程化的方法开发软件。如果不遵守这些开发准则,软件质量就得不到保证。准则,软件质量就得不到保证。3)3)往往会有一些隐含的需求没有明确地提出来。往往会有一些隐含的需求没有明确地提出来。例如,软件应具备良好的可维护性。如果软件只例如,软件应具备良好的可
4、维护性。如果软件只满足那些精确定义了的需求而没有满足这些隐含满足那些精确定义了的需求而没有满足这些隐含的需求,软件质量也不能保证。的需求,软件质量也不能保证。6提提 纲纲软件质量的定义软件质量的定义影响软件质量的因素影响软件质量的因素软件质量保证策略软件质量保证策略软件质量保证活动软件质量保证活动软件评审软件评审软件质量保证的标准软件质量保证的标准结构化程序的测试结构化程序的测试面向对象的软件测试面向对象的软件测试测试计划与测试分析报告测试计划与测试分析报告软件维护软件维护 78.2 影响软件质量的因素P.167对软件开发项目提出的要求往往只强调系对软件开发项目提出的要求往往只强调系统必须完成
5、的功能、应该遵循的进度计划统必须完成的功能、应该遵循的进度计划、以及生产这个系统花费的成本,却很少、以及生产这个系统花费的成本,却很少注意在整个生命周期中软件系统应该具备注意在整个生命周期中软件系统应该具备的质量标准。的质量标准。这种做法的后果是使许多系统的维护费用这种做法的后果是使许多系统的维护费用很高,为了把系统移植到另外的环境中,很高,为了把系统移植到另外的环境中,或者使系统和其他系统配合使用,都必须或者使系统和其他系统配合使用,都必须付出很高昂的代价。付出很高昂的代价。88.2 影响软件质量的因素P.1671 影响软件质量的主要因素影响软件质量的主要因素虽然软件具有难于定量度量的软虽然
6、软件具有难于定量度量的软件属性,但是仍然能够提出许多重件属性,但是仍然能够提出许多重要的软件质量指标。要的软件质量指标。从管理角度对软件质量进行度量从管理角度对软件质量进行度量,可以把影响软件质量的主要因素,可以把影响软件质量的主要因素分成以下分成以下13类。类。98.2 影响软件质量的因素P.1671 影响软件质量的主要因素影响软件质量的主要因素1)1)正确性正确性2)2)健壮性健壮性3)3)效率效率4)4)安全性安全性5)5)可用性可用性6)6)风险风险7)7)可理解性可理解性8)8)可维修性可维修性9)9)适应性适应性10)10)可测试性可测试性11)11)可移植性可移植性12)12)可
7、再用性可再用性13)13)互运行性互运行性 108.2 影响软件质量的因素P.1672 软件质量评价应遵守的原则软件质量评价应遵守的原则1)1)应强调软件总体质量应强调软件总体质量(低成本高质量低成本高质量),而不应片,而不应片面强调软件正确性,忽略其可维护性与可靠性、面强调软件正确性,忽略其可维护性与可靠性、可用性与效率等。可用性与效率等。2)2)应在软件工程化生产的整个周期的各个阶段都应在软件工程化生产的整个周期的各个阶段都注意软件的质量,而不能只在软件最终产品验收注意软件的质量,而不能只在软件最终产品验收时注意质量。时注意质量。3)3)应制定软件质量标准,定量地评价软件质量,应制定软件质
8、量标准,定量地评价软件质量,使软件产品评价执行使软件产品评价执行“评测结合,以测为主评测结合,以测为主”的的科学方法。科学方法。11提提 纲纲软件质量的定义软件质量的定义影响软件质量的因素影响软件质量的因素软件质量保证策略软件质量保证策略软件质量保证活动软件质量保证活动软件评审软件评审软件质量保证的标准软件质量保证的标准结构化程序的测试结构化程序的测试面向对象的软件测试面向对象的软件测试测试计划与测试分析报告测试计划与测试分析报告软件维护软件维护 128.3 软件质量保证策略P.168 审查审查 复查和管理复审复查和管理复审 测试测试 13提提 纲纲软件质量的定义软件质量的定义影响软件质量的因
9、素影响软件质量的因素软件质量保证策略软件质量保证策略软件质量保证活动软件质量保证活动软件评审软件评审软件质量保证的标准软件质量保证的标准结构化程序的测试结构化程序的测试面向对象的软件测试面向对象的软件测试测试计划与测试分析报告测试计划与测试分析报告软件维护软件维护 148.4 软件质量保证活动P.169质量保证是复审、开发方法、配置控制质量保证是复审、开发方法、配置控制与程序测试的综合应用。与程序测试的综合应用。简单地说,软件的开发方法应该符合规简单地说,软件的开发方法应该符合规定的软件开发规范;定的软件开发规范;计划和开发时期各个阶段的工作都要进计划和开发时期各个阶段的工作都要进行复审;行复
10、审;每个阶段产生的文档都必须严格管理,每个阶段产生的文档都必须严格管理,以确保文档和程序的完整性与一致性;以确保文档和程序的完整性与一致性;158.4 软件质量保证活动P.169作为最后和最重要的一道防线,还作为最后和最重要的一道防线,还要坚持对程序进行各个层次的测试。要坚持对程序进行各个层次的测试。所有以上的各项活动内容,都需写所有以上的各项活动内容,都需写入质量保证计划,并由质量保证小组入质量保证计划,并由质量保证小组监督实施。监督实施。由此可见,质量保证既是技由此可见,质量保证既是技术活动,也是管理活动。术活动,也是管理活动。168.4 软件质量保证活动P.169图图8-1 8-1 质量
11、保证活动内容质量保证活动内容验证与确认验证与确认开发时期的开发时期的配置管理配置管理 17提提 纲纲软件质量的定义软件质量的定义影响软件质量的因素影响软件质量的因素软件质量保证策略软件质量保证策略软件质量保证活动软件质量保证活动软件评审软件评审软件质量保证的标准软件质量保证的标准结构化程序的测试结构化程序的测试面向对象的软件测试面向对象的软件测试测试计划与测试分析报告测试计划与测试分析报告软件维护软件维护 188.5 软件评审P.170在软件生存期每个阶段的工作中都可能引在软件生存期每个阶段的工作中都可能引入人为的错误。入人为的错误。当出现错误,如果不及时纠正,就会传播当出现错误,如果不及时纠
12、正,就会传播到开发的后续阶段中去,并在后续阶段中到开发的后续阶段中去,并在后续阶段中引出更多的错误。引出更多的错误。实践证明,提交给测试阶段的程序中包含实践证明,提交给测试阶段的程序中包含的错误越多,经过同样时间的测试后,程的错误越多,经过同样时间的测试后,程序中序中仍然潜伏仍然潜伏的错误也越多。的错误也越多。198.5 软件评审P.170所以必须在开发时期的每个阶段,特别是设所以必须在开发时期的每个阶段,特别是设计阶段结束时要进行严格的技术评审,尽量不计阶段结束时要进行严格的技术评审,尽量不让错误传播到下一个阶段。让错误传播到下一个阶段。评审是以提高软件质量为目的的技术活动。评审是以提高软件
13、质量为目的的技术活动。为此,首先要明确什么是软件的质量。为此,首先要明确什么是软件的质量。缺乏质量概念的技术评审只是一缺乏质量概念的技术评审只是一种拘于形式的为评审而评审的盲目种拘于形式的为评审而评审的盲目工作。工作。208.5 软件评审P.170通常,把质量定义为用户的满意通常,把质量定义为用户的满意程度。为使用户满意,有以下两个程度。为使用户满意,有以下两个必要条件。必要条件。1)1)设计的规格说明要符合用户的要求。设计的规格说明要符合用户的要求。2)2)程序要按照设计规格说明所规定的情程序要按照设计规格说明所规定的情况正确执行。况正确执行。218.5 软件评审P.170人们人们把上述第一
14、个条件称为设计把上述第一个条件称为设计质量,把第二个条件称为程序质量质量,把第二个条件称为程序质量。图图8-2 8-2 设计质量与程序质量设计质量与程序质量 228.5 软件评审P.171设计质量的评审对象是在需求分析阶段产生的软件需设计质量的评审对象是在需求分析阶段产生的软件需求规格说明、数据要求规格说明,在软件概要设计阶段求规格说明、数据要求规格说明,在软件概要设计阶段产生的软件概要设计说明等产生的软件概要设计说明等,归纳起来,需要从下述归纳起来,需要从下述12个方面进行评审。个方面进行评审。软件的规格说明软件的规格说明 可靠性可靠性 保密措施实现保密措施实现 操作特性实施操作特性实施 性
15、能实现性能实现 可修改性可修改性8.5.1 设计质量的评审内容设计质量的评审内容 可扩充性可扩充性 互换性互换性 可移植性可移植性 可测试性可测试性 复用性复用性 互连性互连性 238.5 软件评审P.175程序质量评审着眼于软件本身的结构、与运行程序质量评审着眼于软件本身的结构、与运行环境的接口、变更带来的影响而进行的评审活动环境的接口、变更带来的影响而进行的评审活动。通常它是从开发者的角度进行评审,直接与开通常它是从开发者的角度进行评审,直接与开发技术有关。发技术有关。软件的结构软件的结构与运行环境的接口与运行环境的接口8.5.2 程序程序质量的评审内容质量的评审内容 24提提 纲纲软件质
16、量的定义软件质量的定义影响软件质量的因素影响软件质量的因素软件质量保证策略软件质量保证策略软件质量保证活动软件质量保证活动软件评审软件评审软件质量保证的标准软件质量保证的标准结构化程序的测试结构化程序的测试面向对象的软件测试面向对象的软件测试测试计划与测试分析报告测试计划与测试分析报告软件维护软件维护 258.6 软件质量保证的标准P.177质量保证系统可以定义为用于实现质量管质量保证系统可以定义为用于实现质量管理的组织结构、责任、规程、过程和资源。理的组织结构、责任、规程、过程和资源。ISO 9000标准是以一种能够适用于任何行标准是以一种能够适用于任何行业的术语描述了质量保证的要素。业的术
17、语描述了质量保证的要素。为了登记成为为了登记成为ISO 9000中包含的质量保证中包含的质量保证系统模型,一个公司的质量系统和操作应该系统模型,一个公司的质量系统和操作应该被第三方审计者仔细检查,查看其与标准的被第三方审计者仔细检查,查看其与标准的符合性以及操作的有效性。符合性以及操作的有效性。268.6 软件质量保证的标准P.177成功登记之后,这一公司将收到成功登记之后,这一公司将收到由审计者所代表的登记实体颁发的由审计者所代表的登记实体颁发的证书。证书。此后每半年进行一次的检查性审此后每半年进行一次的检查性审计持续地保证该公司的质量系统与计持续地保证该公司的质量系统与标准相符。标准相符。
18、278.6 软件质量保证的标准P.177ISO对质量保证对质量保证系统的方法系统的方法ISO 9001标准标准 28提提 纲纲软件质量的定义软件质量的定义影响软件质量的因素影响软件质量的因素软件质量保证策略软件质量保证策略软件质量保证活动软件质量保证活动软件评审软件评审软件质量保证的标准软件质量保证的标准结构化程序的测试结构化程序的测试面向对象的软件测试面向对象的软件测试测试计划与测试分析报告测试计划与测试分析报告软件维护软件维护 298.7 结构化程序的测试P.178软件测试是软件开发过程的重要组成部软件测试是软件开发过程的重要组成部分,是用来确认一个程序的品质或性能是分,是用来确认一个程序
19、的品质或性能是否符合开发之前所提出的一些要求。否符合开发之前所提出的一些要求。软件测试就是在软件投入运行前,对软软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。复审,是软件质量保证的关键步骤。软件测试是为了发现错误而执行软件测试是为了发现错误而执行程序的过程。程序的过程。308.7 结构化程序的测试P.178软件测试在软件生存期中横跨两个阶段软件测试在软件生存期中横跨两个阶段。通常在编写出每一个模块之后就对它做通常在编写出每一个模块之后就对它做必要的测试必要的测试(称为单元测试称为单元测试)。编码和单元测
20、试属于软件生存期中的同编码和单元测试属于软件生存期中的同一个阶段。一个阶段。在结束这个阶段后对软件系统还要进行在结束这个阶段后对软件系统还要进行各种综合测试,这是软件生存期的另一个各种综合测试,这是软件生存期的另一个独立阶段,即独立阶段,即测试阶段测试阶段。318.7 结构化程序的测试P.179 软件测试的目的软件测试的目的 软件质量软件质量测试人员的任务测试人员的任务8.7.1 软件测试的目的软件测试的目的 328.7 结构化程序的测试P.179从不同的角度出发,出现了两种不同的软从不同的角度出发,出现了两种不同的软件测试原则。件测试原则。从用户的角度出发,就是希望通过软件测从用户的角度出发
21、,就是希望通过软件测试能充分暴露软件中存在的问题和缺陷,从试能充分暴露软件中存在的问题和缺陷,从而考虑是否可以接受该产品;而考虑是否可以接受该产品;从开发者的角度出发,就是希望测试能表从开发者的角度出发,就是希望测试能表明软件产品不存在错误,已经正确地实现了明软件产品不存在错误,已经正确地实现了用户的需求。用户的需求。8.7.2 软件测试的原则软件测试的原则 338.7 结构化程序的测试P.179为了达到上述的原则,需要注意以下几点为了达到上述的原则,需要注意以下几点。1)应当尽早测试和不断地测试。应当尽早测试和不断地测试。2)程序员应该避免检查自己的程序,测试工作应该由程序员应该避免检查自己
22、的程序,测试工作应该由独立的专业的软件测试机构来完成。独立的专业的软件测试机构来完成。3)设计测试用例时应该考虑到合法的输入和不合法的设计测试用例时应该考虑到合法的输入和不合法的输入以及各种边界条件,特殊情况要制造极端状态和输入以及各种边界条件,特殊情况要制造极端状态和意外状态,例如,网络异常中断、电源断电等情况。意外状态,例如,网络异常中断、电源断电等情况。8.7.2 软件测试的原则软件测试的原则 348.7 结构化程序的测试P.1794)一定要注意测试中的错误集中发生现象,这与程序员的编一定要注意测试中的错误集中发生现象,这与程序员的编程水平和习惯有很大的关系。程水平和习惯有很大的关系。5
23、)对测试错误结果一定要有一个确认的过程,一般有对测试错误结果一定要有一个确认的过程,一般有A测试测试出来的错误,一定要有一个出来的错误,一定要有一个B来确认,严重的错误可以召开来确认,严重的错误可以召开评审会进行讨论和分析。评审会进行讨论和分析。6)制订严格的测试计划,并把测试时间安排得尽量宽松,不制订严格的测试计划,并把测试时间安排得尽量宽松,不要希望在极短的时间内完成一个高水平的测试。要希望在极短的时间内完成一个高水平的测试。7)回归测试的关联性一定要引起充分的注意,避免修改一个回归测试的关联性一定要引起充分的注意,避免修改一个错误而引起更多的错误出现。错误而引起更多的错误出现。8)妥善保
24、存测试过程文档有重要意义,因为测试的重现性往妥善保存测试过程文档有重要意义,因为测试的重现性往往要靠测试文档。往要靠测试文档。8.7.2 软件测试的原则软件测试的原则 358.7 结构化程序的测试P.180软件测试并不等同程序测试。软件测试应该贯穿于软软件测试并不等同程序测试。软件测试应该贯穿于软件定义与开发的整个期间。件定义与开发的整个期间。因此需求分析、概要设计、详细设计以及程序编码等因此需求分析、概要设计、详细设计以及程序编码等各阶段所得到的文档,包括需求规格说明、概要设计规各阶段所得到的文档,包括需求规格说明、概要设计规格说明、详细设计规格说明以及源程序,都应该是软件格说明、详细设计规
25、格说明以及源程序,都应该是软件测试的对象。测试的对象。在对需求理解与表达的正确性、设计与表达的在对需求理解与表达的正确性、设计与表达的正确性、实现的正确性以及运行的正确性的验证正确性、实现的正确性以及运行的正确性的验证中,任何一个环节发生了问题都可能在软件测试中,任何一个环节发生了问题都可能在软件测试中表现出来。中表现出来。8.7.3 软件测试的软件测试的对象对象 368.7 结构化程序的测试P.180软件测试是一个极为复杂的过程。一个软件测试是一个极为复杂的过程。一个规范化的软件测试过程通常包括以下基本规范化的软件测试过程通常包括以下基本的测试活动。的测试活动。1)1)拟定软件测试计划。拟定
26、软件测试计划。2)2)编制软件测试大纲。编制软件测试大纲。3)3)设计和生成测试用例。设计和生成测试用例。4)4)实施测试。实施测试。5)5)生成软件问题报告。生成软件问题报告。8.7.4 软件测试的基本过程软件测试的基本过程 378.7 结构化程序的测试P.181测试的目的是以最少的测试用例集合来测试的目的是以最少的测试用例集合来测试出更多的程序中的潜在错误。测试出更多的程序中的潜在错误。如何测试得彻底,怎样设计测试用例是如何测试得彻底,怎样设计测试用例是测试的关键技术。测试的关键技术。按照测试过程是否在实际应用环境中来按照测试过程是否在实际应用环境中来分,有分,有静态分析静态分析与与动态测
27、试动态测试。8.7.5 软件测试技术软件测试技术 388.7 结构化程序的测试P.181测试方法有分析方法测试方法有分析方法(包括静态分析法与白包括静态分析法与白盒法盒法)与非分析方法与非分析方法(称黑盒法称黑盒法)。白盒法白盒法是通过分析程序内部的逻辑与执行路是通过分析程序内部的逻辑与执行路线来设计测试用例进行测试的方法,白盒法也线来设计测试用例进行测试的方法,白盒法也称逻辑驱动方法。称逻辑驱动方法。黑盒法黑盒法是功能驱动方法,仅根据是功能驱动方法,仅根据I/0数据条件数据条件来设计测试用例,而不管程序的内部结构与路来设计测试用例,而不管程序的内部结构与路径如何。径如何。8.7.5 软件测试
28、技术软件测试技术 398.7 结构化程序的测试P.181白盒法白盒法的测试用例的设计方法有语句覆的测试用例的设计方法有语句覆盖、分支盖、分支(判定判定)覆盖、条件覆盖、路径覆覆盖、条件覆盖、路径覆盖盖(或条件组合覆盖或条件组合覆盖),主要目的是提高测,主要目的是提高测试的覆盖率。试的覆盖率。黑盒法黑盒法的设计测试用例的方法有等价类的设计测试用例的方法有等价类划分法、边界值分析法、错误推测法,主划分法、边界值分析法、错误推测法,主要目的是设法以最少测试数据子集尽可能要目的是设法以最少测试数据子集尽可能多地测试软件程序的错误。多地测试软件程序的错误。8.7.5 软件测试技术软件测试技术 408.7
29、 结构化程序的测试P.181 静态分析技术静态分析技术 动态测试技术动态测试技术 黑盒测试和白盒测试黑盒测试和白盒测试8.7.5 软件测试技术软件测试技术 418.7 结构化程序的测试P.182设计测试方案是测试阶段的关键技术问题设计测试方案是测试阶段的关键技术问题。测试方案包括预定要测试的功能、应该输入的测试数测试方案包括预定要测试的功能、应该输入的测试数据和预期的结果,其中最困难的问题是设计测试用的输据和预期的结果,其中最困难的问题是设计测试用的输入数据,即测试用例。入数据,即测试用例。不同的测试数据发现程序错误的能力差别很大,为了不同的测试数据发现程序错误的能力差别很大,为了提高测试效率
30、降低测试成本,应该选用高效的测试数据提高测试效率降低测试成本,应该选用高效的测试数据。因为不可能进行穷举测试,所以选用少量最有效的测因为不可能进行穷举测试,所以选用少量最有效的测试数据,做到尽可能完备的测试。试数据,做到尽可能完备的测试。8.7.6 设计测试方案设计测试方案 428.7 结构化程序的测试P.182设计测试方案的基本目标是确定一组最可能发设计测试方案的基本目标是确定一组最可能发现某个错误或某类错误的测试数据。现某个错误或某类错误的测试数据。已经研究出许多设计测试数据的技术,这些技已经研究出许多设计测试数据的技术,这些技术各有优缺点。同一种技术在不同的应用场合效术各有优缺点。同一种
31、技术在不同的应用场合效果相差很大,因此,通常需要联合使用多种设计果相差很大,因此,通常需要联合使用多种设计测试数据的技术。测试数据的技术。白盒法白盒法黑盒法黑盒法8.7.6 设计测试方案设计测试方案 438.7 结构化程序的测试P.184与开发过程类似,测试过程也必须分步骤与开发过程类似,测试过程也必须分步骤进行,每个步骤在逻辑上是前个步骤的继续进行,每个步骤在逻辑上是前个步骤的继续。大型软件系统通常由若干个子系统组成,大型软件系统通常由若干个子系统组成,每个子系统又由许多模块组成。每个子系统又由许多模块组成。因此,大型软件系统的测试基本上由单元因此,大型软件系统的测试基本上由单元测试、集成测
32、试、确认测试和系统测试等测试、集成测试、确认测试和系统测试等4个步骤组成,如图个步骤组成,如图8-5所示。所示。8.7.7 软件软件测试的步骤测试的步骤 448.7 结构化程序的测试P.1848.7.7 软件软件测试的步骤测试的步骤图图8-5 8-5 测试步骤测试步骤 458.7 结构化程序的测试P.185单元测试单元测试集成测试集成测试确认测试确认测试系统测试系统测试验收测试验收测试8.7.7 软件软件测试的步骤测试的步骤 468.7 结构化程序的测试P.188测试是找出软件外部错误的过程,纠错是测试是找出软件外部错误的过程,纠错是在测试出错误的基础上分析错误的性质与原在测试出错误的基础上分
33、析错误的性质与原因,找出出错的位置,即找到内部错误因,找出出错的位置,即找到内部错误(称称故障故障)再加以纠正,直到测试没有错误为止再加以纠正,直到测试没有错误为止。这种根据测试出错误的外因分析找到这种根据测试出错误的外因分析找到内部原因并加以改正的代码执行与人工内部原因并加以改正的代码执行与人工活动称为纠错。活动称为纠错。8.7.8 软件纠错技术软件纠错技术 478.7 结构化程序的测试P.189纠错纠错方法主要包括如下种。方法主要包括如下种。强力法强力法跟踪法跟踪法演绎法演绎法归纳法归纳法8.7.8 软件纠错技术软件纠错技术 测试纠错法测试纠错法试凑法试凑法回归测试回归测试对分查找法对分查
34、找法 48提提 纲纲软件质量的定义软件质量的定义影响软件质量的因素影响软件质量的因素软件质量保证策略软件质量保证策略软件质量保证活动软件质量保证活动软件评审软件评审软件质量保证的标准软件质量保证的标准结构化程序的测试结构化程序的测试面向对象的软件测试面向对象的软件测试测试计划与测试分析报告测试计划与测试分析报告软件维护软件维护 498.8 面向对象的软件测试P.190 测试的目标是在现实可行的时测试的目标是在现实可行的时间间间隔内,去间隔内,去发现尽可能多的错误。发现尽可能多的错误。对面向对象软件而言,这个基本目标仍保持对面向对象软件而言,这个基本目标仍保持不变,但是面向对象程序的性质改变了测
35、试的不变,但是面向对象程序的性质改变了测试的策略和测试方法。为了充分测试策略和测试方法。为了充分测试OO系统,必须系统,必须考虑:考虑:1)1)测试的定义必须扩大包括用于测试的定义必须扩大包括用于 OOA和和 OOD 模型的错误发现技术。模型的错误发现技术。2)单元和集成测试策略必须有很大的改变。单元和集成测试策略必须有很大的改变。3)测试用例的设计必须考虑测试用例的设计必须考虑OO软件的特征。软件的特征。508.8 面向对象的软件测试P.190面向对象分析和设计模型的面向对象分析和设计模型的正确性正确性面向对象分析和设计模型的面向对象分析和设计模型的一致性一致性8.8.1 面向对象分析和设计
36、模型的面向对象分析和设计模型的模型测试模型测试 518.8 面向对象的软件测试P.192 传统的测试软件的策略是从小型测试开始,逐步走传统的测试软件的策略是从小型测试开始,逐步走向大型测试。从软件测试的角度来说,也就是从单元向大型测试。从软件测试的角度来说,也就是从单元测试开始,然后逐步进入集成测试,最后是有效性和测试开始,然后逐步进入集成测试,最后是有效性和系统测试。系统测试。在传统应用中,单元测试集中在最小的可编译程序在传统应用中,单元测试集中在最小的可编译程序单位单位(如模块、子例程、进程如模块、子例程、进程)中,一旦这些单元均被独立中,一旦这些单元均被独立测试后,它们就被集成进程序结构
37、中,这时要进行一测试后,它们就被集成进程序结构中,这时要进行一系列的回归测试以发现由于模块的接口所带来的错误系列的回归测试以发现由于模块的接口所带来的错误和新单元加入导致的副作用,最后,系统被作为一个和新单元加入导致的副作用,最后,系统被作为一个整体测试以发现在需求中的错误。整体测试以发现在需求中的错误。8.8.2 面向对象的测试策略面向对象的测试策略 528.8 面向对象的软件测试P.192 面向对象的单元测试面向对象的单元测试 面向对象的组装测试面向对象的组装测试 面向对象的确认测试面向对象的确认测试8.8.2 面向对象的测试策略面向对象的测试策略 538.8 面向对象的软件测试P.193
38、 面向对象测试集设计的概念面向对象测试集设计的概念 传统测试集设计方法的适用性传统测试集设计方法的适用性 基于故障的测试基于故障的测试 面向对象编程对测试的影响面向对象编程对测试的影响 测试外部结构和内部结构测试外部结构和内部结构8.8.3 面向对象软件测试集设计面向对象软件测试集设计 54提提 纲纲软件质量的定义软件质量的定义影响软件质量的因素影响软件质量的因素软件质量保证策略软件质量保证策略软件质量保证活动软件质量保证活动软件评审软件评审软件质量保证的标准软件质量保证的标准结构化程序的测试结构化程序的测试面向对象的软件测试面向对象的软件测试测试计划与测试分析报告测试计划与测试分析报告软件维
39、护软件维护 558.9 测试计划与测试分析报告P.195测试是软件生存周期中一个独立的测试是软件生存周期中一个独立的、关键的阶段,也是保证软件质量的、关键的阶段,也是保证软件质量的重要活动之一。重要活动之一。为了提高发现错误的概率,使测试为了提高发现错误的概率,使测试能有计划地、有条不紊地进行,就必能有计划地、有条不紊地进行,就必须编制相应的测试文档。须编制相应的测试文档。测试文档主要有测试计划和测试分测试文档主要有测试计划和测试分析报告。析报告。568.9 测试计划与测试分析报告P.195根据国家标准,与软件测试直接有关的根据国家标准,与软件测试直接有关的文档,一个是文档,一个是GB8567
40、-88计算机软件产计算机软件产品开发文件编制指南中的品开发文件编制指南中的“测试计划测试计划”和和“测试分析报告测试分析报告”;另一个是另一个是GB9286-88计算机软件测试计算机软件测试文件编制规范。文件编制规范。后者是前者的补充和细化,这样可以使后者是前者的补充和细化,这样可以使文档的书写更具体,更有参照性。文档的书写更具体,更有参照性。578.9 测试计划与测试分析报告P.195测试计划可细化为测试计划、测测试计划可细化为测试计划、测试设计说明、测试用例说明和测试试设计说明、测试用例说明和测试规格说明;规格说明;测试分析报告可细化为测试项传测试分析报告可细化为测试项传递报告、测试日志、
41、测试事件报告递报告、测试日志、测试事件报告和测试总结报告。和测试总结报告。588.9 测试计划与测试分析报告P.195测试计划测试计划的内容的内容(附录附录F P.290)F P.290)测试分析报告测试分析报告的内容的内容(附录附录G P.292)G P.292)59提提 纲纲软件质量的定义软件质量的定义影响软件质量的因素影响软件质量的因素软件质量保证策略软件质量保证策略软件质量保证活动软件质量保证活动软件评审软件评审软件质量保证的标准软件质量保证的标准结构化程序的测试结构化程序的测试面向对象的软件测试面向对象的软件测试测试计划与测试分析报告测试计划与测试分析报告软件维护软件维护 608.1
42、0 软件维护P.1968.10.1 软件维护分类与特点软件维护分类与特点1 软件维护的原因软件维护的原因在软件运行与维护阶段对软件产品所进行的在软件运行与维护阶段对软件产品所进行的修改就是维护。修改就是维护。维护的原因归结如下:维护的原因归结如下:1)1)改正在特定的使用条件下暴露出来的一些潜在程序错误改正在特定的使用条件下暴露出来的一些潜在程序错误或设计缺陷。或设计缺陷。2)2)在软件使用过程中因数据环境发生变化或处理环境发生在软件使用过程中因数据环境发生变化或处理环境发生变化,需要修改软件以适应这种变化。变化,需要修改软件以适应这种变化。3)3)用户和数据处理人员在使用时常提出改进现有功能
43、、增用户和数据处理人员在使用时常提出改进现有功能、增加新的功能及改善总体性能的要求,为了满足这些要求,加新的功能及改善总体性能的要求,为了满足这些要求,就需要修改软件并把这些要求纳入到软件之中。就需要修改软件并把这些要求纳入到软件之中。618.10 软件维护P.1978.10.1 软件维护分类与特点软件维护分类与特点2 维护的分类维护的分类 按维护性质不同,软件维护可分为按维护性质不同,软件维护可分为改正性维护、适应性维护、完善性维改正性维护、适应性维护、完善性维护和预防性维护护和预防性维护。1)软件测试不可能揭露旧系统中的所有错误。软件测试不可能揭露旧系统中的所有错误。所所以在使用过程中程序
44、还将发生错误,诊断和以在使用过程中程序还将发生错误,诊断和改正这些错误的过程称为改正这些错误的过程称为改正性维护改正性维护。628.10 软件维护P.1978.10.1 软件维护分类与特点软件维护分类与特点2 维护的分类维护的分类2)2)新新的硬件产品出现,同时新的操作系统或操作的硬件产品出现,同时新的操作系统或操作系统的新的版本也不断推出,外部设备和其他的系统的新的版本也不断推出,外部设备和其他的系统部件也经常更新或升级。系统部件也经常更新或升级。另一方面,应用软件的使用寿命一般都在另一方面,应用软件的使用寿命一般都在1010年年以上,超过了最初开发这些软件的环境的寿命以上,超过了最初开发这
45、些软件的环境的寿命。为了适应新的变化而进行的修改活动,称为为了适应新的变化而进行的修改活动,称为适适应性维护应性维护。638.10 软件维护P.1978.10.1 软件维护分类与特点软件维护分类与特点2 维护的分类维护的分类3)3)一个软件投人运行过程中,用户不断提出一个软件投人运行过程中,用户不断提出增加新功能、修改现有功能以及一般性的改增加新功能、修改现有功能以及一般性的改进要求等。进要求等。为了满足这些要求,需要进行为了满足这些要求,需要进行完善性维完善性维护护,完善性维护活动是软件维护工作的,完善性维护活动是软件维护工作的主要邵分。主要邵分。648.10 软件维护P.1978.10.1
46、 软件维护分类与特点软件维护分类与特点2 维护的分类维护的分类4)4)为了改进软件未来的可维护性或可靠性,为了改进软件未来的可维护性或可靠性,或者为了给未来的改进提供更好的基础而对或者为了给未来的改进提供更好的基础而对软件进行修改,这类活动通常叫做软件进行修改,这类活动通常叫做预防性预防性维护维护。当然这类维护比前面当然这类维护比前面3 3类要少得多。这类类要少得多。这类维护的特点是采用再造工程技术。维护的特点是采用再造工程技术。658.10 软件维护P.1978.10.1 软件维护分类与特点软件维护分类与特点2 维护的分类维护的分类从上可见,软件维护不局限于纠正错误从上可见,软件维护不局限于
47、纠正错误。统计数字表明,完善性维护占全部维护活动统计数字表明,完善性维护占全部维护活动的的5060,改正性维护占,改正性维护占1721,适,适应性维护占应性维护占1825,其他维护活动只占,其他维护活动只占4左右。左右。上述上述4类维护活动都必须应用于整个软件配置,维类维护活动都必须应用于整个软件配置,维护软件文档和维护软件的可执行代码是同样重要的。护软件文档和维护软件的可执行代码是同样重要的。668.10 软件维护P.1978.10.1 软件维护分类与特点软件维护分类与特点3 维护的维护的特点特点 结构化维护与非结构化维护结构化维护与非结构化维护 维护的代价维护的代价 与软件维护有关的部分问
48、题与软件维护有关的部分问题 678.10 软件维护P.1998.10.2 软件维护软件维护步骤步骤1 维护步骤维护步骤 分析和理解程序分析和理解程序 修改程序修改程序 分析与修改模块内容细节分析与修改模块内容细节 向用户提供回避措施向用户提供回避措施 修改代码以适应变化修改代码以适应变化 重新验证程序重新验证程序 688.10 软件维护P.2018.10.2 软件维护软件维护步骤步骤2 维护维护组织组织软件维护阶段相对来说是漫长而且不定软件维护阶段相对来说是漫长而且不定期的,期的,长期以来很少建立正式的维护组织,然长期以来很少建立正式的维护组织,然而对于一个小的软件开发队伍而言,非正而对于一个
49、小的软件开发队伍而言,非正式地定岗定责也绝对必要。式地定岗定责也绝对必要。图图8-10给出了一种组织模式。给出了一种组织模式。698.10 软件维护P.2018.10.2 软件维护软件维护步骤步骤2 维护维护组织组织图图8-10 维护的一种组织模式维护的一种组织模式 708.10 软件维护P.2018.10.2 软件维护软件维护步骤步骤2 维护维护组织组织每个维护申请通过维护管理员转告给系统管理员,系统管理每个维护申请通过维护管理员转告给系统管理员,系统管理员一般都是对程序特别熟悉的技术人员,他们对维护申请及可员一般都是对程序特别熟悉的技术人员,他们对维护申请及可能引起的软件修改进行评估,并向
50、修改控制决策机构能引起的软件修改进行评估,并向修改控制决策机构(一个或一个或一组管理者一组管理者)报告,由它最后确定是否采取行动。报告,由它最后确定是否采取行动。按这样的组织方式开展维护活动,能减少混乱和盲目性,避按这样的组织方式开展维护活动,能减少混乱和盲目性,避免因小失大的情况发生。免因小失大的情况发生。当然,上述各个岗位都不需要专职人员,但必须为胜任者,当然,上述各个岗位都不需要专职人员,但必须为胜任者,并且要早在维护活动开始之前就明确各自责任,避免互相推委并且要早在维护活动开始之前就明确各自责任,避免互相推委的现象出现。的现象出现。718.10 软件维护P.2018.10.3 软件软件