软件测试基础教程杜文洁 景秀丽 主编中国水利水电出版社第十章 软件测试质量保证第十章 软件测试质量保证
10.1 软件质量保证与软件测试
10.2 软件测试管理和软件测试团队职责
10.3 ISO 9000标准
10.4 能力成熟度模型习题本章概要
软件质量的定义
软件质量与软件测试的关系
软件质量的测试管理及测试团队的职责
影响软件质量的因素,ISO 9000标准及能力成熟度模型( CMM)。
第十章 软件测试质量保证
10.1.1 软件质量保证
10.1.2软件质量保证与软件测试的关系
10.1 软件质量保证与软件测试第十章 软件测试质量保证
10.1 软件质量保证与软件测试
软件质量,是贯穿软件生存期的一个极为重要的问题。是软件开发过程中所使用的各种开发技术和验证方法的最终体现。因此,在软件生存期中要特别重视质量的保证,以生成高质量的软件产品。
第十章 软件测试质量保证
10.1.1 软件质量保证
软件质量 (SoftWare Quality )
软件质量是一个软件企业成功的必要条件,其重要性无论怎样强调都不过分。软件质量与传统意义上的质量概念并无本质差别,只是针对软件的某些特性进行了调整。
软件质量由三部分构成:
软件产品的质量,即满足使用要求的程度。
软件开发过程的质量,即能否满足开发所带来的成本、时间和风险等要求。
软件在其商业环境中所表现的质量。
总结起来,高品质软件应该是相对的无产品缺陷或只有极少量的缺陷,它能够准时递交给客户,所花费用都在预算内,
并且满足客户需求,是可维护的。但是,有关质量好坏的最终评价依赖于用户的反馈。
第十章 软件测试质量保证
10.1.1 软件质量保证
软件质量具有以下 3个特性:
可说明性:用户可以基于产品或服务的描述和定义加以使用。
有效性:产品或服务对于客户的需求是否能保持有效,如具有 99.99%有效性,可以说达到质量要求。
易用性:对于用户,产品或服务非常容易使用并且一定是非常有用的功能。
第十章 软件测试质量保证
10.1.1 软件质量保证
过程质量探索复杂系统开发过程的秩序,按一定规程工作,
可以较合理地达到目标。规程由一系列活动组成,
形成方法体系,建立严格的工程控制方法,要求每一个人都要遵守工程规范。目前主要流行的过程改进模型有以下几种。
软件能力成熟度模型( CMM)
国际标准过程模型 ISO9000
这些内容在本章 10.3,10.4中将会介绍。
第十章 软件测试质量保证
10.1.1 软件质量保证
软件的质量保证就是向用户及社会提供满意的高质量的产品,进一步地说,软件的质量保证活动也和一般的质量保证活动一样,是确保软件产品从诞生到消亡为止的所有阶段的质量的活动。即为了确定、达到和维护需要的软件质量而进行的所有有计划、有系统的管理活动。
第十章 软件测试质量保证
10.1.2软件质量保证与软件测试的关系我们如何保证产品质量,任何形式的产品都是多个过程得到的结果,因此对过程进行管理与控制是提高产品质量的一个重要途径,对于一个软件项目,质量保证活动是自始至终的,它的管理对象是软件过程,是对过程的管理。
影响 SQA活动效果的重要因素:
知识结构 ;
经验 ;
依据 ;
全员参与 ;
把握重点。
SQA的活动:
总的来说协调、审查、促进和跟踪,获取有用信息,形成分析结果以指导软件过程。
10.1.2软件质量保证与软件测试的关系
软件质量保证与软件测试的关系
软件质量保证与软件测试二者之间既存在包含又存有交叉的关系。
软件测试能够找出软件缺陷,确保软件产品满足需求。但是测试不是质量保证,二者并不等同。测试可以查找错误并进行修改,从而提高软件产品的质量。软件质量保证则是避免错误以求高质量,并且还有其他方面的措施以保证质量问题。
从共同点的角度看,软件测试和软件质量保证的目的都是尽力确保软件产品满足需求,从而开发出高质量的软件产品。两个流程都是贯穿整个软件开发生命周期中。正规的软件测试系统主要包括:制定测试计划、测试设计、实施测试、建立和更新测试文档。而软件质量保证的工作主要为:制定软件质量要求、组织正式审查、软件测试管理、对软件的变更进行控制、对软件质量进行度量、对软件质量情况及时记录和报告。软件质量保证的职能是向管理层提供正确的可行信息,从而促进和辅助设计流程的改进。软件质量保证的职能还包括监督测试流程,这样测试工作就可以被客观地审查和评估,同时也有助于测试流程的改进。
二者的不同之处在于软件质量保证工作侧重对软件开发流程中的各个过程进行管理与控制,杜绝软件缺陷的产生。而测试则是对已产生的软件缺陷进行修复。
第十章 软件测试质量保证
10.2.1软件测试的组织
10.2.2软件测试的管理
10.2.3.测试团队总的职责
10.2.4 软件开发和测试过程的组织结构与职责划分
10.2,软件测试管理和软件测试团队职责第十章 软件测试质量保证
10.2,软件测试管理和软件测试团队职责
随着软件开发规模的增大、复杂程度的增加,以寻找软件中的错误为目的的测试工作就显得更加困难。统计表明,开发较大规模的软件,有 40%以上的精力是耗费在测试上的,即使富有经验的程序员,也难免在编码中发生错误,何况有些错误在设计甚至分析阶段就已埋下祸根,无论是早期潜伏下来的错误或编码中新引入的错误,若不及时排除,轻者降低软件的可靠性,重者导致整个系统的失败。为了尽可能多地找出程序中的错误,
生产出高质量的软件产品,加强对测试工作的组织和管理就显得尤为重要。
第十章 软件测试质量保证
10.2.1软件测试的组织
1,测试的过程及组织
根据软件测试计划,由一位对整个系统设计熟悉的设计人员编写测试大纲,明确测试的内容和测试通过的准则,设计完整合理的测试用例,以便系统实现后进行全面测试。
当软件由开发人员完成并检验后,提交测试组,由测试负责人组织测试,测试一般可以下列方式组织:
(1)编写测试大纲、测试用例
测试人员要仔细阅读有关资料,包括规格说明、设计文档、
使用说明书及在设计过程中形成的测试大纲、测试内容及测试的通过准则,全面熟悉系统,编写测试计划,设计测试用例,作好测试前的准备工作。
(2)将测试过程分阶段
软件测试过程按各测试阶段的先后顺序可分为单元测试、
集成测试、确认(有效性)测试、系统测试和验收(用户)
测试 5个阶段。
第十章 软件测试质量保证
10.2.1软件测试的组织
2,测试人员组织
人是测试工作中最有价值也是最重要的资源,没有一个合格的负责人、积极的测试小组,测试就不可能实现。为高质高效地完成测试任务,应该组织测试人员进行集体学习,做到如下几点:
(1)测试项目的负责人必须做到:把要做的事情理清楚;把要达到的目的说清楚;把做事情的思路和方法理清楚;把合理的资源调配到合适的位臵上,让兴趣和能力结合。我觉得从大的方面就需要先将这些事情理清楚了,才可能使得一个团队具有非常的战斗力。组织测试人员定期培训,让团队的每个人具备应有的沟通能力、技术能力、自信心、怀疑精神、自我督促能力和洞察力。
(2)组织测试人员进行工作总结,在什么地方容易犯错误,犯什么类型的错误,犯错误的原因是什么。那么就需要对各种错误进行统计,
以找到问题的根本原因。就问题而讨论问题,问题的实质出在那里,
然后改进。
(3)组织测试人员提出意见,因为如果一个团队要发展,是需要大家一起努力的,但是做起来很难。避免一言堂,让大家充分参与到设计中,在其中找到自我的感觉,这样每一个人才能关心项目的每一个角落,工作才能更有效率。
第十章 软件测试质量保证
10.2.1软件测试的组织
3,软件测试文件组织
软件测试文件描述要执行的软件测试及测试的结果。由于软件测试是一个很复杂的过程,同时也是设计软件开发其他一些阶段的工作,对于保证软件的质量和它的运行有着重要意义,必须把对它们的要求、过程及测试结果以正式的文件形式写出。测试文件的编写是测试工作规范化的一个组成部分。 测试文件不只在测试阶段才考虑,它在软件开发的需求分析阶段就开始着手,
因为测试文件与用户有着密切的关系。在设计阶段的一些设计方案也应在测试文件中得到反映,以利于设计的检验。测试文件对于测试阶段工作的指导与评价作用更是非常明显的。需要特别指出的是,在已开发的软件投入运行的维护阶段,常常还要进行再测试或回归测试,这时仍须用到测试文件。
(1)测试文件的类型
根据测试文件所起的作用不同,通常把测试文件分成两类,即测试计划和测试分析报告。测试计划详细规定测试的要求,包括测试的目的和内容、
方法和步骤,以及测试的准则等。由于要测试的内容可能涉及到软件的需求和软件的设计,因此必须及早开始测试计划的编写工作。通常,测试计划的编写从需求分析阶段开始,到软件设计阶段结束时完成。测试报告用来对测试结果的分析说明,经过测试后,证实了软件具有的能力,以及它的缺陷和限制,并给出评价的结论性意见,这些意见即是对软件质量的评价,又是决定该软件能否交付用户使用的依据。由于要反映测试工作的情况,自然要在测试阶段内编写。
第十章 软件测试质量保证
10.2.1软件测试的组织
(2)测试文件的使用
测试文件的重要性表现在以下几个方面:
验证需求的正确性:测试文件中规定了用以验证软件需求的测试条件,研究这些测试条件对弄清用户需求的意图是十分有益的。
检验测试资源:测试计划不仅要用文件的形式把测试过程规定下来,还应说明测试工作必不可少的资源,进而检验这些资源是否可以得到,即它的可用性如何。如果某个测试计划已经编写出来,但所需资源仍未落实,那就必须及早解决。
明确任务的风险:有了测试计划,就可以弄清楚测试可以做什么,不能做什么。了解测试任务的风险有助于对潜伏的可能出现的问题事先作好思想上和物质上的准备。
生成测试用例:测试用例的好坏决定着测试工作的效率,选择合适的测试用例是作好测试工作的关键。在测试文件编制过程中,按规定的要求精心设计测试用例有重要的意义。
评价测试结果:测试文件包括测试用例,即若干测试数据及对应的预期测试结果。完成测试后,将测试结果与预期的结果进行比较,便可对已进行的测试提出评价意见。
再测试,测试文件规定的和说明的内容对维护阶段由于各种原因的需求进行再测试时,是非常有用的。
决定测试的有效性,完成测试后,把测试结果写入文件,这对分析测试的有效性,甚至整个软件的可用性提供了依据。同时还可以证实有关方面的结论。
第十章 软件测试质量保证
10.2.1软件测试的组织
(3)测试文件的编制
在软件的需求分析阶段,就开始测试文件的编制工作,各种测试文件的编写应按一定的格式进行。
第十章 软件测试质量保证
10.2.2软件测试的管理
在前面介绍了软件测试是软件质量保证的关键步骤。为了真正做好软件测试工作,系统地建立一个软件测试管理体系是非常重要的,只有这样才能确保软件测试在软件质量保证中发挥应有的关键作用。
建立软件测试管理体系有以下几个方面:
1.确定软件测试的每个阶段:制定测试计划、测试设计、实施测试、
建立和更新
测试文档以及测试管理。
2.确定阶段间的相互关系。制定测试计划、测试设计、实施测试三个阶段是按顺序依次进行并且相互作用,阶段间衔接是规范化的,即每个阶段有开始标志和结束标志。测试管理是对这三个阶段进行监督和管理。建立和更新测试文档则贯穿整个测试流程。
3.确定进行各阶段测试所需要的标准和策略,掌握其相关文档。
4.确定监督、管理和控制各测试阶段的准则和方法。
5.确保可以获得必要的资源和信息,以支持测试流程的正常进行和监督工作的顺利开展。
6.为了提高测试质量,实行适当改进措施。
第十章 软件测试质量保证
10.2.2软件测试的管理
软件测试管理的主要内容如下:
( 1)软件产品的监督和测量
对软件产品的质量特性进行监督和测量,主要依据软件需求规格说明书,验证产品是否满足要求。所开发的软件产品是否可以交付,要预先设定质量度量指标并进行测试,只有符合预先设定的指标才可以交付。
( 2)对不符合要求产品的识别和控制
对于软件测试中发现的软件缺陷,要认真记录它们的属性和处理办法,
并进行跟踪,直至最终解决。在修复软件缺陷之后,要再次进行验证测试。
( 3)软件过程的监督和测量
从软件测试中可以获取大量关于软件过程及其结果的数据和信息,它们可用于判断这些过程的有效性,为软件过程的正常运行和持续改进提供决策依据。
( 4)产品设计和开发的验证
通过设计测试用例对需求分析、软件设计、程序代码进行验证,确保程序代码与软件设计说明书一致,软件设计说明书与需求规格说明书一致。对于验证中发现的不合格现象,同样要认真记录和处理,并跟踪解决。解决之后,也要再次进行验证。
第十章 软件测试质量保证
10.2.3.测试团队总的职责
组织一支优秀的测试团队是做好软件测试工作的基本保障。
良好的组织结构和人员划分会促进测试工作的顺利开展和实施,提高软件测试的效率和质量,从而大大提高软件产品的开发效率和产品质量。
在科学的管理体系下,软件测试团队各个成员要明确自身责任,既要完成本职工作又要相互协调好,为整个测试流程负责。软件测试人员的基本责任应该包括:
尽早发现软件产品中的所有问题。
督促软件开发人员及时解决测试中发现的缺陷。
除了上述两个基本责任,软件测试团队的责任还包括:
帮助项目管理人员制定合理的产品开发计划。
对软件产品中的问题进行分析和跟踪调查,形成文档,以便让项目管理人员和相关产品开发人员对当前产品的质量情况有全面的了解。
协助完善软件开发流程,提高产品开发的效率。
10.2.4 软件开发和测试过程的组织结构与职责划分
图 10-1表示的是软件开发和测试过程中的组织结构。参与整个软件生产流程的人员种类很多,结构图中列举了代表性的开发和测试人员。
其中,产品经理和产品开发代表是核心领导。以软件开发经理为首的开发部门和以软件测试经理为首的测试部分既各有分工又需要相互合作,共同开发软件,确保软件质量符合设计标准。
在需求分析阶段中,软件开发人员的职责如下:
1.软件开发项目经理的职责是:
带领项目组分析审核工作任务书。
带领项目组与系统工程师进行需求交流并进行分析和文档化。
需求跟踪。
2.软件开发工程师的职责是:
完成软件需求说明书( SRS)文档。
完成需求跟踪。
参加 SRS审查。
根据 SRS评审专家意见,修改 SRS文档。
第十章 软件测试质量保证
10.2.4 软件开发和测试过程的组织结构与职责划分
3.开发代表:
与项目组一起审查项目任务书。
在评审结束后,批准 SRS文档。
在需求分析阶段中,软件测试人员的职责如下:
( 1)质量保证 /软件测试经理
监督项目组遵循需求管理流程。
参加 SRS审查。
保证相关组参加 SRS审查。
第十章 软件测试质量保证
10.2.4 软件开发和测试过程的组织结构与职责划分第十章 软件测试质量保证产品经理产品开发代表软件开发经理软件测试项目经理软件开发项目经理软件测试经理程序员 测试员图 10-1 软件开发和测试过程中的组织结构
10.2.4 软件开发和测试过程的组织结构与职责划分
( 2)软件测试项目经理
参与开发人员的软件需求分析,提出可测试性需求。
组织人员参与 SRS的评审工。;
组织软件系统测试计划写作。
组织软件系统测试方案写作。
( 3)软件测试工程师
参与 SRS评审工作。
协助软件测试项目经理完成软件系统测试计划写作。
协助软件测试经理完成软件系统测试方案写作。
第十章 软件测试质量保证
10.2.4 软件开发和测试过程的组织结构与职责划分
在软件设计阶段中,软件开发人员的职责如下:
( 1)软件开发项目经理
在项目计划中标识设计活动并确保有足够的资源。
从项目成员中标识出设计人员,负责设计工作。
确保设计人员按照本流程开发相应的设计说明书 (HLD和 LLD) 。
确保按照审查规程进行设计的审查 。
批准设计说明书 (HLD 和 LLD) 。
确保更新了需求跟踪矩阵。
确保设计文档按照配臵管理流程来控制。
( 2)软件开发工程师
完成设计文档。
完成需求跟踪。
参加设计文档审查。
根据评审专家意见,修改设计文档。
( 3)相关评审专家
针对设计文档,提交评审意见。
参加设计文档的评审会议。
确认修改后的意见。
第十章 软件测试质量保证
10.2.4 软件开发和测试过程的组织结构与职责划分
在软件设计阶段中,软件测试人员的职责如下:
( 1)质量保证 /软件测试经理
监督项目组遵循软件设计流程。
参加设计审查。
保证相关组参加设计审查。
( 2)软件测试项目经理
组织所有的测试活动。
制定测试策略。
确保测试活动有合适的计划。
审核并批准单元测试和集成测试的测试计划。
确保所有分配需求被跟踪和验证。
确保测试策略在签发后基线化,单元测试计划( UTP)、集成测试计划( ITP)、系统测试计划( STP)在审查和批准后基线化。
说明:基线是指一个被正式评审和批准的规格和产品,作为进一步开发的一个基础,
并且必须通过正式的变更流程来变更。
( 3)软件测试工程师
准备测试计划( STP/UTP/ITP)。
撰写单元测试( UT) /集成测试( IT) /系统测试( ST)测试用例。
完成需求跟踪。
第十章 软件测试质量保证
10.2.4 软件开发和测试过程的组织结构与职责划分
软件测试执行阶段,软件测试人员的职责如下:
( 1)软件开发项目经理
确保缺陷分发给相关软件工程师并及时得到解决。
参与需求变更评审。
( 2)软件开发工程师
修正缺陷。
验证相关的缺陷已经被修正。
( 3)软件测试项目经理
组织所有的测试活动。
确保选择适合的测试工具以及测试环境的建立。
确保测试活动的计划得到执行和获得资源。
确保缺陷分发给相关软件工程师并及时得到解决。
审核并批准测试报告。
审核并批准测试状态报告。
( 4)软件测试工程师
搭建测试环境。
执行测试用例。
将测试中发现的所有缺陷填写在缺陷报告中。
回归测试。
准备测试报告。
测试期间,每周准备测试状态报告。
第十章 软件测试质量保证
10.3 ISO 9000标准
近年来,国际上影响最为深远的质量管理标准当属国际标准化组织于 1987年公布的 ISO 9000系列标准了。这一国际标准发源于欧洲经济共同体,但很快就波及美国、日本及世界各国。到目前为止,已有 70多个国家在它们的企业中采用和实施这一系列标准。一套国际标准在如此短的时间内为这么多的国家采用,影响如此广泛,实属罕见。中国对此也十分重视,采取了积极态度。一方面确定对其等同采用,发布了与其相应的质量管理国家标准系列
GB/T19000;同时积极组织实施和开展质量认证工作。计算机软件行业自然也和其他领域一样被席卷进去。
ISO 9000有两个显著特点:
它的目标在于开发过程,而不是产品。它关心的是进行工作的组织方式而不是工作成果。
ISO 9000只决定过程的要求是什么,而不管如何达到。
第十章 软件测试质量保证
10.3 ISO 9000标准
ISO 9000标准中针对软件的部分是 ISO 9001和 ISO 9000-3。 ISO 9001
负责设计、开发、生产、安装和服务产品方面的事务。 ISO 9000-3负责开发、供应、安装和维护计算机软件方面的事务。
ISO 9000-3的核心内容包括:
合同评审。
需方需求规格说明。
开发计划。
质量计划。
设计和实现。
测试和确认。
验收。
复制、交付和安装。
维护。
第十章 软件测试质量保证
10.3 ISO 9000标准
1.合同评审
在投标、接受合同或订单之前,供方应对标书、合同或订单进行评审,以确保如下方面的实施:
各项要求都有明确规定并形成文件。在以口头方式接到订单,而对要求没有书面说明情况下,供方应确保订单的要求在其接受之前得到同意。
任何与投标不一致的合同或订单的要求已经得到解决。
供方具有满足合同或订单要求的能力。
需方需求规格说明
在某一具体项目进行开发前,应具有一套该项目的完整、精确、无歧义的功能需求,这些需求应包括需方的所有要求。该需求应足以成为产品验收确认时的依据。
在制订需求规格说明时应注意:
双方指定专人负责。
需求认可和更改的批准。
防止误解,定义好术语,对需求的前景进行说明。
记录和评审双方讨论的结果,以备将来查询某些需求、确定原因时使用。
第十章 软件测试质量保证
10.3 ISO 9000标准
2.开发计划
在项目进行前制定开发计划,作为总体的策划,指导整个项目有序的进行。
开发计划要求包括以下方面:
项目定义。
项目资源组织管理。
开发阶段。
进度。
确定质量保证计划、测试计划、集成计划等。
设计和实现
设计和实现活动是将需求规格说明转化为软件产品的过程。为保证软件产品的质量,这些活动必须在严格规定的方法下进行,不能依赖于事后的审查监督。
设计
设计阶段要满足各阶段的共同要求,此外,设计阶段还应考虑如下几方面
选用适合所开发产品类型的设计方法。
总结、吸取以往项目的经验教训。
设计应考虑软件以后的测试、维护和使用。
第十章 软件测试质量保证
10.3 ISO 9000标准
3.实现
规定编程规则、编程语言、命名约定、编码和注释规则等,要求在实现过程中严格遵守既定开发规则,选用合适的方法和工具实现产品。
4.评审
为使需求规格说明得以满足,上述规则方法得以实施,必须以评审的方式加以保证。直到所有被发现的缺陷被消除,或确定缺陷的风险可被控制后,才能进入下一步的设计或实现工作。
第十章 软件测试质量保证
10.3 ISO 9000标准
5.测试和确认
要具有完整的测试计划,测试计划要经过评审,并以此为依据进行测试活动。
( 1)测试计划
包括单元测试计划、集成测试计划、系统测试计划、验收测试计划。
制定测试用例、测试数据和预期结果。
考虑要进行的测试类型。
描述测试环境、工具以及测试软件。
软件产品是否完成的判断准则。
测试所需人员及其要求。
( 2)测试活动
记录发现的问题,指出可能受影响的其他部分软件,通知相关负责人员。
确定受影响的其他部分软件,以并以其进行重新测试。
评价测试是否适度和适当。
在验收和交付产品前,必须尽可能在类似使用环境中进行确认测试。
第十章 软件测试质量保证
10.3 ISO 9000标准
6.验收
当软件产品已经完成,经过内部确认测试,准备好交付后,应要求需方根据合同中的规定原则判断是否可以进行验收。对于验收中发现问题的处理办法由双方商定并纳入文档。具备验收条件后,应制定验收计划并逐步实施。
验收计划应包括:时间进度、评估规程、软件 /硬件环境、验收准则。
7.复制、交付和安装并制定安装分发计划
( 1)复制
制作好安装程序,复制好必要的必要的副本,准备好该交付的操作手册、用户指南等文档。
( 2)交付
交付前应对所交付产品的正确性及完整性进行检验。
( 3)安装
就以下方面双方明确商定各自的作用、责任和义务:
时间进度及安排,包括非工作时间及假日的工作人员安排及工作责任。
提供出入便利条件。
指定熟练人员的密切配合。
提供必要的系统及设备。
对每次安装的确认条件需明确规定。
对每次安装认可的正式规程。
8.维护
对于软件产品在初次交付及安装后,必须提供的维护应在合同中明确规定。合同中应明确以下各项的维护期:程序、数据、规格说明。
维护工作一般包括:问题的解决、接口的调整、功能扩充和性能改进。
10.4能力成熟度模型( Capability Maturity Model,
CMM)
CMM即软件能力成熟度模型,是向软件组织提供如何增加对其开发和维护软件过程的控制能力。设计并实施 CMM是为了指导软件组织达到以下要求。
确定当前过程的成熟度等级,识别出对软件质量和过程改进至关重要的问题,选择其过程改进策略。
通过关注一组有限的活动,并为实现它们而积极工作,组织能稳步地改善其软件过程,使其软件过程能力持续不断地增长。
第十章 软件测试质量保证
10.4.1软件机构的成熟性
10.4.2能力成熟度模型( CMM)
10.4.3利用 CMM对软件机构进行成熟度评估
10.4能力成熟度模型( Capability Maturity Model,
CMM)
第十章 软件测试质量保证
10.4.1软件机构的成熟性
多年来软件开发项目不能如期交付,软件产品的质量不能令客户满意,
加之软件开发的开销超出项目开始时所做的预算,这些是许多软件开发机构遇到的难题。近 20年中,不少人力图采用新的软件开发技术来解决软件生产率和软件质量存在的问题,但结果却不令人十分满意。
这一现象促使人们进一步考察软件过程,从而发现,关键问题在于软件过程的管理不尽人意。事实表明,在无规则和混乱的管理条件下,
先进的技术和工具并不能发挥应有的作用。人们认识到改进软件过程的管理是解决上述难题的突破口,再不能忽视软件过程的影响了。
我们观察到,有时个别项目完成得比较好,那是因为有个别优秀的软件人员参与工作,并不是因为遵循了成熟的软件过程。要想使多个项目都能很好地完成,不出现上述问题,除非让这几个优秀的软件人员承担所有的项目。但这毕竟是不可能的。稳定、持续地保证软件高质量地完成,只能依靠建立反映有效软件工程实践和管理实践的过程基础设施才能达到。
对于不同的软件开发机构,在组织人员完成软件项目中所依据的管理策略有很大差别,因而 软件项目所遵循的软件过程也有很大差别。
在此,可用软件机构的成熟度加以区别。
第十章 软件测试质量保证
10.4.2能力成熟度模型( CMM)
CMM是一个行业标准模型,用于定义和评价软件公司开发过程的成熟度,一般将软件过程能力成熟度分为五个等级。
初始级(等级 1):软件过程的特点是无秩序的,偶尔甚至是混乱的。
几乎没有什么过程是经过定义的,成功依赖于个人的努力。
可重复级(等级 2):已建立基本的项目管理过程去跟踪成本、进度和功能性。必要的过程纪律已经就位,使具有类似应用的项目,能重复以前的成功。
已定义级(等级 3):管理活动和工程活动两方面的软件过程均已文档化、标准化、并集成到组织的标准软件过程。全部项目均采用供开发和维护软件的组织标准软件过程中一个经批准的剪裁本。
已管理级(等级 4):已采集详细的有关软件过程和产品质量的度量。
无论软件过程还是产品均得到定量了解和控制。
优化级(等级 5)利用来自过程和来自新思想、新技术先导性试验的定量反馈信息,使持续过程改进成为可能。
第十章 软件测试质量保证
10.4.3利用 CMM对软件机构进行成熟度评估
评估过程有以下几步:
建立评估组,评估组成员应对软件过程、软件技术和应用领域很熟悉,
有实践经验、能够提出见解。
评估组准备具体审定评估问题,决定对每一个问题要求展示哪些材料和工具。
项目准备评估组与被评估机构领导商定选择哪些处在不同开发阶段的项目和典型的标准实施作为评估对象。将评估时间安排通知被评估项目负责人。
进行评估对被评估机构的管理人员和项目负责人说明评估过程。评估组与项目负责人一道就所列出的问题逐一对照审查,保证对问题的回答有一致的解释,从而取得一组初始答案。
初评对每个项目和整个机构作出成熟度等级初评。
讨论结果讨论初评结果。使用备用资料及工具演示,可进一步证实某些问题的答案,从而决定可能的成熟度等级。
给出最后的结论由评估组综合问题的答案、后继问题的答案,以及背景证据,作出最终评估结论。
第十章 软件测试质量保证习题
1,什么是软件质量?简述软件质量的特性及含义。
2,简述软件质量保证与软件测试的关系。
3,简述软件测试组织及管理的内容。
4,简述测试团队的职责。
5,简述 ISO 9000-3核心内容。
6,简述 CMM的五个等级。
第十章 软件测试质量保证