软件测试报告及测试评价软件过程管理课件.ppt
软件测试项目管理,1.测试项目管理概述2.测 试 文 档3.软件测试计划4.测试的组织与人员管理5.软件测试过程管理,1.测试项目管理概述,1.1 测试项目与测试项目管理1测试项目 测试项目是在一定的组织机构内,利用有限的人力和财力等资源,在指定的环境和要求下,对特定软件完成特定测试目标的阶段性任务。该任务应满足一定质量、数量和技术指标等要求。,测试项目一般具有如下一些基本特性。(1)项目的独特性(2)项目的组织性(3)测试项目的生命期(4)测试项目的资源消耗特性(5)测试项目目标冲突性(6)测试项目结果的不确定因素,2测试项目管理 测试项目管理就是以测试项目为管理对象,通过一个临时性的专门的测试组织,运用专门的软件测试知识、技能、工具和方法,对测试项目进行计划、组织、执行和控制,并在时间成本、软件测试质量等方面进行分析和管理活动。(一种高级管理方法)测试项目管理贯穿整个测试项目的生命周期,是对测试项目的全过程进行管理。,测试项目管理有以下基本特征。(1)系统工程的思想贯穿测试项目管理的全过程。(2)测试项目管理的组织有一定的特殊性。,(3)测试项目管理的要点是创造和保持一个使测试工作顺利进行的环境,使置身于这个环境中的人员能在集体中协调工作以完成预定的目标。(4)测试项目管理的方法、工具和技术手段具有先进性。,1.2 测试项目的范围管理 测试项目范围管理就是界定项目所必须包含且只需包含的全部工作,并对其他的测试项目管理工作起指导作用,以确保测试工作顺利完成。,项目目标确定后,下一步过程就是确定需要执行哪些工作,或者活动来完成项目的目标,这就是要确定一个包含项目所有活动在内的一览表。准备这样的一览表通常有两种方法:一种是让测试小组利用“头脑风暴法”根据经验,集思广益来形成。这种方法比较适合小型测试项目。,2.测 试 文 档,测试文档是对要执行的软件测试及测试的结果进行描述、定义、规定和报告的任何书面或图示信息。由于软件测试是一个很复杂的过程,同时也涉及到软件开发中其他一些阶段的工作,因此,必须把对软件测试的要求、规划、测试过程等有关信息和测试的结果,以及对测试结果的分析、评价,以正式的文档形式给出。,测试文档对于测试阶段工作的指导与评价作用更是非常明显的。需要特别指出的是,在已开发的软件投入运行的维护阶段,常常还要进行再测试或回归测试,这时还会用到测试文档。测试文档的编写是测试管理的一个重要组成部分。,2.1 测试文档的作用测试文档的重要作用可从以下几个方面看出。1促进项目组成员之间的交流沟通2便于对测试项目的管理,3决定测试的有效性4检验测试资源5明确任务的风险6评价测试结果7方便再测试8验证需求的正确性,2.2 测试文档的类型 根据测试文档所起的不同作用,通常把它分成两类,即前置作业文档和后置作业文档。测试计划及测试用例的文档属于前置作业文档。后置作业文档是在测试完成后提交的,主要包括软件缺陷报告和分析总结报告。,2.3 主要软件测试文档1软件测试文档给出了软件测试主要文档的类型。,2软件测试计划 主要对软件测试项目、所需要进行的测试工作、测试人员所应该负责的测试工作、测试过程、测试所需的时间和资源,以及测试风险等做出预先的计划和安排。,3测试设计规格说明 用于每个测试等级,以指定测试集的体系结构和覆盖跟踪。,4软件测试用例规格说明文档用于描述测试用例。,5测试规程 用于指定执行一个测试用例集的步骤。6测试日志 由于记录测试的执行情况不同,可根据需要选用。,7软件缺陷报告 用来描述出现在测试过程或软件中的异常情况,这些异常情况可能存在于需求、设计、代码、文档或测试用例中。8测试总结报告 用于报告某个测试完成情况。,3.软件测试计划,测试计划就是描述所有要完成的测试工作,包括被测试项目的背景、目标、范围、方式、资源、进度安排、测试组织,以及与测试有关的风险等方面。,3.1 制定测试计划的目的 一个计划一定是为了某种目的而产生的,对于软件质量管理而言,制定测试计划的目的主要有3个。1使软件测试工作进行更顺利2促进项目参加人员彼此的沟通3使软件测试工作更易于管理,3.2 制定测试计划的原则 制定测试计划是软件测试中最有挑战性的一个工作。以下原则将有助于制定测试计划工作。1制定测试计划应尽早开始2保持测试计划的灵活性3保持测试计划简洁和易读4尽量争取多渠道评审测试计划5计算测试计划的投入,3.3 制定测试计划 制定测试计划时,由于各软件公司的背景不同,测试计划文档也略有差异。实践表明,制定测试计划时,使用正规化文档通常比较好。为了使用方便,在这里给出IEEE软件测试计划文档模板。,4.测试的组织与人员管理,4.1 测试的组织与人员管理概述 测试项目成功完成的关键因素之一就是要有高素质的软件测试人员,并将他们有效地组织起来,分工合作,形成一支精干的队伍,使他们发挥出最大的工作效率。,测试的组织与人员管理就是对测试项目相关人员在组织形式、人员组成与职责方面所做的规划和安排。测试的组织与人员管理的任务是:(1)为测试项目选择合适的组织结构模式;(2)确定项目组内部的组织形式;(3)合理配备人员,明确分工和责任;(4)对项目成员的思想、心理和行为进行有效地管理,充分发挥他们的主观能动性,密切配合实现项目的目标。,测试的组织与人员管理应注意的原则是:(1)尽快落实责任 从软件的生存周期看,测试往往指对程序的测试,但是,由于测试的依据是规格说明书、设计文档和使用说明书,如果设计有错误,测试的质量就难以保证。实际上,测试的准备工作在分析和设计阶段就开始了,在软件项目的开始就要尽早指定专人负责,让他有权去落实与测试有关的各项事宜。,(2)减少接口 要尽可能地减少项目组内人与人之间的层次关系,缩短通信的路径,方便人员之间的沟通,提高工作效率。(3)责任明确、均衡 项目组成员都必须明确自己在项目组中的地位、角色和职责,各成员所负的责任不应比委任的权力大,反之亦然。,进行软件测试的测试组织结构形式很多,目前常见的测试组织结构有独立的测试小组和集成的测试小组两种形式。,4.2 测试人员的组织结构,1独立测试小组 独立的测试小组,即主要工作是进行测试的小组,他们专门从事软件的测试工作。测试组设组长一名,负责整个测试的计划、组织工作。测试组的其他成员由具有一定的分析、设计和测试经验的专业人员组成,人数根据具体情况可多可少,一般35人为宜。测试组长与开发组长在项目中的地位是同级、平等的关系。,2集成测试小组 集成测试小组是将测试与基本设计因素组合起来,构成的测试组织结构。这是与独立测试有关的一种集成测试组织形式,即集成测试小组是由需要向同一个项目经理汇报工作的测试人员和开发人员组成。,4.3 测试人员 测试人员的能力应包括以下几项。(1)一般能力:包括表达、交流、协调、管理、质量意识、过程方法、软件工程等;(2)测试技能及方法:包括测试基本概念及方法、测试工具及环境、专业测试标准、工作成绩评估等;,(3)测试规划能力:包括风险分析及防范、软件放行/接收准则制定、测试目标及计划、测试计划和设计的评审方法等;(4)测试执行能力:包括测试数据/脚本/用例、测试比较及分析、缺陷记录及处理、自动化工具;(5)测试分析、报告和改进能力:包括测试度量、统计技术、测试报告、过程监测及持续改进。,测试组织管理者的工作能力在很大程度上决定测试工作的成功与否,测试管理是很困难的,测试组织的管理者必须具备:(1)了解与评价软件测试政策、标准、过程、工具、培训和度量的能力;(2)领导一个测试组织的能力,该组织必须坚强有力、独立自主、办事规范且没有偏见;,(3)吸引并留住杰出测试专业人才的能力;(4)领导、沟通、支持和控制的能力;(5)有提出解决问题方案的能力;(6)测试时间、质量和成本控制的能力。,4.4 人员的通信方式 人员的沟通、交流方式主要有:(1)正式非个人方式,如正式会议等;(2)正式个人之间交流,如成员之间的正式讨论等(一般不形成决议);(3)非正式个人之间交流,如个人之间的自由交流等;,(4)电子通信,如E-mail(电子邮件)、BBS(电子公告板系统)等;(5)成员网络,如成员与小组之外或公司之外有经验的相关人员进行交流;在实践中发现,(5)的通信效率最高,其次是(1)。,4.5 测试人员的培训 如今,计算机软、硬件技术发展十分迅速,测试人员必须有足够的能力来适应这些变化。而另一方面,测试工作本身是一门需要技术的学问,它包含了众多的理论和实践。缺乏这些知识和经验,测试的深度和广度就不够,测试的质量就无法保证。从测试管理的角度来说,为了高效地实现测试工作的目标,需要不断地帮助他们进行知识的更新和技术能力的提升,这些就需要通过培训来达到。,1软件测试培训内容2制定测试人员培训计划,4.6 测试的组织与人员管理中的风险管理 在进行测试的组织与人员管理时,我们往往重视招聘、培训、考评、薪资等各个具体内容的操作,而忽视了其中的风险管理问题。,其实,每个公司在人事管理中都可能遇到风险,如招聘失败、新政策引起员工不满、技术骨干突然离职等等,这些事件会影响公司的正常运转,甚至会对公司造成致命的打击。如何防范这些风险的发生,是我们应该研究的问题。特别是高新技术企业,由于对人的依赖更大,所以更需要重视测试的组织与人员管理中的风险管理。,5.软件测试过程管理,5.1 测试项目的跟踪与监控软件测试和软件开发一样,都遵循软件工程的原理,有它自己的生命周期。软件的测试过程管理基于广泛采用的“V”模型。“V”模型支持系统测试周期的任何阶段。,基于“V”模型,在开发周期中的每个阶段都有相关的测试阶段相对应,测试可以在需求分析阶段就及早开始,创建测试的准则。每个阶段都存在质量控制点,对每个阶段的任务、输入和输出都有明确的规定,以便对整个测试过程进行质量控制和配置管理。,根据质量管理的思想,需要对软件测试过程进行跟踪、检查,并与测试计划进行对比。测试计划中描述了如何实施和管理软件的测试过程,测试计划经批准生效后,将被用来作为对测试过程跟踪与监控的依据。测试项目的跟踪与监控的基础是软件测试计划。,在具体的测试项目的跟踪与监控过程中,可以采用周报、日报、例会,以及里程碑评审会等方式来了解测试项目的进展情况,建立、收集和分析项目的实际状态数据,对项目进行跟踪与监控,达到项目管理的目的。基于可靠的信息,明智的和有意义的决策可以很好地管理测试过程,在测试过程的每个阶段,测试项目管理人员应特别注意需要弄清楚以下问题:,系统现在是否做好测试准备?如果系统开始测试会有什么样的风险?当前测试所达到的覆盖率是怎样的?到目前为止取得了哪些成功?还要哪些测试要做?怎么证明系统已经经过了有效的测试?有哪些变更,哪些必须重新测试?,5.2 测试的配置管理 配置管理的目的是建立和维护在软件生命周期中软件产品的完整性和一致性。一般来说,软件测试配置管理包括4个最基本的活动:(1)配置标识;(2)变更控制;(3)配置状态报告;(4)配置审计。,1配置标识 配置标识是配置管理的基础。所有配置项的操作权限都应当严格管理,其基本原则是:所有基线配置项向测试人员开放读取权限;而非基线配置项向测试组长、项目经理及相关人员开放。,2变更控制 变更控制的目的并不是控制和限制变更的发生,而是对变更进行有效的管理,确保变更有序地进行。,3配置状态报告 配置状态报告就是根据配置项操作数据库中的记录,来向管理者报告软件测试工作的进展情况。配置状态报告应该包括以下主要内容:(1)定义配置状态报告形式、内容和提交方式;(2)确认过程记录和跟踪问题报告,更改请求,更改次序等;(3)确定测试报告提交的时间与方式。,4配置审计配置审计的主要作用是作为变更控制的补充手段,来确保某一变更需求已被切实地执行和实现。配置审计包括以下主要内容:(1)确定审计执行人员和执行时机;(2)确定审计的内容与方式;(3)确定发现问题的处理方法。,5.3 软件测试风险管理1风险的基本概念 风险可定义为“伤害、损坏或损失的可能性;一种危险的可能或一种冒险事件。”风险涉及到一个事件发生的可能性,涉及到该事件产生的不良后果或影响。软件风险是指开发不成功引起损失的可能性,这种不成功事件会导致公司商业上的失败。风险分析是对软件中潜在的问题进行识别、估计和评价的过程。软件测试中的风险分析是根据测试软件将出现的风险,制定软件测试计划,并排列优先等级。,软件风险分析的目的是确定测试对象、测试优先级,以及测试的深度。有时还包括确定可以忽略的测试对象。通过风险分析,测试人员识别软件中高风险的部分,并进行严格彻底地测试;确定潜在的隐患软件构件,对其进行重点测试。在制定测试计划的过程中,可以将风险分析的结果用来确定软件测试的优先级与测试深度。,2软件测试与商业风险 软件测试是一种用来尽可能降低软件风险的控制措施。软件测试是检测软件开发是否符合计划,是否达到预期的结果的测试。如果检测表明软件的实现没有按照计划执行,或与预期目标不符,就要采取必要的改进行动。因此,公司的管理者应该依靠软件测试之类的措施来帮助自己实现商业目标。,3软件风险分析 风险分析是一个对潜在问题识别和评估的过程,即对测试的对象进行优先级划分。风险分析包括以下两个部分。发生的可能性:发生问题的可能性有多大。影响的严重性:如果问题发生了会有什么后果。,通常风险分析采用两种方法:表格分析法和矩阵分析法。通用的风险分析表包括以下几项内容。(1)风险标识:表示风险事件的惟一标识;(2)风险问题:风险问题发生现象的简单描述;(3)发生可能性:风险发生可能性的级别(110);,(4)影响的严重性:风险影响的严重性的级别(110);(5)风险预测值:风险发生可能性与风险影响的严重性的乘积;(6)风险优先级:风险预测值从高向低的排序。,综上所述,软件风险分析的目的是:确定测试对象、确定优先级,以及测试深度。在测试计划阶段,可以用风险分析的结果来确定软件测试的优先级。对每个测试项和测试用例赋予优先代码,将测试分为高、中和低的优先级类型,这样可以在有限的资源和时间条件下,合理安排测试的覆盖度与深度。,4软件测试风险 软件测试的风险是指软件测试过程出现的或潜在的问题,造成的原因主要是测试计划的不充分、测试方法有误或测试过程的偏离,造成测试的补充以及结果不准确。测试的不成功导致软件交付潜藏着问题,一旦在运行时爆发,会带来很大的商业风险。,主要是对测试计划执行的风险分析与制定要采取的应急措施,降低软件测试产生的风险造成的危害。测试计划的风险一般指测试进度滞后或出现非计划事件,就是针对计划好的测试工作造成消极影响的所有因素,对于计划风险分析的工作是制定计划风险发生时应采取的应急措施。,其中,交付日期的风险是主要风险之一。测试未按计划完成,发布日期推迟,影响对客户提交产品的承诺,管理的可信度和公司的信誉都要受到考验,同时也受到竞争对手的威胁。交付日期的滞后,也可能是已经耗尽了所有的资源。计划风险分析所做的工作重点不在于分析风险产生的原因,重点应放在提前制定应急措施来应对风险发生。当测试计划风险发生时,可能采用的应急措施有:缩小范围、增加资源、减少过程等措施。,将采用的应急措施如下。应急措施1:增加资源。请求用户团队为测试工作提供更多的用户支持。应急措施2:缩小范围。决定在后续的发布中,实现较低优先级的特性。应急措施3:减少质量过程。在风险分析过程中,确定某些风险级别低的特征测试,或少测试。,上述列举的应急措施要涉及到有关方面的妥协,如果没有测试计划风险分析和应急措施处理风险,开发者和测试人员采取的措施就比较匆忙,将不利于将风险的损失控制到最小。因此,软件风险分析和测试计划风险分析与应急措施是相辅相成的。,由上面分析可以看出,计划风险、软件风险、重点测试、不测试,甚至整个软件的测试与应急措施都是围绕“用风险来确定测试工作优先级”这样的原则来构造的。软件测试存在着风险,如果提前重视风险,并且有所防范,就可以最大限度减少风险的发生。在项目过程中,风险管理的成功取决于如何计划、执行与检验每一个步骤。遗漏任何一点,风险管理都不会成功。,5.4 软件测试的成本管理对于一般项目,项目的成本主要由项目直接成本、管理费用和期间费用等构成。,当一个测试项目开始后,就会发生一些不确定的事件。测试项目的管理者一般都在一种不能够完全确定的环境下管理项目,项目的成本费用可能出现难以预料的情况,因此,必须有一些可行的措施和办法,来帮助测试项目的管理者进行项目成本管理,即依据实际预算制定项目计划,实施整个项目生命周期内的成本度量和控制。,1测试费用有效性 风险承受的确定,从经济学的角度考虑就是确定需要完成多少测试,以及进行什么类型的测试。经济学所做的判断,确定了软件存在的缺陷是否可以接受,如果可以,能承受多少。测试的策略不再主要由软件人员和测试人员来确定,而是由商业的经济利益来决定的。,“太少的测试是犯罪,而太多的测试是浪费。”对风险测试得过少,会造成软件的缺陷和系统的瘫痪;而对风险测试得过多,就会使本来没有缺陷的系统进行没有必要的测试,或者是对轻微缺陷的系统所花费的测试费用远远大于它们给系统造成的损失。,测试费用的有效性,可以用测试费用的质量曲线来表示,如图6-1所示。随着测试费用的增加,发现的缺陷也会越多,两线相交的地方是过多测试开始的地方,这时,排除缺陷的测试费用超过了缺陷给系统造成的损失费用。,图6-1 测试费用的质量曲线,2测试成本控制 测试成本控制也称为项目费用控制,就是在整个测试项目的实施过程中,定期收集项目的实际成本数据,与成本的计划值进行对比分析,并进行成本预测,及时发现并纠正偏差,使项目的成本目标尽可能好地实现。,测试工作的主要目标是使测试产能最大化,也就是,要使通过测试找出错误的能力最大化,而检测次数最小化。测试的成本控制目标是使测试开发成本、测试实施成本和测试维护成本最小化。在软件产品测试过程中,测试实施成本主要包括:测试准备成本、测试执行成本和测试结束成本。,3质量成本 测试是一种带有风险性的管理活动,可以使企业减少因为软件产品质量低劣,而花费不必要的成本。,(1)质量成本要素质量成本要素主要包括一致性成本和非一致性成本。一致性成本是指用于保证软件质量的支出,包括预防成本和测试预算,如测试计划、测试开发、测试实施费用。,非一致性成本是由出现的软件错误和测试过程故障(如延期、劣质的发布)引起的。这些问题会导致返工、补测、延迟。追加测试时间和资金就是一种由于内部故障引起的非一致性成本。非一致性成本还包括外部故障(软件遗留错误影响客户)引起部分。一般情况下,外部故障非一致性成本要大于一致性成本与内部故障非一致性成本之和。,(2)质量成本计算质量成本一般按下式计算:质量成本=一致性成本+非一致性成本,