软件产品项目生命周期管理
软件产品/项目生命周期管理
汪明
江苏省软件产品检测中心
1、 软件产品/项目生命周期管理
江苏省软件产品检测中心为通过ISO/IEC 17025实验室认证(编号:CNAS L4338)的专业测试机构,将依据国家对软件产品质量标准的要求,进行软件测试。
软件产品
是指向用户提供的计算机软件、信息系统或设备中嵌入的软件或在提供计算机信息系统集成、应用服务等技术服务时提供的计算机软件。
项目
项目是指在一定的约束条件下(主要是限定时间、限定资源),具有明确目标的一次性任务。
项目是一件事情、一项独一无二的任务,也可以理解为是在一定的时间和一定的预算内所要达到的预期目的。 项目侧重于过程,它是一个动态的概念,例如我们可以将软件的研发过程视为项目,但不可以把软件本身称为项目。那么到底什么活动可以称为项目呢?开发和介绍一种新产品;涉及和实施一个计算机系统;进行企业的现代化改造;主持一次会议等等这些在我们日常生活中经常可以遇到的一些事情都可以称为项目。
项目管理的根本在于解决所发生的失败,而并非建立一种不允许失败的组织
项目生命周期 一个项目从概念到完成所经过的各个阶段。
项目的性质在每个阶段都会发生变化。由于项目的本质是在规定期限内完成特定的、不可重复的客观目标,因此,所有项目都有开始与结束,既项目“出生、成熟、死亡”。
“即项目在本质上是单一方向发展的。”许多项目,由于意料之外的环境变化,即使在接近原先规划的最后阶段时,也可能重新开始。
项目的生命周期可以分为四个阶段:项目立项期、项目启动期、项目发展成熟期以及项目完成期。
1 项目立项阶段
在确定一个项目的初期,项目管理层通常热情很高,但目标却不清晰,因此,在项目生命周期的初始阶段,最关键的工作是明确项目的概念和制定计划,并使之与未来的活动场所相适应。在这个阶段,以下方面需注意。
1.1组建并整合管理团队
在这个时期应组建并整合管理团队的关键成员。另外,要用大量时间与精力确定项目所需要的专业技术与行为。一切工作以人员为中心展开,这表明项目组织中不仅需要优秀的管理,而且需要人才,特别是在大型项目中位于项目管理梯队上层、具有领导才能的人士。
1.2阐明项目的理念或者方向
项目组织中的领导者应该阐明项目的理念或者方向,这种理念可能包含在项目经济性目标之外更高的目标,真正的领导者在实施所提出的理念时也会认真思考并采取关键的行动。领导者的行为应真正符合他们所倡导的理念。
1.3项目谈判
项目立项阶段管理过程中关键的风险承担者是项目的出资者。在项目立项阶段,管理层的一项关键工作是和项目主顾就项目概念和战略进行谈判,以达成一致意见;
另外,还要与项目主顾就全面资源计划和项目期限进行谈判。这项谈判非常重要,这不仅关系到项目的执行,而且直接影响项目管理层与项目主顾之间建立良好、清晰的工作关系。
1.4制定项目运作计划的步骤
在项目立项阶段,项目管理层制定项目运作计划的具体工作可以分为三个基本步骤。
确定工作的细分及相应的产出
工作细分明确所要进行的各项工作是指项目人员需采取的行动,在确定工作细分时,明确必须相应生产的有形产品。
工作任务排序
在运作计划中需要列出各项工作所需的时间,各项任务之间的互动关系,以及这些工作的最后完成顺序,这个步骤被称为“工作任务排序”。无论是
将工作按照网状关系排列,还是简单地以时间顺序进行排列,都可以使项目管理层获得项目运作计划的整体视野。工作任务关系图可以有多种形式,最简单的形式之一,是列出以时间标出的一阶段性工作的顺序,这种任务关系图通常被称为“甘特图”,图中对一项工作的明确,也使另外两项重要计划 工作得以明确:支持各项工作所需的资源和各项工作间的互动关系。“甘特图”形象地表明各项工作任务所需要的资源以及相应的时间。
评估项目的因素中,如果有些因素受到阻碍,将会使整个项目停顿不前,这些因素就是项目的最关键因素,项目最关键因素的序列就是著名的“关键路径”,确定关键路径的目标只是为了确保项目按照这一特定顺序仔细执行,从而不至于使整个项目停顿、拖延。管理团队对于无法确定的工作,应该在项目运作计划中进行充分的分析研究,从而最大限度地降低这些工作可能对整个项目所产生的影响。
确定任务所需资源
确定任务所需资源,即确定工作序列中各项任务所需的资源,以及所计划的资源利用方式。同时,项目管理人员应该理解某项工作与其他工作之间的关系,这种关系或者是以工作产品为基础,这些资源包括时间,当然也包括人力资源。
项目需要哪些技术以及相应哪些人需要成为项目团队的成员?哪些人是项目团队直接的、长期成员以及哪些人只是在特定的时间内成为项目团队的成员?哪些工作可以被进一步分包,而哪些工作必须由项目管理团队的成员直接完成?
以上的所有安排都同样适用于采取企业型管理的项目,以及采取比较传统的行政管理模式的项目。此外,项目参与人员需要花费额外时间来确定他们在项目中的作用,以及去了解怎样和项目的其他参与方交流或者协作。
1.5项目立项阶段的管理建议
项目的成功要依赖于项目管理团队,项目管理团队不仅要完成管理整个项目的任务,激励并指导其他各方完成相应的工作,而且还要为项目管理结构提供最根本的支持。项目立项阶段管理,有以下的建议。
明确目标
项目管理团队的项目目标非常清晰,并且能用通俗易懂的语言将项目目标表示出来,使每一个人都明白这个目标,不仅使团队有更多的动力投入自己的时间与精力,而且他们也能够做出更好的决策。 规划标准化、确切无误
在规划下一步工作时,尽最大可能使规划建立在标准化、确切无误的基础上。
简化项目因素
简单化是指合作方与项目团队成员之间协议的简单化、项目团队成员之间的关系以及项目各项工作之间的关系简单化。
在设计项目规划时,项目管理层应该牢记:尽量简单化!
所以项目管理层应该尽量减少工作所涉及的因素,以及计划参加项目的各方数量,重点考虑责任与能力。
与其他人有效合作
在项目管理中,与其他人有效合作的主要决定因素是:项目管理层设定的基本行为准则与项目运营规则。在确定项目适当的运营规则和管理环境以后,至少还应该在项目组织内建立信任。很明显,如果与参与方建立了信任关系,项目团队就可以提高工作绩效。
此外,在许多情况下,即使网络与通信再发达,也无法替代工作现场的几个小组的“默契交流”。当这些小组在一起工作时,会产生大量正式的与非正式的信息,不要低估非正式交往的力量,非正式交往经常产生问题的创新解决方案,以及减少项目组织内的各种矛盾与冲突。
2 项目启动阶段
在项目启动阶段,项目的规划将逐步成为现实,其中包括一些为了实现项目目标而采取的实际措施与行动。在项目启动阶段,确定项目目标、前景评估,以及规划的各种专业团队,都必须与领导项目的团队进行全面合作。所有团队都必须和项目团队成员以及加入项目的或者与项目联系在一起的合作方进行合作与沟通。
在项目的这个阶段,最有可能在各个方面产生矛盾与冲突,会产生许多管理上的挑战,特别是在大型复杂的项目中。有必要将项目的经济因素与各
方的工作联结起来,对项目参与各方反复灌输一些非正式的制度和行为规则;有必要确立清晰的、各方共同接受的工作与资源计划;将另外一些人士可能拥有新的、重要的信息,特别是那些负责项目实施的人考虑进来至关重要的。最后,以上的所有工作都必须由项目管理团队来完成。在此阶段,有以下方面需要注意。
2.1项目管理层必须关注的基本行为
如果要在项目启动阶段取得成功,项目管理层须关注以下基本行为。 整体目标和理念的传达要清晰
整体项目的前景、目标的说明和传达要清晰明确。任何规定明确的运作限制条件、行为准则,以及非正式行为准则,都必须通过恰当的途径传达。并非所有的传达都要以备忘录的形式出现,而可以通过各种形式进行传达,从书面的指令到为项目各方相互交流而召开的非正式会议。
项目从开始就要传达希望项目各方遵守的一些行为准则和规定的信息,这些关键规则的表述形式要简明扼要。
项目运作计划的传达
对于项目团队新增的成员和项目其他参与方,都需要把项目运作计划传达到,目的是让项目所有相关人员都清楚地了解项目各项任务的关系。通常,项目管理方所犯的错误是封锁了那些可以帮助项目其他参与方做出决定的信息。实际上,项目管理层的一项重要工作是将这类信息充分传达到项目各方,使项目的所有人员以及合同方都能据此形成正确的思维,做出正确的决策。
角色分工、责任和汇报关系的传达
在项目启动阶段,还有一项重要的工作就是角色分工、责任和汇报关系的传达。项目组织中所产生的大量不必要的、非常耗费精力的冲突,起源于项目早期阶段项目团队的各个成员没有清楚了解各自的角色定位与相应的责任。。
与项目团队成员和合作方签约
项目管理中的一项重要工作就是与项目团队成员和合作方签定合同。合同必须清晰地列出各方所提供的价值以及任何能够提高工作绩效的激励措
在完成项目任务方面,信任比合同更重要,而且信任要从项目开始时建立,信任和良好的工作关系,只有通过公平合理地对待项目组织中的各方,以及每位人员才能真正建立起来,因此,千万不要胁迫项目各方接受不现实的条款,也不要欺骗他们接受不现实的资源约定。此外,合同协商是一个持续的过程,并不能在项目启动阶段因为各方暂时达成一致意见就结束。
2.2项目启动阶段的管理建议
从项目启动阶段重要的管理工作中,可以得出下面一些阶段性管理建议。
项目经理在实施计划时应该认识到自身的局限
在项目启动阶段,项目经理和项目管理团队经常犯一些不应该犯的错误,如在沟通方面。 “项目早期阶段有三条重要规则:沟通,沟通,沟通!” 许多企业型项目组织在这个阶段会四分五裂:在企业型项目组织中,应该认真制定项目启动阶段合理的时间表。通常,项目管理团队要花上大量超出计划的时间,才能使项目真正启动,这种问题是由项目成员的一些不切实际的想法导致的。因为在缺乏成熟的管理工具和技术的情况下,项目成员往往认为“我们应该马上采取行动”!他们没有意识到在管理工具欠缺的时候,更需要多花时间进行项目成员之间的协调。
建立备用资源
人们无法事先知道项目过程中会出现哪些错误,在项目资源计划中加上适当的额外备用资源,可以应付一些错误的产生,从而确保项目成员仍有必要的资源进行工作。如果在预算和时间上没有预留额外的资源,在项目中就不能应付意外情况的发生。
在项目组织中有各式各样的“备用”安排。例如可以预留空余时间,鼓励项目成员的创新活动。在项目预算中列出一定的可自由支配的资金,供项目关键的资源提供者适量分配给那些试图“尝试”新作法的项目成员。 没有预备资源的计划,既不能鼓励项目成员创新,也无法使项目成员协作,解决意料之外的难题。当项目的任何成员需要为别的成员提供额外帮助时,如果没有备用的资源,就无法采取实际行动,甚至连设想合作都比较困
尽量减少管理的层次和协调职位
参与协调的人越多,完成任务需要的程序也就越多。因此,在项目中应该设立尽可能少的运作规则和汇报制度。为了提高创造性,使项目成员真正发挥才能,就要让项目成员拥有一定的决策自由。总之,为了有效达到目的,集中控制和个人自由之间要取得平衡。
大多数成功的项目一般都分解成几个子项目,分别由较小的团队来管理。这些小型团队有明确的责任去完成指定的任务,同时也拥有一定的自由和职责做出决定,从而达到预定的目标。这样,负责项目具体实施的人员不仅有责任,而且有一定的权力,从而使项目得以成功地执行。
以人为核心
有许多项目经理有希望控制一切的欲望,这种欲望的根源通常是一种设想:即通过个人管理控制一切可以降低失败的概率,从而提高成功的机率。个人式管理或者集中式控制往往有一定的负作用。
项目中的成员并非因为受到监督才有动力进行工作,而且,一个人也不可能知道每一件发生的事情,这并不是说项目管理层不应该了解、监控项目的进程,而是希望项目管理层在尽可能的情况下扩大项目成员决策的范围,让那些拥有最有效信息的项目成员做出具体的决定。位于项目组织的管理高层,并不意味着就能拥有最有效的信息去解决实际中产生的问题。这再一次证明项目管理应该以人为核心。
项目管理层应该重点考虑项目成员的素质、他们是否适合所分配的具体工作,以及他们如何完成相应的工作。项目管理层必须确保具有相应责任的项目成员得到适当的培训去从事分配的工作,或者作为一种选择方案,项目成员愿意承担责任,迅速熟悉新的工作领域。
适当的项目文化
项目管理层可能比较关注如何使项目顺利启动,不过,还有一项关键性工作就是建立适当的项目文化。这项工作包括确定并强化各种非正式的项目运作规则,并且使项目成员意识到自己是在做重要的事情。
当项目真正启动后,项目成员已经开始各自的工作,在项目中灌输更高
的目标和更适当的行为方式的机会就已经逐步消失了。项目管理层一定要确保所有项目成员理解管理团队的理念,在项目执行过程中,强化管理层认可的行为,公开指出管理层不认可的行为。
项目管理层的另一项重要工作是建立适当的总结和学习机制。这种总结学习的机制可以是“讨论会”,项目成员在会上定期见面交流;或者是总结板报。只要能使项目成员保持学习的热情和动力即可。
3 项目发展/成熟阶段 在每项工作都启动以后,项目的各项工作的进展都会加快。从责任者的角度而言,在这个阶段项目的主角应该是项目团队或者个人以及此阶段的合作方。项目管理的重点,也会随着项目从早期成熟阶段,转到更接近项目完成的比较成熟的阶段。
3.1工作流程
在项目发展成熟阶段,管理层的关键工作是持续保持项目的动力,以及管理正在发展着的项目。大多数项目的主要问题不再是管理项目成员的个人工作,而是着重处理项目发展过程中对其他方面能够产生影响的特殊事件和互动关系。因此,在项目发展成熟阶段,管理工作的重点应该放在工作流程上,而不是项目团队中其他成员的实际工作上。
3.2关键路径
在项目工作网络图中存在一条数学意义明确的关键路径,项目过程中工作上的一些微小延误都会改变关键路径。因此,项目管理层应该随时确认最新的关键路径,并且及时通知项目组织中的每一位成员。
3.3互相合作
关键的一点是项目小组之间的合作,而不是互相争夺资源。每一位项目成员都必须理解合作的价值,而不能“狭隘地维护自己的利益”。项目组织中往往存在着一种适度的竞争气氛,通常,健康的竞争气氛非常有利于项目组织的发展。
3.4关键节点评估
在项目中有许多相互依赖、相互影响的工作,因此,一些工作的结果往往直接影响到下一步的工作。项目管理层必须时刻审查相互依赖工作之间的变化,以及这些变化对项目其他工作所产生的影响。许多项目失败的原因是由于一项工作的延误产生的“多米诺骨牌”效应,该项工作与其他两项或者三项工作紧密相连,这项工作的延误,导致其他的工作也相应延误。为了使项目重回正轨,需要动用关键资源去完成该项工作,从而更进一步加剧“多米诺骨牌”效应。
对项目工作进行经常评估,标明相应的日期,可以为项目成员提供清晰的项目工作座标图。这也确立了一项清晰的标准,即项目的每项工作都很重要,只有项目所有的工作都顺利完成,整个项目才算真正成功。工作评估也实使项目成员真正了解工作绩效的重要性。通过以下方面可以获得准确的绩效评估。
及时、准确的沟通
在项目管理的过程中,沟通必须非常真实,管理层应该及时劝阻或者惩罚任何传递不正确沟通信息的项目成员,因为只有准确的数据,才能使项目评估总结工作准确无误。
进行阶段性评估
获得准确绩效评估的方法是和关键项目成员一起采取阶段性评估,来总结整个项目的进展。在开展的阶段性评估中,讨论已完成、未完成,以及即将实施的工作,并做出正确的评估,参会的人员通常有外来服务商,他们可起到仲裁作用,并能提出有用的建议。
建立外部评估委员会
在项目开始时就建立专门的外部评估委员会,外部评估委员会仅仅是项目的顾问,对项目的进展做出阶段性评估,并且及时提供项目当前状况的独立评估报告。
评估委员会的组成人员不能从项目获得直接利益,也不能与项目有任何直接关系,但是必须具备关于该项目所需的管理方法,或者所使用的技术等方面的专业知识和技能。
3.5维护组织沟通的渠道
当项目的各项工作有序展开的时候,项目管理层应担负起建立、维护组织沟通渠道的任务,并且成为沟通的平台。成功的项目管理层应认识到,项目成员不仅需要了解他们所从事的工作,也需要了解所从事工作的背景。关于维护组织的沟通渠道主要包括几个方面。
外部因素对项目的影响
有效的项目管理层在项目各个小组成员直接提供帮助的情况下,应该随时关注无法预料的各种外部影响。这些外来影响包括无法预料的管理规定与时间或者运输、或者项目整体目标方面的变化等。
外部影响固然重要,便更重要的是项目管理团队,尤其是项目负责人忽略了项目的外部环境。切记项目的许多恶性事件往往来自项目外部,而非内部。
临时会议的重要性
在创业型管理方式的项目中,临时会议非常重要,项目成员甚至可以每天用十分钟讨论所遇到的问题、机遇以及项目目前的处境。这种临时会议不必每天都举行,但是必须定期召开,让项目成员交流项目的现状以及其他各种信息,这些交流比采取传统管理模式项目中的会议要重要得多。
如何提高沟通效果
管理层如何才能提高沟通效果呢?关键是实地调查研究,并真正回答项目成员所提出的问题。许多成功的项目经理,总是毫不迟疑地公布项目的现状报告以供每位项目成员参考,而且不会只报喜不报忧,关键是要让项目组织成员了解真实情况。
3.6 对失败的管理
越来越多的人认识到“无失败”管理既不实际也不可取,如果一个组织没有经历过任何失败,这说明该组织成员从来没有尝试过创新。因此,项目管理层应该做的不是消除任何失败而是迅速识别出失败、并作出终止失败的行为,并且从失败中汲取经验教训。
有许多项目经理宣称一些项目之所以成功并不是因为他们每一项工作都进展顺利,而是因为他们更擅长于消除工作失败所产生的影响。由于意料
第 11 页 共 25 页
不到的情况时有发生,事情往往不会按照原计划那样发展,在项目中几乎每天都有困难发生,重要的是迅速识别困难、理解困难的本质,找到并实施替代方案。
项目管理的根本在于解决所发生的失败,而并非建立一种不允许失败的组织。在失败被视为“禁忌”的组织中,项目成员不会及时识别已产生的失败,因而导致失败长期存在下去。
3.7表彰
作为成功项目的重要特征,表彰是一种非常重要的项目管理行为,它可以使项目成员获得成就感,以及对组织的归属感,另外,还可以使项目成员更加注重工作的成绩,从而使项目顺利发展。任何项目完美的标志都是“取得成功”。
项目成功的最佳衡量方法是项目完成时的实际验收交付。
不过,许多成功的项目经理和项目组织把重点放在清晰的、阶段性的交付上来获得整个项目的成功——他们通过表彰阶段性成绩来确保项目的整体成功。
在实际工作中,有许多项目经理非常关注项目费用率以及工作水准,这些确实是比较有效的衡量标准,也是反映项目所用资源及工作效率的重要指标。
如果项目经理能够将项目分解成为清晰的、阶段性的工作产出,项目成员必须真正按时交付这些任务,而且项目经理及时确认已交付的产出,那么,这个项目经理就很有可能成功。
3.8项目发展阶段的管理建议
从上述项目发展阶段管理层应该关注的工作中,可以引导出以下三项通用的管理建议。
保持行为导向
许多项目管理团队在项目发展过程中变得筋疲力尽,从而容易疏忽大意,这是复杂艰难的项目立项阶段以后出现的正常反映,项目领导团队应该通过各种管理手段和人际方式重新建立项目发展的动力。
按阶段评估每项工作
第 12 页 共 25 页
阶段性评估可以较早发现那些微小的疏忽,从而避免以后酿成灾难性后果。
关注决策过程
项目管理层不仅需要关注项目成员所做的决定,以及决定的最终结果,而且要关注项目成员是怎样做出决定的。项目管理层不可能查看每件事的决策过程,可是,在项目的发展过程中,特别是在挑战性很强的工作中,项目成员采用的决策方式有可能很不理想。在这种情况下,项目管理层应该分析项目成员所做的决策,帮助他们了解错误想法出在什么时候。
4 项目完成阶段 项目管理层的关注重点应该是衡量并控制项目的最后几项要素。此时项目的关键责任人,除了正在焦急等待项目最终产品或服务的项目客户之外,就是正在完成各自工作的项目工作人员和合作方。
即使对于成功的项目而言,项目的完成阶段也都是最危险的时期,因为,如果项目中的每件工作都进展顺利,项目人员就会很容易认为,项目将很快完成,态度就会变得松懈。
另外,一些根本不可能取得共识的暗含协议,常常也会出现。
在项目的这个阶段,项目管理层产生大量的焦虑,而项目的客户或者主顾却抱着过高的期望。在项目的这个阶段,需要大量认真的工作,项目管理层应该在项目日常工作中发挥重要的积极作用,即使是参与管理的项目经理在这个阶段都要更加直接地管理项目的各项工作。因此,在项目完成阶段,项目管理层要面临许多特殊的挑战,这些挑战主要有以下方面。
4.1确保每项关键工作顺利完成
许多项目人员以及合同方在最后阶段经常忽略一些对项目非常重要的微小因素,因为在项目将要完成的时候,项目管理层已经失去了许多对项目合作方或者相关人员的约束力。
因此,项目管理层必须使项目保持在持续运营的状态,在这个阶段,与项目中关键人员和合作方每天开会,甚至一天开两次会,项目管理层要持续评估项目的运作状况。这样做的原因是:在当前阶段已经没有时间进行漫长的沟通了,小的错误可能随时阻碍项目的最后进程。
第 13 页 共 25 页
4.2避免项目扩展
项目一些工作范围的扩大可能使项目完工期限延长,从而为项目的客户带来许多困难,并且增加项目的成本。项目管理层应该理解这样一个事实,即这时项目人员个人和合作方(特别是合同方)的本能意识,并不是完成工作,而是想扩大工作范围,并继续下去。因为人类有一种“不负责”的本性,即愿意从事他所熟悉的事物。因此,项目管理层必须仔细并迅速地开展工作,确保每一个项目成员和合同方都按照明确的既定计划和方式完成各自的工作,并且结束与项目的关系。
4.3帮助相关人员正常退出
帮助项目成员和合同方正常退出项目是一种商业行为,也是一种道德行为。在项目中辛勤工作的人员,通常希望项目管理层帮助他们找到另一份工作,这件事情非常耗费项目管理层的时间,但是对于项目涉及的各方都非常重要。
4.4传递学习经验
项目管理层还要承担一项重要义务:将该项目中的经验传递给同类项目的下一代项目管理者,项目管理层的工作重点应该放在项目记录和学习经验的整理方面。由于要等到项目真正完成后才需进行项目的事后总结分析,那么,这个时候就是收集相关资料的关键时期,因为随着项目成员和其他合作方的陆续离开,大量的数据和记录极有可能丢失。
4.5全力关注项目的完成阶段
对于项目管理层的一项最重要的管理就是:在项目完成阶段投入大量精力,并且密切关注工作中的细节。
只有将成功的项目管理看作是在变化的环境中对人的管理,而不是一种按照预先计划的任务实施的过程,项目管理才会既富有挑战性又有趣味性。 项目管理是以理解项目的目标而开始的。
项目是一项有计划的任务。项目管理涉及人力、资源、时间、技术目标,关系到项目实施的结果,因此项目管理中需要注意的几个方面包括:项目的相同点、项目管理与普通管理的差别、项目管理中常见的错误观点、过分地强调项目计划的重要性的原因、项目管理方式、成功项目管理的基础条件。
第 14 页 共 25 页
软件工程 软件产品质量要求与评价(SQuaRE)商业现货(COTS)软件产品的质量要求和测试细则
第 15 页 共 25 页
2、 软件测试的原则
软件测试从不同的角度出发会派生出两种不同的测试原则,从用户的角度出发,就是希望通过软件测试能充分暴露软件中存在的问题和缺陷,从而考虑是否可以接受该产品,从开发者的角度出发,就是希望测试能表明软件产品不存在错误,已经正确地实现了用户的需求,确立人们对软件质量的信心。
测试的原则就是从用户和开发者的角度出发进行软件产品测试的,通过测试,可以为用户提供放心的产品,并对优秀的产品进行认证。
为了达到上述的原则,那么需要注意以下几点:
1.应当把“尽早和不断的测试”作为开发者的座右铭
2.程序员应该避免检查自己的程序,测试工作应该由独立的专业的软件测试机构来完成。
3.设计测试用例时应该考虑到合法的输入和不合法的输入以及各种边界条件,特殊情况下要制造极端状态和意外状态,比如网络异常中断、电源断电等情况。
4.一定要注意测试中的错误集中发生现象,这和程序员的编程水平和习惯有很大的关系。
5.对测试错误结果一定要有一个确认的过程,一般有A测试出来的错误,一定要有一个B来确认,严重的错误可以召开评审会进行讨论和分析。
6.制定严格的测试计划,并把测试时间安排的尽量宽松,不要希望在极短的时间内完成一个高水平的测试。
7.回归测试的关联性一定要引起充分的注意,修改一个错误而引起更多的错误出现的现象并不少见。
8.妥善保存一切测试过程文档,意义是不言而喻的,测试的重现性往往要靠测试文档
在测试实施之前,软件测试工程师必须确定将要采用的测试策略和测试方法,并以此为依据制定详细的测试案例。而一个好的测试策略和测试方法必将给软件测试带来事半功倍的效果,它可以充分利用有限的人力和物力资源,高效率、高质量地完成测试。
第 16 页 共 25 页
那么,究竟如何才能确定一个好的测试策略和测试方法呢,一般来说,在确定测试方法时,应该遵循以下原则:
第一,要根据程序的重要性和一旦发生故障将造成的损失来确定它的测试等级和测试重点;
第二,要认真研究测试策略,以便能使用尽可能少的测试用例,发现尽可能多的程序错误,因为一次完整的软件测试过后,如果程序中遗留的错误过多并且很严重,则表明本次测试是失败的,是不足的,而测试不足意味着让用户承担隐藏错误带来的危险,同时反过来说如果过度测试则又会浪费许多宝贵的资源。我们需要在这两点上进行权衡,找到一个最佳平衡点。
测试依据:
《GB/T 25000.51-2010 软件工程 软件产品质量要求与评价(SQuaRE) 商业现货(COTS)软件产品的质量要求和测试细则》
第 17 页 共 25 页
3、 软件测试的基本方法
软件测试的方法和技术是多种多样的。对于软件测试技术,可以从不同的角度加以分类:从是否需要执行被测软件的角度,可分为静态测试和动态测试。从测试是否针对系统的内部结构和具体实现算法的角度来看,可分为白盒测试和黑盒测试。
黑盒测试
黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。
黑盒测试方法主要有等价类划分、边界值分析、错误推测法、因果图等,主要用于软件确认测试。“黑盒”法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。“黑盒”法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。
白盒测试
白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑覆盖、基本路径测试等,主要用于软件验证。
“白盒”法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。“白盒”法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。但即使每条路径都测试了仍然可能有错误。第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。第二,穷举路径测试不可能查出程序中因遗漏路径而出错。第三,穷举路径测试可能发现不了一些与数据相关的错误。
第 18 页 共 25 页
第 19 页 共 25 页
4、 江苏软件测试公共服务平台工具介绍
项目全生命周期管理平台工具
第 20 页 共 25 页
工具技术及功能:
测试流程与方法技术及功能
(1)提供项目计划模板和成功经验帮助团队快速定义项目目标、规划项目资源和确定项目里程碑;
(2)提供完整的IT生命周期管理过程,帮助业务和IT部门的有效合作,保持IT项目和业务发展目标一致,提高IT的整体投资汇报率;
(3)提供功能强大的、可视化的、易用的过程定义工具,方便用户根据项目的实际需要,定制出自己的RUP式的软件项目管理过程;
测试过程管理技术及功能
IBM Rational Quality Manager Standard Edition(RQM)
HP Quality Center(QC)
测试过程能够完成从需求、计划、设计、实施、执行到测试结果分析、测试报告的自动生成整个测试生命周期的管理,包括:
(1)能够完成通过测试需求覆盖率来评价测试完备性,并在测试需求发生变化后,可自动显示可能需要修改的测试用例;
(2)能够完成基于目标的测试用例的层次化的分类管理和组织管理,批量地执行一组测试用例,从而可以有效地进行自动化的回归测试;
(3)能够完成对自动执行测试用例和手工执行的测试用例的管理;
(4)能够根据实际测试执行的情况,自动的生成各种测试分析报告。 需求管理技术及功能
IBM Rational DOORS(DOORS)
(1)Rational DOORS和软件生命周期工具易于集成,可以集成RQM或者QC;
(2)可以自定义需求体系结构;
(3)可以自定义需求项目模板;
(4)具备需求到测试的跟踪能力,将需求用例和测试用例关联起来,为软件开发提供全生命周期的跟踪能力;
(5)具备需求的属性定制能力和查询能力;
(6)具备需求管理流程定制、需求变更、需求审计能力。
测试资产管理技术及功能
IBM Rational ClearCase(CC)
(1)操作简单、方便,可以在Windows和Unix以及Linux等多种操作系统上运行,而且可以在多种操作系统环境下实现统一的软件配置管理流程。还可以实现和多种主流集成开发环境(IDE)集成;
(2)提供视图和工作空间的支持,开发和测试人员可以在独立的工作空间进行工作,而不受到其他开发人员的影响,同时可以及时地将自己的开发成果与其他人员共享,从而实现软件并行开发,提高软件开发的质量和效率;
(3)提供独特的动态视图支持,可以不通过下载实时访问最新版本;
(4)可以根据实际测试工作的需要确定基线和版本管理的策略,及时构建出满足产品开发需要的发布成果,实现产品的多版本并行开发,提高了产品交付使用的速度;
(5)提供构建管理,一方面可以建立可执行代码和源代码之间的跟踪关系;另一方面可以通过自带命令进行构建,实现构建的自动化。同时不同的视图间可以根据要求共享构建成果,提高了构建的效率和准确性;
(6)提供丰富的扩展功能点,提供Trigger以及开发API,可以通过VB,Perl以及Java等实现自定义的扩展,满足客户化的需要;
(7)提供多服务器配置功能,实现负载均衡,保证开发的高可靠性;提供CCRC可以通过HTTP协议进行优于浏览器的远程并行开发工作。
测试缺陷管理技术及功能
IBM Rational ClearQuest (CQ)
(1)能捕捉、跟踪并管理各种类型(缺陷、功能增强等)的变更请求,帮助开发团队以更高的效率交付出更高质量的产品;
(2) 提供灵活多样的定制功能,包括流程、用户界面和查询,适应各种团队的开发;
(3)支持各种客户端界面,包括基于Web、本地客户端和Eclipse客户端方式,有效地提交变更请求;
(4) 各种图表制作和报告制作功能,为项目的宏观监控及微观调控提供有
效的数据基础;
(5) 高度的集成性和可扩展性, 可支持任意团队规模、成员位置或使用平台的项目,能与多种工具进行集成实现变更完整性,包括需求管理工具、资产管理工具、开发工具、项目管理工具等等。
白盒测试工具技术及功能
IBM PurifyPlus
具备代码级的测试能力,以便帮助客户尽早发现软件缺陷,降低修复缺陷的成本。白盒测试能力包括:
(1)运行时分析,分析内存、覆盖、性能等;
(2)静态分析,进行代码评审、结构分析、数据流分析等;
(3)单元测试、集成测试和系统测试能力,以及运行时状态追踪。
安全测试工具技术及功能
IBM Rational AppScan
(1)适合Web应用程序漏洞扫描;
(2)支持漏洞规则库的灵活管理,包括在线/手动升级、规则导入/导出、规则自定义等功能,能够确保及时使用最新的、最全面的、最准确的漏洞攻击技术和方法来抵御各种攻击;
(3)扫描的全面性和准确性,支持当前采用的Web应用的技术,如JavaScript、HTTPS以及认证等,以便确保发现URL的完整性;
(4)报表功能和漏洞管理,可以检查40多种国际行业标准和法规;能够提供给开发人员详细的漏洞测试报告,包括测试用例的执行过程数据;提供给各个管理人员统计分析报告,可以比对不同部门、不同应用漏洞发现的情况、趋势、分布等等。
功能测试工具技术及功能 IBM Rational Functional Tester
HP QuickTest Professional
能够进行多种环境下的功能测试,包括:
(1)能够实现自动化的功能/回归测试;
(2)能够实现大批量数据驱动情况的自动化功能测试;
(3)测试脚本要易学易用,便于维护。
性能测试工具技术及功能 IBM Rational Performance Tester
LoadRunner
(1)性能测试脚本的能力:包括性能测试员构造各种复杂性能测试场景的能力和测试脚本的扩展和维护能力;
(2)测试脚本的参数化能力:能模拟大批量虚拟用户对被测系统进行各种操作,确保测试脚本的参数化能力和上下文数据的关联能力;
(3)构建各种负载模型的能力:准确模拟被测系统的真实负载情况,是确保性能测试有效、准确的前提;
(4)被测对象的性能监控能力:为性能测试员进行各种性能分析、定位问题和解决问题提供保证;
(5)性能测试结果的分析能力:能使用各种报告和报表,对性能测试过程中的各种性能数据进行有效分析,正确认识被测系统的各项性能指标。