1、第 7 章 测试项目管理,软件测试技术 之,第 7 章 测试项目管理,第 7 章 测试项目管理,7.1 测试项目管理概述,7.1.1 测试项目管理 测试项目管理就是以测试项目为管理对象;通过一个临时性的专门的测试组织,运用专门的软件测试知识、技能、工具和方法,对测试项目进行计划、组织、执行和控制;并在时间成本、软件测试质量等方面进行分析和管理活动。 测试项目管理应遵循的原则:质量第一,需求可靠,时间充足,计划得当,适当引入测试自动化和测试工具,独立的测试环境。,测试项目范围管理就是界定项目所必须包含且只需包含的全部工作,并对其他的测试项目管理工作起指导作用,以确保测试工作顺利完成。,7.1.2
2、 软件测试项目的范围管理,项目目标确定后,下一步过程就是确定需要执行哪些工作,或者活动来完成项目的目标,这就是要确定一个包含项目所有活动在内的一览表。准备这样的一览表通常有两种方法: 一种是让测试小组利用“头脑风暴法”根据经验,集思广益来形成。这种方法比较适合小型测试项目。 另一种是对更大更复杂的项目建立一个工作分解结构WBS和任务的一览表。,7.1.2 软件测试项目的范围管理,工作分解结构WBS是将一个软件测试项目分解成易于管理的更多部分或细目,所有这些细目构成了整个软件测试项目的工作范围。,WBS 模 版图形类型,WBS 模 版清单类型,1. 变化计数器1.1 比较两个版本的程序1.1.1
3、 预处理1.1.2 文件比较1.1.3 结果处理1.2 找出修改后的程序中增加和删除的代码行1.2.1 找出增加的代码行1.2.2 找出删除的代码行1.3 统计修改后的程序中增加和删除的代码行数1.3.1 统计增加代码行数1.3.2 统计删除代码行数1.4 统计总的代码行数 1.5 设定标记以指示修改的次数1.6 在程序的头部增加修改纪录, WBS组织并定义了整个测试项目的范围,未列入工作分解结构的工作将排除在项目范围之外。 WBS的应用将给所有的项目管理人员提供一个一致的基准,即使项目人员变动时,也有一个互相可以理解和交流沟通的平台。,7.1.2 软件测试项目的范围管理,WBS 模 版图形类
4、型,第 7 章 测试项目管理,7.2 软件测试过程管理,7.2.1 软件项目的跟踪与质量控制 软件测试和软件开发一样,都遵循软件工程的原理,有它自己的生命周期。软件的测试过程管理基于广泛采用的“V”模型。“V”模型支持系统测试周期的任何阶段。,7.2.1 软件项目的跟踪与质量控制,V 模 型,(1) 测试可以在需求分析阶段就及早开始,在做需求分析、产品功能设计的同时,测试人员就可以阅读、审查需求分析的结果,创建测试的准则。,7.2.1 软件项目的跟踪与质量控制,(2) 当系统设计人员在做概要设计时,测试人员可以了解系统是如何实现的,基于什么样的平台,这样可以设计系统的测试方案和测试计划,并事先
5、准备系统的测试环境。,7.2.1 软件项目的跟踪与质量控制,(3) 当设计人员在做在做详细设计时,测试人员可以参与设计,对设计进行评审,找出设计的缺陷,同时设计功能、新特性等各方面的测试用例,完善测试计划。,7.2.1 软件项目的跟踪与质量控制,(4) 在编程的同时,进行单元测试,是一种很有效的办法,可以尽快找出程序中的错误,充分的单元测试可以大幅度提高程序质量、减少成本。,7.2.1 软件项目的跟踪与质量控制,测试项目启动 测试计划阶段 测试设计阶段 测试执行阶段 测试结果的审查和分析,7.2.2 软件项目的过程管理,(1) 测试项目启动 确定项目组长,组建整个测试小组; 测试小组参加有关项
6、目计划、分析和设计的会议,获得必要的需求分析、系统设计文档以及相关产品/技术知识的培训等。,7.2.2 软件项目的过程管理,(2) 测试计划阶段 确定测试范围、测试策略和方法; 对风险、日程表、资源等进行分析和估计。 制定一份测试计划,其中描述了如何实施和管理软件的测试过程,测试计划经批准生效后,将被用来作为对测试过程跟踪和监控的依据。,7.2.2 软件项目的过程管理,(3) 测试设计阶段 制订测试的技术方案、设计测试用例、选择测试工具、写测试脚本等。需要制定测试设计规格说明书,测试用例说明,测试规程规格说明。应该考虑的要点: 所设计的测试技术方案的可行性,有效性,能否达到预期的测试目标; 所
7、设计的测试用例的完整性,边界条件是否考虑,覆盖率能达到多少; 所设计的测试环境和用户的实际使用环境是否接近。,7.2.2 软件项目的过程管理,(4) 测试执行阶段 建立或测试相关的测试环境; 准备测试数据,执行测试用例; 对发现的软件缺陷进行报告、分析、跟踪等。 测试执行是测试的基础,直接关系到测试的可靠性、客观性和准确性。需要制定测试日志和缺陷总结报告。,7.2.2 软件项目的过程管理,(5) 测试结果的审查和分析 对测试结果进行整体的综合分析,以确定软件产品质量的当前状态,为产品的改进或发布提供数据和依据。制定测试总结报告。 测试结果的审查和分析主要内容包括:审查测试全过程,对当前各个缺陷
8、状态的审查,结束标志以及项目总结。,7.2.2 软件项目的过程管理,小 结 在具体的测试项目的跟踪与监控过程中,可以采用周报、日报、例会,以及里程碑评审会等方式来了解测试项目的进展情况,建立、收集和分析项目的实际状态数据,对项目进行跟踪与监控,达到项目管理的目的。,7.2.2 软件项目的过程管理,第 7 章 测试项目管理,7.3 测 试 文 档,测试文档是对要执行的软件测试及测试的结果进行描述、定义、规定和报告的任何书面或图示信息。 软件的需求分析阶段、设计阶段的内容都应该在测试文档中有所体现。测试文档对测试阶段工作的指导与评价作用是非常显著的。,促进项目组成员之间的交流沟通 便于对测试项目的
9、管理 决定测试的有效性 检验测试资源 明确任务的风险 评价测试结果 方便再测试 验证需求的正确性,7.3.1 测试文档的作用,总之,测试文档记录了测试的完整过程以及测试的结果,文档是测试过程必要的组成部分,测试文档的编写也是测试工作规范化的一个组成部分。在测试中,应该坚持按照软件系统文档标准编写和使用测试文档。,7.3.2 主要软件测试文档,主要对软件测试项目、所需要进行的测试工作、测试人员所应该负责的测试工作、测试过程、测试所需的时间和资源,以及测试风险等做出预先的计划和安排。, 测试计划, 测试计划,在测试计划中提炼测试方法,明确指出设计包含的特性以及相关的测试方法,并指定判断特性通过/失
10、败的规则。, 测试设计规格说明, 测试用例规格说明文档,有了测试设计说明,就可以按照测试设计说明的描述,对每一个测试项进行具体的测试用例设计。,用于指定执行一个测试用例集的步骤。, 测试规程,由于记录测试的执行情况不同,可根据需要选用。, 测试日志,在软件测试过程中,对于发现的大多数软件缺陷,要求测试人员简捷、清晰地把发现的问题报告给判断是否进行修复的小组,使其得到所需要的全部信息。, 软件缺陷报告,IEEE8291998软件测试文档编制标准软件缺陷报告模板目录1软件缺陷报告标识符2软件缺陷总结3软件缺陷描述 3.1 输入 3.2 期望得到的结果 3.3 实际结果 3.4 异常情况 3.5 日
11、期和时间 3.6 软件缺陷发生步骤 3.7 测试环境 3.8 再现测试 3.9 测试人员 3.10 见证人4影响, 软件缺陷报告,用于报告某个测试完成情况。, 测试总结报告,IEEE标准8291998软件测试文档编制标准测试总结报告模板目录1测试总结报告标识符2总结3差异4综合评估5结果总结5.1 已解决的意外事件5.2 未解决的意外事件6评价7建议8活动总结9审批,测试文档记录了测试的完整过程以及测试的结果,文档是测试过程必要的组成部分,测试文档的编写也是测试工作规范化的一个组成部分。在测试中,应该坚持按照软件系统文档标准编写和使用测试文档。,7.3 测 试 文 档,WBS 模 版,第 7
12、章 测试项目管理,7.4 测试的组织与人员管理,7.4.1 测试的组织与人员管理概述 测试的组织与人员管理就是对测试项目相关人员在组织形式、人员组成与职责方面所做的规划和安排。,测试的组织与人员管理的任务是: 为测试项目选择合适的组织结构模式; 合理配备人员,明确分工和责任; 对项目成员的思想、心理和行为进行有效地管理,充分发挥他们的主观能动性,密切配合实现项目的目标。,(1)尽快落实责任 从软件的生存周期看,测试往往指对程序的测试,但是,由于测试的依据是规格说明书、设计文档和使用说明书,如果设计有错误,测试的质量就难以保证。实际上,测试的准备工作在分析和设计阶段就开始了,在软件项目的开始就要
13、尽早指定专人负责,让他有权去落实与测试有关的各项事宜。,测试的组织与人员管理应注意的原则,(2)减少接口 要尽可能地减少项目组内人与人之间的层次关系,缩短通信的路径,方便人员之间的沟通,提高工作效率。(3)责任明确、均衡 项目组成员都必须明确自己在项目组中的地位、角色和职责,各成员所负的责任不应比委任的权力大,反之亦然。,测试的组织与人员管理应注意的原则,组织结构是指用一定的模式对责任、权威和关系进行安排,直至通过这种结构发挥功能。测试组织结构设计时主要考虑以下因素。 垂直还是平缓 集中还是分散 分级还是分散 专业人员还是工作人员 面向功能还是项目,7.4.2 测试人员的组织结构,进行软件测试
14、的测试组织结构形式很多, 目前常见的测试组织结构有独立的测试小组和集成的测试小组两种形式。,7.4.2 测试人员的组织结构,独立的测试小组,即主要工作是进行测试的小组,他们专门从事软件的测试工作。 测试组设组长一名,负责整个测试的计划、组织工作。测试组的其他成员由具有一定的分析、设计和测试经验的专业人员组成,人数根据具体情况可多可少,一般35人为宜。测试组长与开发组长在项目中的地位是同级、平等的关系。,1独立测试小组,独立测试小组组织形式的好处:独立测试小组会客观的对待被测试的软件,这样测试、评价软件的质量才真正有效。 面临的问题:如何在软件产品的生命周期中尽早开始工作。,1独立测试小组,集成
15、测试小组是将测试与基本设计因素组合起来,构成的测试组织结构。 这是与独立测试有关的一种集成测试组织形式,即集成测试小组是由需要向同一个项目经理汇报工作的测试人员和开发人员组成。,1集成测试小组,集成测试小组组织形式的好处:软件立项后,由测试人员和软件开发人员并肩作战,一起工作,可以减少软件开发人员和测试人员合作时的不利因素,会极大地方便交流和沟通。集成测试小组成员也是专业的测试人员。,1集成测试小组,测试的组织与人员管理的任务是: 为测试项目选择合适的组织结构模式; 合理配备人员,明确分工和责任; 对项目成员的思想、心理和行为进行有效地管理,充分发挥他们的主观能动性,密切配合实现项目的目标。,
16、测试人员的能力应包括以下几项。 一般能力:包括表达、交流、协调、管理、质量意识、过程方法、软件工程等; 测试技能及方法:包括测试基本概念及方法、测试工具及环境、专业测试标准、工作成绩评估等;,7.4.3 测试人员,测试规划能力:包括风险分析及防范、软件放行/接收准则制定、测试目标及计划、测试计划和设计的评审方法等; 测试执行能力:包括测试数据/脚本/用例、测试比较及分析、缺陷记录及处理、自动化工具; 测试分析、报告和改进能力:包括测试度量、统计技术、测试报告、过程监测及持续改进。,7.4.3 测试人员,测试组织的管理者必须具备: 了解与评价软件测试政策、标准、过程、工具、培训和度量的能力; 领
17、导一个测试组织的能力,该组织必须坚强有力、独立自主、办事规范且没有偏见; 吸引并留住杰出测试专业人才的能力; 领导、沟通、支持和控制的能力; 有提出解决问题方案的能力; 测试时间、质量和成本控制的能力。,7.4.3 测试人员,测试的组织与人员管理的任务是: 为测试项目选择合适的组织结构模式; 合理配备人员,明确分工和责任; 对项目成员的思想、心理和行为进行有效地管理,充分发挥他们的主观能动性,密切配合实现项目的目标。,激励,简单地说就是调动人的工作积极性,把潜力充分发挥出来。 在管理学中,激励是指管理者促进、诱导下属形成动机,并引导其行为指向特定目标的活动过程。,7.4.4 测试人员管理的激励
18、机制,管理者习惯用对自己有效的因素激励测试人员,很可能发现无效; 过多行使权力、资金或处罚手段很可能导致项目失败; 注意采取卓有成效的非货币形式的激励措施; 在项目进行过程中,而不仅是在项目结果时实施激励措施;,测试人员管理的激励机制的关键点,奖励应该在工作获得认同后尽快兑现; 对项目成员的工作表现出真诚的兴趣,是对他们最好的奖励; 已经满足的需要很可能不再成为激励因素。 激励因素是影响个人行为的东西,是因人而异、因时而异的。因此,管理者必须明确各种激励的方式,并合理使用。,测试人员管理的激励机制的关键点,从测试管理的角度来说,为了高效地实现测试工作的目标,需要不断地帮助他们进行知识的更新和技
19、术能力的提升,这些就需要通过培训来达到。,7.4.5 测试人员的培训,1软件测试培训内容 测试基础知识和技能培训; 测试设计培训,测试工具培训; 测试对象软件产品培训; 测试过程培训; 测试管理培训。,7.4.5 测试人员的培训,2制定测试人员培训计划 需要管理层的重视,在时间和资源上予以保证; 认真调查和分析测试人员的培训要求; 将培训活动安排在测试任务开始前; “边干边学”模式很可能牺牲质量和效率; 软件测试实习活动要在整个培训中占较大比例; 鼓励合作学习,团队演练; 对培训效果要及时评价,对发现的不足进行改进。,7.4.5 测试人员的培训,第 7 章 测试项目管理,找不到某个文件的历史版
20、本; 开发人员使用错误的版本修改程序; 开发人员未经授权修改代码或文档; 人员流动,交接工作不彻底; 已修复的Bug在新版本中出现; 无法重新编译某个历史版本; 因协同开发中,或者异地开发,版本变更混乱导致整个项目失败; ,软件项目中是否遇到如下的问题,7.5 测试的配置管理,配置管理是在团队开发中标识、控制和管理软件变更的一种管理。目的是建立和维护在软件生命周期中软件产品的完整性和一致性。 测试活动的配置管理属于整个软件项目配置管理的一部分,独立的测试组织应建立专门的配置管理系统。一般来说,软件测试配置管理包括5个最基本的活动:(1)配置标识; (2)版本控制 ;(3)变更控制; (4)配置
21、状态报告;(5)配置审计。,1配置标识 配置标识主要是标识测试样品、测试标准、测试工具、测试文档(包括测试用例)、测试报告等配置项的名称和类型。 所有配置项都应按照相关规定统一编号,按照相应的模板生成,并在文档中的规定部分记录对象的标识信息,标识各配置项的所有者及储存位置,指出何时基准化配置项,这样使得测试相关人员能方便地知道每个配置项的内容和状态。,7.5 测试的配置管理,置于基线控制之下。需要加以控制的配置项分为基线配置项和非基线配置项。所有基线配置项向测试人员开放读取权限;而非基线配置项向测试组长、项目经理及相关人员开放。,2版本控制 版本控制的目的是按照一定的规则保存配置项的所有版本,
22、避免发生版本丢失或混淆等现象,并且可以快速准确地查找到配置项的任何版本。,7.5 测试的配置管理,3变更控制 变更控制的目的并不是控制和限制变更的发生,而是对变更进行有效的管理,确保变更有序地进行。,7.5 测试的配置管理,变更控制主要包括以下内容:(1)规定测试基线,对每个基线必须描述下列内容: 每个基线的项,包括文档、样品和工具等; 与每个基线有关的评审、批准事项以及验收标准。,7.5 测试的配置管理,规定何时何人创立新的基线,如何创立; 确定变更请求的处理程序和终止条件; 确定变更请求的处理过程中各测试人员执行变更的职能; 确定变更请求和所产生结果的对应机制; 确定配置项提取和存入的控制
23、机制与方式。,7.5 测试的配置管理,4配置状态报告 配置状态报告就是根据配置项操作数据库中的记录,来向管理者报告软件测试工作的进展情况。 配置状态报告应该包括以下主要内容: 定义配置状态报告形式、内容和提交方式; 确认过程记录和跟踪问题报告,更改请求,更改次序等; 确定测试报告提交的时间与方式。,7.5 测试的配置管理,5配置审计 配置审计的主要作用是作为变更控制的补充手段,来确保某一变更需求已被切实地执行和实现。 配置审计包括以下主要内容: 确定审计执行人员和执行时机; 确定审计的内容与方式; 确定发现问题的处理方法。,7.5 测试的配置管理,第 7 章 测试项目管理,7.6 软件测试风险
24、管理,1风险的基本概念 软件风险是指开发不成功引起损失的可能性,这种不成功事件会导致公司商业上的失败。 风险分析是对软件中潜在的问题进行识别、估计和评价的过程。 软件测试中的风险分析是根据测试软件将出现的风险,制定软件测试计划,并排列优先等级。,软件风险分析的目的是确定测试对象、测试优先级,以及测试的深度。有时还包括确定可以忽略的测试对象。 通过风险分析,测试人员识别软件中高风险的部分,并进行严格彻底地测试;确定潜在的隐患软件构件,对其进行重点测试。在制定测试计划的过程中,可以将风险分析的结果用来确定软件测试的优先级与测试深度。,7.6 软件测试风险管理,2软件测试与商业风险 软件测试是一种用
25、来尽可能降低软件风险的控制措施。软件测试是检测软件开发是否符合计划,是否达到预期的结果的测试。如果检测表明软件的实现没有按照计划执行,或与预期目标不符,就要采取必要的改进行动。因此,公司的管理者应该依靠软件测试之类的措施来帮助自己实现商业目标。,7.6 软件测试风险管理,3软件风险分析 风险分析是一个对潜在问题识别和评估的过程,即对测试的对象进行优先级划分。风险分析包括以下两个部分。 发生的可能性:发生问题的可能性有多大。 影响的严重性:如果问题发生了会有什么后果。,7.6 软件测试风险管理,通常风险分析采用两种方法:表格分析法和矩阵分析法。通用的风险分析表包括以下几项内容。 风险标识:表示风
26、险事件的惟一标识; 风险问题:风险问题发生现象的简单描述; 发生可能性:风险发生可能性的级别(110);,7.6 软件测试风险管理,影响的严重性:风险影响的严重性的级别(110); 风险预测值:风险发生可能性与风险影响的严重性的乘积; 风险优先级:风险预测值从高向低的排序。,7.6 软件测试风险管理,综上所述,软件风险分析的目的是:确定测试对象、确定优先级,以及测试深度。在测试计划阶段,可以用风险分析的结果来确定软件测试的优先级。对每个测试项和测试用例赋予优先代码,将测试分为高、中和低的优先级类型,这样可以在有限的资源和时间条件下,合理安排测试的覆盖度与深度。,7.6 软件测试风险管理,4软件
27、测试风险 软件测试的风险是指软件测试过程出现的或潜在的问题,造成的原因主要是测试计划的不充分、测试方法有误或测试过程的偏离,造成测试的补充以及结果不准确。测试的不成功导致软件交付潜藏着问题,一旦在运行时爆发,会带来很大的商业风险。,7.6 软件测试风险管理,主要是对测试计划执行的风险分析与制定要采取的应急措施,降低软件测试产生的风险造成的危害。 测试计划的风险一般指测试进度滞后或出现非计划事件,就是针对计划好的测试工作造成消极影响的所有因素,对于计划风险分析的工作是制定计划风险发生时应采取的应急措施。,7.6 软件测试风险管理,其中,交付日期的风险是主要风险之一。测试未按计划完成,发布日期推迟
28、,影响对客户提交产品的承诺,管理的可信度和公司的信誉都要受到考验,同时也受到竞争对手的威胁。交付日期的滞后,也可能是已经耗尽了所有的资源。计划风险分析所做的工作重点不在于分析风险产生的原因,重点应放在提前制定应急措施来应对风险发生。当测试计划风险发生时,可能采用的应急措施有:缩小范围、增加资源、减少过程等措施。,7.6 软件测试风险管理,将采用的应急措施如下。 应急措施1:增加资源。请求用户团队为测试工作提供更多的用户支持。 应急措施2:缩小范围。决定在后续的发布中,实现较低优先级的特性。 应急措施3:减少质量过程。在风险分析过程中,确定某些风险级别低的特征测试,或少测试。,7.6 软件测试风
29、险管理,上述列举的应急措施要涉及到有关方面的妥协,如果没有测试计划风险分析和应急措施处理风险,开发者和测试人员采取的措施就比较匆忙,将不利于将风险的损失控制到最小。因此,软件风险分析和测试计划风险分析与应急措施是相辅相成的。,7.6 软件测试风险管理,由上面分析可以看出,计划风险、软件风险、重点测试、不测试,甚至整个软件的测试与应急措施都是围绕“用风险来确定测试工作优先级”这样的原则来构造的。软件测试存在着风险,如果提前重视风险,并且有所防范,就可以最大限度减少风险的发生。在项目过程中,风险管理的成功取决于如何计划、执行与检验每一个步骤。遗漏任何一点,风险管理都不会成功。,7.6 软件测试风险
30、管理,第 7 章 测试项目管理,7.7 软件测试的成本管理,7.7.1 软件测试成本管理概述 软件测试项目成本管理就是根据企业的情况和软件测试项目的具体要求,利用公司既定的资源,在保证软件测试项目的进度、质量达到客户满意的情况下,对软件测试项目成本进行有效的组织、实施、控制、跟踪、分析和考核等一系列管理活动,最大限度地降低软件测试项目成本,提高项目利润。,成本管理的过程包括: 资源计划:包括决定为实施软件测试项目需要使用什么资源以及每种资源的用量,资源需求清单。 成本估算:包括估计完成软件测试项目所需西元成本的近似值。其主要输出是成本管理计划。 成本预算:包括将整个成本估算配置到各单项工作,以
31、建立一个衡量绩效的基准计划。其主要输出是成本基准计划。 成本控制:包括控制软件测试项目运算的变化,其主要输出修正的成本估算、更新预算、纠正行动和取得的教训。,7.7 软件测试的成本管理,7.7.2 软件测试成本管理的一些基本概念 对于一般项目,项目的成本主要由项目直接成本、管理费用和期间费用等构成。 直接成本:指与项目有直接关系的成本费用,是与项目直接对应的,包括直接人工费用、直接材料费用和其他直接费用;项目管理费用:指为了组织、管理和控制项目所发生的费用,一般是简介费用;期间费用:与项目的完成没有直接关系,费用的发生基本上项目业务量的增减所影响。例如,日常的行政管理费用、医疗保险费用等。,7
32、.7 软件测试的成本管理,1测试费用有效性 风险承受的确定,从经济学的角度考虑就是确定需要完成多少测试,以及进行什么类型的测试。经济学所做的判断,确定了软件存在的缺陷是否可以接受,如果可以,能承受多少。测试的策略不再主要由软件人员和测试人员来确定,而是由商业的经济利益来决定的。,7.7 软件测试的成本管理,“太少的测试是犯罪,而太多的测试是浪费。”对风险测试得过少,会造成软件的缺陷和系统的瘫痪;而对风险测试得过多,就会使本来没有缺陷的系统进行没有必要的测试,或者是对轻微缺陷的系统所花费的测试费用远远大于它们给系统造成的损失。,7.7 软件测试的成本管理,测试费用的有效性,可以用测试费用的质量曲
33、线来表示,如图7-1所示。随着测试费用的增加,发现的缺陷也会越多,两线相交的地方是过多测试开始的地方,这时,排除缺陷的测试费用超过了缺陷给系统造成的损失费用。,7.7 软件测试的成本管理,图7-1 测试费用的质量曲线,2测试成本控制 测试成本控制也称为项目费用控制,就是在整个测试项目的实施过程中,定期收集项目的实际成本数据,与成本的计划值进行对比分析,并进行成本预测,及时发现并纠正偏差,使项目的成本目标尽可能好地实现。,7.7 软件测试的成本管理,测试工作的主要目标是使测试产能最大化,也就是,要使通过测试找出错误的能力最大化,而检测次数最小化。测试的成本控制目标是使测试开发成本、测试实施成本和
34、测试维护成本最小化。 在软件产品测试过程中,测试实施成本主要包括:测试准备成本、测试执行成本和测试结束成本。,7.7 软件测试的成本管理,(1) 测试准备成本控制 目标是使时间消耗总量、劳动力总量最小化。(2) 测试执行成本控制 目标是使总执行时间和所需的测试专业设备尽可能地减少。,7.7 软件测试的成本管理,对部分重新测试进行合理的选择,将风险降至最低,而成本同样会很高,必须将其与测试执行成本进行比较,权衡利弊。利用测试自动化,进行重新测试,其成本效益是较好的。部分重新测试选择方法有两种: (1) 对由于程序变化而受到影响的每一部分进行重新测试; (2) 对与变化有密切和直接关系的部分进行重
35、新测试。,7.7 软件测试的成本管理,(3)测试结束成本控制 (4)降低测试实施成本 (5)降低测试维护成本 降低测试维护成本,与软件开发过程一样,加强软件测试的配置管理,所有测试的软件样品、测试文档(测试计划、测试说明、测试用例、测试记录、测试报告)都应置于配置管理系统控制之下。降低测试维护工作成本主要考虑:,7.7 软件测试的成本管理, 对于测试中出现的偏差要增加测试; 采用渐进式测试,以适应新变化的测试; 定期检查维护所有测试用例,以获得测试效果的连续性。,7.7 软件测试的成本管理,保持测试用例效果的连续性是重要的措施,有以下几个方面: 每一个测试用例都是可执行的,即被测产品功能上不应
36、有任何变化; 基于需求和功能的测试都应是适合的,若产品需求和功能发生小的变化,不应使测试用例无效; 每一个测试用例不断增加使用价值,即每一个测试用例不应是完全冗余的,连续使用,应是成本效益高的。,7.7 软件测试的成本管理,3质量成本 测试是一种带有风险性的管理活动,可以使企业减少因为软件产品质量低劣,而花费不必要的成本。,7.7 软件测试的成本管理,(1)质量成本要素 质量成本要素主要包括一致性成本和非一致性成本。一致性成本是指用于保证软件质量的支出,包括预防成本和测试预算,如测试计划、测试开发、测试实施费用。,7.7 软件测试的成本管理,非一致性成本是由出现的软件错误和测试过程故障(如延期
37、、劣质的发布)引起的。这些问题会导致返工、补测、延迟。追加测试时间和资金就是一种由于内部故障引起的非一致性成本。非一致性成本还包括外部故障(软件遗留错误影响客户)引起部分。一般情况下,外部故障非一致性成本要大于一致性成本与内部故障非一致性成本之和。,7.7 软件测试的成本管理,(2)质量成本计算 质量成本一般按下式计算:质量成本 = 一致性成本 + 非一致性成本,7.7 软件测试的成本管理,4缺陷探测率 缺陷探测率是另一个衡量测试工作效率的软件质量成本的指标。缺陷探测率=测试发现的软件缺陷数/(测试发现的软件缺陷数+客户发现并反馈技术支持人员进行修复的软件缺陷数),7.7 软件测试的成本管理,
38、测试投资回报率可按下式计算:投资回报率 = 利润 / 测试投资100%,7.7 软件测试的成本管理,例,假设对一个客户管理软件进行测试。 属于质量预防方面的一致性成本只考虑软件测试的投资; 把发布之前、之后发现及修改的错误看成非一致性成本; 假设发现的错误为300个,故障成本已知,测试过程的估算如下:,例,在开发过程单元测试阶段,软件开发人员发现及修改一个错误需要50元; 建立独立的测试进行系统和集成测试,测试人员发现错误,开发人员修改后,测试人员再确认,一个错误需要花费300元; 在产品发布后,由客户发现,报告技术支持人员,相关开发人员修改,测试组再进行回归测试,一个错误需要花费2000元。
39、,例,第一种情况:开发单位未建立独立测试队伍,有开发人员进行测试,发现100个错误,而产品发布后客户发现错误200个,则只存在故障成本构成的总成本为405000元,缺陷探测率为33.3%; 第二种情况:建立了独立测试队伍,进行手工测试。投资预算人员费用为60000元,测试环境使用费为8000元,测试投资(一致性成本)为68000元,开发过程中开发人员修改100个错误,测试人员发现错误150个,而产品发布后客户发现50个错误,总质量成本下降到218000元,手工测试总质量成本节约了187000元,即为利润。投资回报率为275%,缺陷探测率为83.3%。,例,第三种情况:开发单位在独立测试中,采用
40、自动测试工具,投资中增加10000元的工具使用费,测试投资(一致性成本)为78000元。由于使用测试工具,测试人员在测试中发现错误增加到190个,在产品发布后,客户发现错误下降到10个。总质量成本下降到160000元,比未建立独立测试前节约了245000元,投资回报率为314%,缺陷探测率为96.7%。,因此,建立独立的测试组织,选择好的测试方案,不但软件缺陷的探测率高,还能有效的控制软件的风险,提高软件质量,而且降低了软件的质量成本,测试的投资回报率也明显提高。,7.7.3 软件测试成本管理的基本原则和措施,当一个测试项目开始后,就会发生一些不确定的事件。测试项目的管理者一般都在一种不能够完
41、全确定的环境下管理项目,项目的成本费用可能出现难以预料的情况,因此,必须有一些可行的措施和办法,来帮助测试项目的管理者进行项目成本管理,实施整个软件测试项目生命周期内的成本度量和控制。,7.7 软件测试的成本管理,1. 软件测试项目成本的控制原则 (1) 坚持成本最低化原则 (2) 坚持全面成本控制原则 (3) 坚持动态控制原则(项目的中间控制) (4) 坚持项目目标管理原则 (5) 坚持责、权、利相结合的原则(肩负成本控制责任的同时,享有成本控制的权利,同时要对成本控制中的业绩进行定期的检查和考评,实行有奖有罚),7.7 软件测试的成本管理,2. 软件测试项目成本控制措施 (1) 组织措施
42、项目负责人应全面组织软件测试项目的成本管理工作,及时掌握和分析盈亏状况,并迅速采取有效措施; 测试人员应在保证质量、按期完成任务的前提下尽可能采取先进技术,以降低工程成本; 财务工作人员应及时分析项目的财务收支状况,合理调度资金。,7.7 软件测试的成本管理,(2) 技术措施 一是制定先进的、经济合理的测试方案,以达到缩短工期、提高质量、降低成本的目的; 二是软件测试过程中努力寻求各种降低消耗、提高工效的新工艺、新技术等降低成本的技术措施; 三是严把质量关,杜绝返工现象,缩短验收时间,节省费用开支。,7.7 软件测试的成本管理,(3) 经济措施 一是人工费控制管理,主要是改善劳动组织,减少窝工浪费;实行合理的奖惩制度;加强技术教育和培训工作;加强劳动纪律,严格控制非测试人员比例; 二是材料费控制管理,减少各个环节的损耗,节约费用; 三是软件测试工具费控制管理,主要是正确选配和合理利用软件测试工具,提高利用率和测试效率; 四是间接费及其它直接费控制。,7.7 软件测试的成本管理,