软件测试基础教程杜文洁景秀丽主编中国水利水电出版社第十章软件测试质量保证第十章软件测试质量保证10.1软件质量保证与软件测试10.2软件测试管理和软件测试团队职责10.3ISO9000标准10.4能力成熟度模型习题本章概要软件质量的定义软件质量与软件测试的关系软件质量的测试管理及测试团队的职责影响软件质量的因素:ISO9000标准及能力成熟度模型(CMM)。第十章软件测试质量保证10.1.1软件质量保证10.1.2软件质量保证与软件测试的关系10.1软件质量保证与软件测试第十章软件测试质量保证10.1软件质量保证与软件测试软件质量,是贯穿软件生存期的一个极为重要的问题。是软件开发过程中所使用的各种开发技术和验证方法的最终体现。因此,在软件生存期中要特别重视质量的保证,以生成高质量的软件产品。第十章软件测试质量保证10.1.1软件质量保证软件质量(SoftWareQuality)软件质量是一个软件企业成功的必要条件,其重要性无论怎样强调都不过分。软件质量与传统意义上的质量概念并无本质差别,只是针对软件的某些特性进行了调整。软件质量由三部分构成:软件产品的质量,即满足使用要求的程度。软件开发过程的质量,即能否满足开发所带来的成本、时间和风险等要求。软件在其商业环境中所表现的质量。总结起来,高品质软件应该是相对的无产品缺陷或只有极少量的缺陷,它能够准时递交给客户,所花费用都在预算内,并且满足客户需求,是可维护的。但是,有关质量好坏的最终评价依赖于用户的反馈。第十章软件测试质量保证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)