《软件测试管理》PPT课件.ppt
第7章 软件测试管理,本章概述 软件测试是为了尽可能多地发现软件中的缺陷并将其修复,从而提高软件整体质量。软件测试工作不仅要有计划地进行,而且需要科学地组织和管理,这样才能开发出高质量的软件产品。对测试活动进行组织策划和有效管理,才能使软件测试在软件质量体系保障中发挥应有的重要作用。本章从软件质量保证开始,介绍了相关的ISO9000质量体系标准和能力成熟度模型(CMM),阐述了软件测试的组织结构和管理工作。,第7章 软件测试管理,7.1 软件质量保证与软件测试7.2 测试的组织管理和测试团队职责7.3 ISO9000标准7.4 能力成熟度模型(CMM)小结习题,7.1 软件质量保证与软件测试 7.1.1 软件质量保证,任何软件产品的开发都要围绕质量问题,高质量是研发人员追求的目标。质量是体现在开发过程中,通过科学的管理得到控制。对于一个软件产品,质量保证活动是对整个软件过程的管理,并且要贯穿始终。软件质量保证就是通过对软件产品有计划地进行检查和审计来验证软件是否合乎标准,找出改进的方法,以达到防止产生软件缺陷的目的。许多软件公司都设有质量保证小组或部门,他们负责审查软件设计和开发人员的活动,客观验证他们是否符合规定的标准和要求。,软件质量保证包括以下几个方面的工作:参与制定软件质量要求软件质量保证部门在产品开发的需求分析阶段就开始介入,和软件开发人员一起进行软件需求分析,对软件周期各个阶段制定相关的计划、规范和结束标准,提出可能存在的问题,综合软件各方面特点确定软件要满足的质量要求,形成正式文档,作为各阶段审查的依据。组织正式评审利用在需求分析阶段和研发人员一起制定的软件质量要求,对软件工程各个阶段的进度、完成的质量情况以及存在的问题进行正式评审,保证每个阶段都遵守已制定的计划、规范和结束标准。如果发现某些流程没有达到质量要求,应按照逐级解决的原则进行解决,并将处理结果通知相关技术人员,把问题的解决过程和结果生成报告,作为以后工作的重要参考文档。,软件测试管理软件质量保证工作的一个重要内容就是对测试的管理。软件测试管理的好坏,直接影响到测试的效果。质量保证人员要从整体上监督管理软件测试计划的实施和软件测试策略的应用,依据测试结束标准严格审查,保证整个测试工作高效进行。对软件的变更进行控制。软件开发过程中,修改和变更是不可避免的。随着软件问题的出现,研发人员要进行一些有益的修改工作,使软件设计更理想化。但是,一些可能导致新故障的因素甚至新的软件缺陷也随之而来,这样就对软件质量保证产生了负作用。因此必须严格审查软件开发中的变更请求,认真研究新的变更可能给软件开发带来的影响以及与软件其他部分的冲突,对软件的变更进行控制。对软件质量进行度量。软件质量度量是指通过量化软件产品中的每一个质量因素,对各因素进行定量测量,从而得到对软件质量特性的整体评价。软件的质量特性包括功能性、可靠性、易用性、效率、可维护性和可移植性,这些特性确定了需要度量软件质量中的哪些因素。,软件质量度量作为一种函数/功能,输入的是软件数据,输出的是代表质量特性的某一属性值。这样质量保证人员和领导层就能掌握各种指标的量化信息,便于严格控制项目的进程和资源的调配,也有利于在软件开发过程中做出准确的决策。对软件质量情况及时记录和报告软件质量情况的文档化是软件质量保证工作结果的重要体现。软件质量要求的制定要作记录,软件各阶段的审查情况要形成报告,对软件测试的管理情况也要文档化。这样才能为软件过程的正常运行和不断改进提供有价值的参考资料。,7.1.2 软件质量保证与软件测试的关系,软件质量保证与软件测试之间既存在共同点又有不同之处。从共同点的角度看,软件测试和软件质量保证的目的都是尽力确保软件产品满足需求,从而开发出高质量的软件产品。两个流程都是贯穿整个软件开发生命周期中。正规的软件测试系统主要包括:制定测试计划、测试设计、实施测试、建立和更新测试文档。而软件质量保证的工作主要为:制定软件质量要求、组织正式审查、软件测试管理、对软件的变更进行控制、对软件质量进行度量、对软件质量情况及时记录和报告。软件质量保证的职能是向管理层提供正确的可行信息,从而促进和辅助设计流程的改进。软件质量保证的职能还包括监督测试流程,这样测试工作就可以被客观地审查和评估,同时也有助于测试流程的改进。,二者的不同之处在于软件质量保证工作侧重对软件开发流程中的各个过程进行管理与控制,杜绝软件缺陷的产生。而测试则是对已产生的软件缺陷进行修复。软件质量的一个不可忽视的威胁因素来自软件的修改和变更。所以软件测试是软件质量保证的关键步骤。测试可以发现故障,从而帮助开发者发现问题并纠正问题。测试是任何质量保证过程中必需的但不是所有的部分。对于一个系统测试得越多,就越能确保这一系统的正确性,然而测试通常不能保证整个系统运转的完全正确。因此,测试在保证质量方面的主要职责是找出那些在设计开始时就本应该避免的错误并进行修复。软件质量保证的任务首先是避免错误,要做到这一点,除了测试外还需要其他方面的处理。,7.2 测试的组织管理和测试团队职责,1软件测试的组织(1)测试的过程及组织 根据软件测试计划,由一位对整个系统设计熟悉的设计人员编写测试大纲,明确测试的内容和测试通过的准则,设计完整合理的测试用例,以便系统实现后进行全面测试。当软件由开发人员完成并检验后,提交测试组,由测试负责人组织测试,测试一般可以下列方式组织:编写测试大纲、测试用例测试人员要仔细阅读有关资料,包括规格说明、设计文档、使用说明书及在设计过程中形成的测试大纲、测试内容及测试的通过准则,全面熟悉系统,编写测试计划,设计测试用例,作好测试前的准备工作。将测试过程分阶段软件测试过程按各测试阶段的先后顺序可分为单元测试、集成测试、确认(有效性)测试、系统测试和验收(用户)测试5个阶段,如图2-3所示。,图7-1 软件开发和测试过程中的组织结构,单元测试:测试执行的开始阶段。测试对象是每个单元。测试目的是保证每个模块或组件能正常工作。单元测试主要采用白盒测试方法,检测程序的内部结构。集成测试:也称组装测试。在单元测试基础上,对已测试过的模块进行组装,进行集成测试。测试目的是检验与接口有关的模块之间的问题。集成测试主要采用黑盒测试方法。确认测试:也称有效性测试。在完成集成测试后,验证软件的功能和性能及其他特性是否符合用户要求。测试目的是保证系统能够按照用户预定的要求工作。确认测试通常采用黑盒测试方法。系统测试:在完成确认测试后,为了检验它能否与实际环境(如软硬件平台、数据和人员等)协调工作,还需要进行系统测试。可以说,系统测试之后,软件产品基本满足开发要求。验收测试:测试过程的最后一个阶段。验收测试主要突出用户的作用,同时软件开发人员也应该参与进去。,(2)测试人员组织 人是测试工作中最有价值也是最重要的资源,没有一个合格的负责人、积极的测试小组,测试就不可能实现。为高质高效地完成测试任务,应该组织测试人员进行集体学习,做到如下几点:测试项目的负责人必须做到:把要做的事情理清楚;把要达到的目的说清楚;把做事情的思路和方法理清楚;把合理的资源调配到合适的位置上,让兴趣和能力结合。我觉得从大的方面就需要先将这些事情理清楚了,才可能使得一个团队具有非常的战斗力。组织测试人员定期培训,让团队的每个人具备应有的沟通能力、技术能力、自信心、怀疑精神、自我督促能力和洞察力。组织测试人员进行工作总结,在什么地方容易犯错误,犯什么类型的错误,犯错误的原因是什么。那么就需要对各种错误进行统计,以找到问题的根本原因。就问题而讨论问题,问题的实质出在那里,然后改进。组织测试人员提出意见,因为如果一个团队要发展,是需要大家一起努力的,但是做起来很难。避免一言堂,让大家充分参与到设计中,在其中找到自我的感觉,这样每一个人才能关心项目的每一个角落,工作才能更有效率。,(3)软件测试文件组织测试文件的类型 根据测试文件所起的作用不同,通常把测试文件分成两类,即测试计划和测试分析报告。测试文件的使用测试文件的编制 在软件的需求分析阶段,就开始测试文件的编制工作,各种测试文件的编写应按一定的格式进行。,2软件测试的管理软件测试管理的主要内容如下:(1)软件产品的监督和测量(2)对不符合要求产品的识别和控制(3)软件过程的监督和测量(4)产品设计和开发的验证,3测试团队总的职责组织一支优秀的测试团队是做好软件测试工作的基本保障。良好的组织结构和人员划分会促进测试工作的顺利开展和实施,提高软件测试的效率和质量,从而大大提高软件产品的开发效率和产品质量。在科学的管理体系下,软件测试团队各个成员要明确自身责任,既要完成本职工作又要相互协调好,为整个测试流程负责。软件测试人员的基本责任应该包括:尽早发现软件产品中的所有问题。督促软件开发人员及时解决测试中发现的缺陷。除了上述两个基本责任,软件测试团队的责任还包括:帮助项目管理人员制定合理的产品开发计划对软件产品中的问题进行分析和跟踪调查,形成文档,以便让项目管理人员和相关产品开发人员对当前产品的质量情况有全面的了解。协助完善软件开发流程,提高产品开发的效率。,4软件开发和测试过程的组织结构与职责划分图7-1表示的是软件开发和测试过程中的组织结构。参与整个软件生产流程的人员种类很多,结构图中列举了代表性的开发和测试人员。其中,产品经理和产品开发代表是核心领导。以软件开发经理为首的开发部门和以软件测试经理为首的测试部分既各有分工又需要相互合作,共同开发软件,确保软件质量符合设计标准。,在需求分析阶段中,软件开发人员的职责如下:(1)软件开发项目经理的职责是:带领项目组分析审核工作任务书带领项目组与系统工程师进行需求交流并进行分析和文档化需求跟踪(2)软件开发工程师的职责是:完成软件需求说明书(SRS)文档完成需求跟踪参加SRS审查根据SRS评审专家意见,修改SRS文档(3)开发代表:与项目组一起审查项目任务书;在评审结束后,批准SRS文档。,在需求分析阶段中,软件测试人员的职责如下:(1)质量保证/软件测试经理监督项目组遵循需求管理流程;参加SRS审查;保证相关组参加SRS审查。(2)软件测试项目经理参与开发人员的软件需求分析,提出可测试性需求;组织人员参与SRS的评审工作;组织软件系统测试计划写作;组织软件系统测试方案写作。(3)软件测试工程师参与SRS评审工作;协助软件测试项目经理完成软件系统测试计划写作;协助软件测试经理完成软件系统测试方案写作。,在软件设计阶段中,软件开发人员的职责如下:(1)软件开发项目经理在项目计划中标识设计活动并确保有足够的资源;从项目成员中标识出设计人员,负责设计工作;确保设计人员按照本流程开发相应的设计说明书(HLD和LLD);确保按照审查规程进行设计的审查;批准设计说明书(HLD 和LLD);确保更新了需求跟踪矩阵;确保设计文档按照配置管理流程来控制。(2)软件开发工程师完成设计文档;完成需求跟踪;参加设计文档审查;根据评审专家意见,修改设计文档;(3)相关评审专家针对设计文档,提交评审意见;参加设计文档的评审会议;确认修改后的意见。,在软件设计阶段中,软件测试人员的职责如下:(1)质量保证/软件测试经理监督项目组遵循软件设计流程;参加设计审查;保证相关组参加设计审查。(2)软件测试项目经理组织所有的测试活动;制定测试策略;确保测试活动有合适的计划;审核并批准单元测试和集成测试的测试计划;确保所有分配需求被跟踪和验证;确保测试策略在签发后基线化,单元测试计划(UTP)、集成测试计划(ITP)、系统测试计划(STP)在审查和批准后基线化。说明:基线是指一个被正式评审和批准的规格和产品,作为进一步开发的一个基础,并且必须通过正式的变更流程来变更。(3)软件测试工程师准备测试计划(STP/UTP/ITP);撰写单元测试(UT)/集成测试(IT)/系统测试(ST)测试用例;完成需求跟踪。,软件测试执行阶段,软件测试人员的职责如下:(1)软件开发项目经理确保缺陷分发给相关软件工程师并及时得到解决;参与需求变更评审。(2)软件开发工程师修正缺陷;验证相关的缺陷已经被修正。(3)软件测试项目经理组织所有的测试活动;确保选择适合的测试工具以及测试环境的建立;确保测试活动的计划得到执行和获得资源;确保缺陷分发给相关软件工程师并及时得到解决;审核并批准测试报告;审核并批准测试状态报告。(4)软件测试工程师:搭建测试环境;执行测试用例;将测试中发现的所有缺陷填写在缺陷报告中;回归测试;准备测试报告;测试期间,每周准备测试状态报告。,7.3 ISO9000标准,与软件质量管理和质量保证方面相关的是当前国际惯用的ISO9000系列标准。软件测试人员可以以此系列标准规范、约定软件的开发过程,提高软件产品质量。ISO 9000系列标准是ISO国际标准化组织TC/176技术委员会制定的所有国际标准,其中的核心标准是质量保证标准(ISO9001/2/3)和质量管理标准(ISO9004)。它们为小到螺栓、螺母,大到质量管理和质量保证等所有制造行业设立标准。ISO9000系列标准可分为两类:ISO9001ISO9003作为第一类用于建立客户对生产商质量要求的保证;ISO9004作为第二类用于生产商自身建立质量保证体系。ISO9001、ISO9002和ISO9003的作用范围由大到小,ISO9001包括从产品开发到售后服务的全程质量要求保证,作用范围最大。ISO9002其次,ISO9003再次之。,ISO 9000系列标准的两个主要特点是:(1)它的目标在于整个产品流程的控制,从开始设计、生产、产品销售到产品服务,都有相关质量保证规范。如果生产的全过程得到很好的控制并达到约定的质量要求,那么最终的产品质量就得到了保证。(2)产品缺陷的提早预防。整个生产过程中有效预防漏洞的出现并且按照系列标准不断进行产品自身完善,做到防患于未然,大大减少甚至杜绝了不合格产品。,ISO 9003标准的主要内容:开发详细的质量计划和程序控制配置管理、产品验证、不规范行为(缺陷)和纠正措施(修复);准备和接收软件开发计划,包括项目定义、产品目标清单、项目进度、产品说明书,如何组织项目的描述,风险和假设的讨论以及控制策略等;使用客户易理解的且测试时易进行合法性检查的用语来表述说明书;计划、开发、编制和实施软件设计审查程序;开发控制软件设计随产品生命周期而发生变化的程序;开发和编制软件测试计划;开发检测软件是否满足客户要求的方法;实施软件验证和接收式测试;维护测试结果的记录;解决软件缺陷的方式;证明产品在发布之前已经就绪;开发控制产品发布过程的程序;明确指出和规定应该收集的质量信息;应用统计技术分析软件开发过程、评估软件产品质量。,7.4 能力成熟度模型(CMM),CMM(Capability Maturity Model)即软件能力成熟度模型,是软件行业标准模型,用来定义和评价软件公司开发过程的成熟度,为如何提高软件质量提供指导。CMM是在美国国防部领导下,由软件开发团体、和卡耐基梅隆大学的软件工程学院(SEI)共同开发的,1991年推出CMM1.0版,1993年推出CMM1.1版。CMM的主要特点是通用性好,它适用于各种规模的软件公司,从大规模的公司集体到个人。它的5个等级为评估软件开发成熟度提供了简单的方法,确定了进入下一个成熟度等级的关键标志。如图7-2所示,CMM将软件过程能力成熟度划分为5个等级,每个等级定义一组过程能力目标,并且表述了能够达到这些过程能力目标的实践活动。依据CMM模型,软件开发人员能够更好地按照计划高效率地开发出有质量保证的软件产品。,图7-2 CMM软件成熟度级别,(1)等级1(初始级)。该等级的软件开发过程是随意的,甚至是混乱的。项目能否成功依靠个人的能力和运气,具有偶然性。软件开发过程没有定义,没有通用计划,难以监视和控制。开发的时间和费用无法预知。测试过程和其他过程混杂在一起。(2)等级2(可重复级)。该等级成熟度主要集中在项目级。建立基本的项目管理过程去跟踪成本、进度、功能和质量。可以借鉴以前成功项目的经验,应用到新项目中。软件开发具有一定的组织性,使用了基本软件测试行为,例如测试计划和测试用例。(3)等级3(已定义级)。该等级具备了组织化思想,而不仅仅是针对具体项目。软件开发中的管理活动和工程活动被文档化和标准化,并且形成整个软件组织的标准软件过程。所有项目均采用在标准软件过程中进行。(4)等级4(已管理级)。在该成熟度等级中,组织过程处于在统计的控制下。软件过程和产品质量有具体的度量标准,软件过程和产品质量得到了定量理解和控制。(5)等级5(优化级)。通过来自过程、新技术和新思想等各方面的定量信息反馈,着能够进行持续地过程改进,以期达到质量更佳的等级。,CMM的分层结构为软件公司开发产品提供了不同等级的可行性目标,达到了某一级设定的一级目标,就达到了这个成熟级别,自然可以进入下一级。等级1是基础,大多数机构的软件过程开发环境还相当不成熟,还都自然处于这个基础上。根据是否真正采用成熟的软件过程来衡量,全世界大多数软件公司的能力成熟度为1级,多数为2级,少数为3级,极少数为4级,能力成熟度为5级的软件公司更是凤毛麟角。5个等级如图7-2所示,为评测软件公司开发能力成熟度提供了简单的方式。CMM和ISO9000系列标准都是用来管理产品的生产过程,监督产品的质量和性能。它们的共同点是注重产品是否符合设计说明书,是否达到用户的预期要求。它们的不同点是,CMM强调产品生产过程的持续改进,ISO9000系列(关于软件开发和测试部分)强调产品达到质量要求的基本准则。当然,在ISO9000系列中也含有关于生产过程持续改进的问题的部分。所以,两者是既有联系又有区别。作为软件公司,不论通过CMM评估还是获得ISO9000系列认证,目的都是为了保证软件开发的质量以及不断改进产品,这样才能满足用户需求、适应市场变化,从而获取竞争优势。,小结,软件测试是有组织和有管理的软件质量保证活动,而不是随意地、松散地、杂乱地实施过程。软件质量保证就是通过对软件产品有计划地进行检查和审计来验证软件是否合乎标准,设计改进方案,从而杜绝软件缺陷的产生。软件质量保证部门有责任监督测试流程,保证测试工作的客观性,同时也有助于测试流程的改进。而软件测试是提高软件质量的关键环节。建立科学的软件测试管理体系是非常重要的,只有这样才能确保软件测试在软件质量保证中发挥应有的重要作用。要想实现良好的测试管理,就要对测试团队进行系统地组织和明确地职责划分。ISO 9000系列标准是ISO国际标准化组织制定的国际标准,它为所有制造行业设立了质量管理和质量保证等标准。ISO9003质量体系是为软件产品的开发和测试提供质量保证模式,可以作为软件测试的质量保证规范。软件能力成熟度CMM作为软件行业的标准模型,可以定义和评价软件公司开发过程的成熟度,为提高软件质量提供指导。,习题,质量保证部门与测试部门的职责是否一样?归纳它们的共同点和不同点。ISO 9000标准与软件测试的关系是什么?简述CMM的具体等级划分。,