软件测试项目的风险管理
[摘要]近年来,软件行业迅速发展,软件测试作为保证软件质量的重要手段,越来越引起人们的重视。软件测试的目的是为了提供高质量的产品,测试的成效与软件存在的问题息息相关,软件本身的复杂性及测试本身的特性决定了测试活动实施过程中风险的大量存在,因此对项冃风险进行管理是迫切的和必要的。如果能预先重视风险的评估,并对可能出现额风险制定积极的应对计划,就可以在风险到来的时候,最大限度的避免风险或是降低风险所带来的损失。本文首先对项目风险管理的发展历程、定义、过程、特点等进行综述,随后介绍软件测试项目的特点及风险来源,最后分析软件测试项目的几种常见风险,阐述软件测试的
风险管理方法。
[关键字]项目管理风险管理软件测试
RiskManagement of Software Testing Project
[Abstract] In recent years, software industry is growing rapidly, asan important method of software quality ‘software testing attractsmore and more attention. The purpose of software testing is toprovide high-quality products, the results of the test are closelyrelated to the problems of the software. The complexity of softwareand the characteristics of testi ng determi ne the risk of thetesting activity, so it is urgent and necessary to man age the riskof the software testing project. If we can pay a pre emphasis on theassessment of the risk, and to develop a positive response plan forthe risk of the potential risk, we can maximize avoid the risk or toreduce the loss of the risk. Firstly, author summarizes thedevelopment, definition, process and characteristics of projectmanagement, then introduces the feature , process and risk sources ofsoftware testing project. Finally, author analyzes several comm onrisks of software testi ng projects, and expo unds the riskmanagement method of software testing.
[Key word] ProjectManagement Project Risk Management Software Testing
目录
弓丨言...........................................................................1一、项目风险管理概述.............................................................1 (-)项目风险管理的定义及特点...............................................1 (-)项目风险管理的一般过程.................................................2
二、软件测试项目简介.............................................................4(-)软件测试项目的发展历程及特点...........................................4(-)软件测试的一般过程及风险来源...........................................5
三、软件测试项目的风险管理.......................................................7(-)软件测试的几种常见风险.................................................7(二)软件测试的风险管理方法................................................8
致谢语..........................................................................11
结论............................................................................10
参考文献........................................................................12
引言
项目风险管理(ProjectRisk Management)是现代管理科学的重要分支,是一门新兴的经济管理学科,是在经济学、管理学、行为科学、运筹学、概率统计、计算机科学、控制论、信息论等学科和现代工程技术额基础上,结合社会和科技进步而逐渐形成的边缘性学科。本文从软件测试项冃出发,分析软件测试的特点,风险来源,并对软件测试项冃的风险管理提出了几种方案,把项目风险管理知识与软件测试工作很好地结合起来,对测试管理者的工作有很人帮助。
一、项目风险管理概述
(-)项目风险管理的定义及特点
项目风险管理问题起源于第一次世界大战中战败的徳国,20世纪30 年代在美国得到了发展,50 年代以来收到了欧美各国的普遍重视和广泛应用,特别是20世纪80 年代以来,高新技
向发展,另一方面,项目风险管理的范围和应用领域不断扩展,特别在工程领域、金融领域得
术额快速发展,世界经济的全球化,一方面,项目风险管理的研究逐步向系统化、专业化的方
到了高度重视和快速发展。在我国,随着改革开发的不管深化和社会主义市场经济体制的逐步建立,项目管理环境发生了根本性变化,项目风险显著提高,项目管理模式的广泛应用,项FI招投标制、项冃业主责任制和风险投资机制额逐步推广,以及国际保险市场的局限性和我国保险市场发展额相对滞后,欧要求各项目组织加强自身的风险管理。而我国目前对项目风险管理的研究仍是一个薄弱环节,风险意识不强,风险管理机制不健全,亟待加强项目风险管理研究。
因此,项目风险管理的研究、培训及推广对促进我国经济稳定、持续、快速的发展具有重大的显示意义。
上述回顾了项冃风险在世界及我国的发展历程及状况,那什么是项冃风险管理呢?从系统和过程的角度来看,项目风险是一种系统过程活动,是项目管理过程中的有机组成部分,涉及到诸多因素,应用到许多系统工程的管理技术方法。项目风险管理有三个定义:(1)风险管理是系统识别和评估风险因素的形式化过程;(2)风险管理是识别和控制能够引起不希望变化的潜在领域和时间的形式、系统的方法;(3)风险管理是在项目识别、分析风险因素、采取必要对策的决策科学与艺术的结合。综上所述,项目风险管理是指通过风险识别、风险评估去认识项目的
风险,并以此为基础合理地使用各种管理方法、技术和手段对项目风险实行有效的控制,妥善处理风险事件所造成的不利后果,以最少的成本保证项目总体目标的实现的管理过程。
项目风险管理具有以下儿个特点:
1.全程管理。项n风险管理既不是项目实施之前对影响项n的不确定因素的查找罗列以及事前判断和以此为基础的教科书式的项目风险管理对策,也不是在具体的项目实施过程中风险发生时的应变和危机管理,也不是在项目风险发生后的补救方案与事后经验总结。真正意义上的项目风险管理应该是贯穿于整个项目的构思、设计、实施以及审查评价的全过程,要求项目负责人能够通过有效的风险识别过程对项目风险额预警监控,通过有效的风险管理工具和方法对项目运行过程中所产生的风险进行适当的分散并在项目风险发生时及时采取积极的应对措施、事后总结经验和改进项目风险管理方案。
2.全员管理。首先,这里的全员管理并不是对项目运行的全部参与人员的管理,而是说以上的所有人员都能参与到项目风险管理之中。也就是说所有参与项目过程的人都应当成为项目的主人,对项目所面临的风险责无旁贷。其次,项目风险管理不仅涉及项目本身在计划、组织和协调等过程中所产生的不确定性,还包括对社会坏境和自然环境等外部不确定因素的管理。
3. 全要素集成管理。从项目管理的目标方面来看,项目风险管理过程是在可能的范围内以
项目周期最短,成木最少,质量最为目标额一个多目标决策过程而不能仅满足于对单一目标的
追求。项目的周期、成本和质量是三个相互影响相互作用的变量,项目风险管理是对项FI 周期、成本以及最终完成质量的全要素集成管理。
(二)项目风险管理的一般过程
项冃风险管理的冃标是控制和处理项目风险,防止和减少损失,减轻或消除风险的不利影响,以最低成本取得对项目安全保障的满意结果,保证项目顺利进行。项目风险管理的目标通常分为两个部分:一是损失发生前的目标,而是损失发生后的目标,两者构成了风险管理的系统目标。
项目风险管理,一般可以分成5个步骤,即风险识别、风险分析、风险计划、风险控制以及风险跟踪。
(1)风险识别
风险识别是风险管理的第一步,也是风险管理的基础,是指试图用系统的方法来确定威胁
项目计划的因素,就是要知道风险是什么,导致风险的原因,在什么地方最容易岀现风险以及
风险显示出的特征。风险识别的主要方法包括生产流程分析法、风险专家调查列举法、资产财
务状况分析法、分解分析法和失误树分析法等。
(2)风险分析
风险分析就是通过对风险进行分析,来量化风险,评估已识别风险发生后对项目目标可能
的影响,并对风险进行排序,从而对不同程度的风险采取针对性的应对方案;
(3)风险计划
根据风险识别和风险分析的结果制定风险计划,风险计划应包括以下部分:风险标示、风
险描述、风险影响程度、责任、资源、时间、活动、应对措施、结果、负责人。
(4)风险控制
对风险进行识别、分析、计划后,需要对项目的风险采取有效的控制方法,即项目的风险
控制,主要方法有风险避免、风险弱化、风险转移和风险承担。风险避免是一种事前的风险应
对策略,是指通过措施来降低分先或风险的触发条件;风险弱化是将风险的发生概率或风险影
响程度降低到一个可以接受的程度;风险转移也是一种事情的风险应对策略,是指不去消除风
险,而是将风险转移给第三方;风险承担是指等风险发生后釆取措施来降低对项目的影响。
(5)风险跟踪
在风险受到控制以后,要及时进行跟踪,做好风险跟踪,监控风险的状况,例如风险是已
经发生、仍然存在还是已经消失;检查风险的对策是否有效、跟踪机制是否在运行;不断识别新
的风险并制定相应的应对措施。
通过风险管理,可加深对项目和风险的认识和理解,分清各方案的利弊,了解风险对项目
的影响,以便分散风险;编制应急计划是更有针对性;能够将处理风险后果的各种方式更灵活
地组织起来,在项目管理中减少被动,增加主动;为以后的规划和设计工作提供反馈,以便在
规划和设计阶段就采取措施防止和避免风险损失;可以是决策更有把握,更符合项目的方针和
目标,从总体上使项目减少风险,保证项目目标的实现,并且推动项目执行组织和管理人员积
累相关风险资料和数据,以便改进将来的项目管理。
二、软件测试项目简介
早期的软件开发过程中,测试的含义比较狭窄,很多人对对软件测试没有充分的认识,认
为软件测试可有可无,但随着软件规模的不断扩大,软件设计的复杂程度不断提高,软件开发
屮出现缺陷的机会越来越多。同时,由于人们对软件质量的重视程度越來越高,在大多数软件开发组织中,软件测试工作是软件产品的最后一道“质量关”,在软件开发中的地位越来越重要,因而软件测试的项目管理也日益重要起来。
(一)软件测试项目的发展历程及特点
随着软件行业的发展,软件测试也在不断地发展,软件测试大概经历了如下的几个重要阶段:早期软件的复杂度和对较低,软件规模也比较小,软件错误大部分在开发人员的调试阶段就可以发现并解决了,这个阶段的测试就等同于调试;,在20世纪50 年代和60年代,人们开始意识到仅仅依靠调试还不够,必须引入一个独立的测试组织来进行软件测试,这个阶段没有形成任何测试方法理论,主要靠对错误猜测和经验推断;1973年,Bill Hetzel 博士给出了软件测试的第一个定义:“软件测试就是对程序能够按预期的要求运行建立起一种信心”,这一阶段形成了对软件测试的认识就是:软件测试是用于验证软件产品是否是正确工作的、复合要求的;20 世纪80年代后,软件行业飞速发展,软件规模越来越大,复杂度越来越高,人们对软件的质量开始重视,软件测试的理论和技术都得到了快速的发展,逐渐发展为专门的学科;20 世纪90
年代后,软件工程百花齐放,出现了各种软件开发的新模式,软件测试作为保证软件质量的方法手段也随之推陈出新,软件开发与软件测试出现了融合的趋势。
软件测试是有计划、有组织和系统性的软件质量保证活动,而不是随意、松散、杂乱的实施过程。软件测试的冃的是尽早地找出软件的缺陷,并且协助软件开发人员,确保每个软件缺陷都在合适的阶段进行了正确的处理。软件产品与传统产品不同,软件产品是不可见的,软件的质量属性不能简单地从外观上很肓观地显现出来,因此需要采用适合测试特点的适当方法,对软件的功能特性进行测试和评价。由于输入量太大、输出结果太多、路径组合太多,在有限的资源和时间条件下,找出所有的软件缺陷和错误,即完全的软件测试基本上是不可能实现的。软件测试不是软件编码后的一个附加的最后过程,而是涵盖需求分析、概要设计等在内的整个软件生命周期,以确保每一个阶段都经住考验。软件缺陷的存在是必然的,没有不存在缺陷的软件,由于软件测试中错误的相关性,
并非全部的软件缺陷都能够被成功修复。而且在缺陷的修复过程中会不可避免的引入新的错误。软件测试的根本目的是为了提供软件的质量而最终达到经济目的,因此软件测试应该在软件测试成本和软件质量效益二者间找到一个平衡点。最后,软件测试的目的不单单是发现缺陷这么简单,它也是一个分析的过程,没有对软件测试结果进行认真地分析,
就无法了解缺陷发生的原因和应对措施。 |
|
(-)软件测试的…般过程及风险来源
测试是贯穿软件整个牛命周期的一个系统的过程。系统化的测试过程能够在软件发布前发现更多的问题,并保证及早发现问题,从而以最小的代价更正问题。软件测试过程包括测试计划、测试设计、测试执行和测试评估几个基本步骤。
(1) 测试计划
测试计划就是定义一个测试项目的过程,确定个测试阶段的目标和策略,以便能够正确地度量和控制测试。这个过程将输出测试计划文档,明确要完成的测试活动,为测试过程的每一阶段提供清楚的目标;评估完成活动所需的时间和资源;设计测试组织和岗位职权,进行活动安排和资源分配;安排跟踪和控制测试过程的活动。对于测试计划的修订部分,需要进行重新评审。
(2) 测试设计阶段
测试设计就是根据测试计划设计测试方案,编写详细的测试脚木的过程。测试设计过程输出的是各测试阶段使用的测试用例。
将测试计划阶段制定的测试活动分解、细化为若干个可执行的测试过程,构造测试计划中
说明的执行测试所需的要素,这些要素通常包括驱动程序、测试数据集合实际执行测试所需的
软件;同时为每个测试过程选择适当的测试用例,准备测试环境和测试工具。
测试设计的结果可以作为各阶段测试计划的附件提交评审。测试设计的另一项内容是回归测试(即修改了旧代码后,重新进行测试以确定修改没有引入新的错误或导致其他代码产生错误)设计,即确定回归测试的用例集。对于测试用例的修订vufcn,也要求重新评审。
(3)测试执行阶段
按照测试计划,使用测试用例对待测试项目进行逐一的、详细的测试,将获得的运行结果与预期结果进行比较、分析和评估,判断软件是通过了每项测试还是失败,确定开发过程中将要执行的下一步工序;同事记录、跟踪和管理软件缺陷。
在每个测试执行之后,对发现的错课都要进行相应的修改,当软件修改以后,必须运行原有的全部测试用例重新测试,并验证测试结果,这样可确保修改后软件的正确性和质量。
在执行过程中,按照评价标准评价测试工作和被测软件,当发现测试工作存在问题时,应该修订测试计划,进行重测,直至测试达到规定的要求。另外为避免在修改错误时又产生新的错误,应定期进行回归测试。
回归测试是确认已测试的问题己不再存在的一项工作,每进行一个阶段应检骑执行结果与测试计划或测试设计文件中是否存在差异。若存在差异就应针对差异进行适度的调整,可能是修改测试设计文件的内容及测试计划额进度安排等各种情况。
(4)测试评估阶段
将测试执行阶段得到的测试结果进行测试分析和汇总,一次评定测试用例,测试项、软件总体质量等级。如果必要,还应组织专家评议,最终得到测试报告。
测试的对彖和结果应在测试报告中汇总。测试报告用来对测试结果进行分析说明。经过测试后,证实了软件具有的能力,以及它的缺陷和限制,并给出评价的结论性意见,这些意见既是对软件质量的评价,又是决定该软件能否交付用户使用的依据。
软件测试的风险是指软件测试过程中出现的或是潜在的困难或难题,软件测试风险的发生可能导致软件产品的测试不够充分或者不够准确,由此导致软件产品交付使用时存在潜藏的问题,一旦这些问题爆发可能会带来经济损失或是更为严重的后果。软件测试的风险来源可以分为两类:技术风险和管理风险。软件项目采用的开发技术与开发平台是测试项目技术风险的重要来源之一,具体表现如下:采用新技术或技术创新;需求的变更及需求描述不清晰、需求的矛盾;系统的复杂度也是导致测试技术风险的重要来源。管理风险包括测试项目执行过程中的各
个方面,如测试项目计划的时间、资源分配、测试项目的质量管理、测试管理流程、规范、工具
等的采用以及测试外包商的管理等。软件测试的风险是不可避免的,它存在于整个软件测试的过程屮,來源于软件测试的各个阶段,因此对软件测试的风险管理非常重要,必须通过风险识别、风险分析、风险计划、风险控制以及风险跟踪尽力降低软件测试中存在的风险,最大程度地保证软件的质量。
三、软件测试项目的风险管理
软件生命周期包括问题定义及规划、需求分析、软件设计、程序编码、软件测试和运行维护六个阶段,软件测试前而的任何一个环节的不严谨都可能增加软件测试活动的风险,软件测试活动本身也存在各种各样的风险,在软件测试屮只有充分的识别风险、分析风险、计划风险、控制风险、监控风险,才能降低软件测试产生的风险对项目目标造成的伤害。
(一)软件测试的几种常见风险
软件测试项R常见的几种风险有:
1.需求变更风险:在软件测试项目尤其是历时较长的人项目的实施过程中,总会不可避免的出现需求的变更,如客户临时改变想法、项目预算增加或减少、客户对功能的需求改变等,这些变更会给测试带来风险,因为一旦发生了需求变化,就不得不重新修改设计、重写代码,进而导致修改测试用例、调整项目计划等。
2•测试过程风险,主要包括6个方面:
口寸间进度难以按照计划控制,测试需求的临吋或突然变化,导致设计的修改和代码1)
的重写,测试用例需要重新设计,使得测试时间增加;
2)测试没有完全覆盖软件应用场景,测试用例设计不到位、没有100%执行,忽视了一些边界条件、深层次的逻辑、用户场景等、部分软件缺陷不易重现以及回归测试一般不运行全部测试用例;
3)对产品的认识度不够,质量需求或产品的特性理解不准确,造成测试范围分析的误差,结果某些地方始终测试不到或是验证的标准不对;
4)质量目标不明确,质量标准不是很清晰的,如实用性的测试、易用性的测试等; 5)对测试环境依赖,特定的测试环境不能到位,包括真实环境及仿真环境等;
6)测试工具方面,主要风险有:相关测试工具是否能准备好,License问题,测试人员 对新工具无法数量运用等。
3.测试人员流失或是不足带来的风险
测试项目尤其是周期长的项目儿乎不可避免的要面临人员的流动,相应的测试阶段开始时,相关测试人员不到位,从而增加测试项目失败的风险系数。
4. 外包测试风险 |
|
外包测试的时间进度、质量管理、保密情况,对整个软件测试项目也是一个风险的来源。
(二)软件测试的风险管理方法
上而讲述了软件测试的4种风险类型,为了应对这些风险,需要对其进行风险管理,保证测试项目顺利进行,最终交付合格的软件产品,从而创造经济效益。
针对需求变更风险,笔者从以下方面进项风险管理:
1)测试项目组收到软件开发组提交的需求变更中请后,笔者会组织主要测试对项目变更所带来的影响进行评估,包括测试项目的人力、管理、时间、质量、工作负荷等方面。
2)当软件项FI组确认要产生需求变更时,软件测试组用标准的变更申请表格将委托方的变更申请记录存档,详细记录更改点,以免漏测而使项目出现风险;
3)变更确定后,选择可行的实施方案。为了将项目变更的风险降低到最小,针对变更内容制定合适的测试用例,进行多轮测试。
对于6个测试过程风险,有些可以事先规避,有的能够采取些措施降低风险发生的可能性
或者风险发生后对项目的影响。针对这些风险,笔者总结了有一些有效的测试风险控制方法,女山
1)由于种种原因导致测试时间不够,可以调整软件测试计划,针对不同情况采取只能更加
工作时间、工作人员和资源来环节风险发牛带来的威胁。以上措施还无法缓解的交付时间风险时,可以与客户进行协商,顺延交付H期或在客户的允许下对测试项目进行适当的减少; 2)在测试前期做好计划,在测试执行前准备好测试环境,并由其他人来检查测试环境的搭建,可有效地降低测试环境不满足带来的影响;
3)增加培训,包括项目背景培训、质量标准培训、软件测试工具培训等,通过这些培训提高测试人员综合素质,降低由于质量目标不明确、项目背景不熟练、新员工对测试技术及测试工具不熟练导致的测试风险;
4)在做测试计划时,对人员、资源、时间、成本等估计中留有余量,避免风险发生时没有相应的资源来实施应急方案,缓解风险带来的影响。
应对测试组织风险,需要制定专门的测试管理流程和质量保证手册,规范测试过程,保证测试的质量;委托专门的测试组织执行测试活动。
应对人员流失带来的风险,笔者一般采取的管理方法有:
1)同一测试岗位保证至少有两个测试人员,可以轮流顶替,降低关键岗位人员流动的风
险;
2)建立良好的文档管理机制,包括项目组进度文档,测试日志、版本控制文档、测试策略、测试用例、测试执行记录、缺陷报告等。一旦出现人员的变动,替补组员能够根据完整的文档尽早接手工作;
3)加强测试项目组内的技术交流,定期召开项目例会,使测试组成员能够相互熟悉对方的
工作和进度,能够在必要的时候接替对方工作;
4)为项目测试工作的开展提供尽可能好的基础环境,比如待遇、项目组内良好的人际关系
和工作氛围等。良好的工作环境对于稳定项目组人员以及提高生产效率都有不可忽视的作用。
软件外包测试时,结合笔者外包测试管理经验,可以从以下儿个方面来进行风险管理: 1) 需要制定相关的管理流程文件,要求外包测试公司严格按照测试流程规范执行; 2)不定期对外包测试公司进行稽核审查,对审查出來的问题及时敦促其进行解决,以消除后续带来的风险;
3)对测试活动的中间交付物进行检查保证测试的质量,例如:对设计的测试用例进行评审、对编写的测试代码进行抽查、检查测试执行的H志等;
4)注意双方数据传输过程中的信息保密,必要时可对传输数据进行加密。以上措施可加强
外包测试的风险管理,保证测试项目在时间进度,质量控制及信息保密的风险威胁降到最低。
结论
风险是无处不在,是不可避免的。本文首先讲述了项目风险管理的定义、过程及意义,随后阐述了软件测试的过程、风险來源及常见的测试风险控制方法。要想做好软件测的风险管理工作,就必须彻底改变测试项目的管理方式,提高对风险管理的重视,建立防患于未然的管理意识,并结合具体的实践工作不断地分析遇到的风险,总结各种风险的应对措施,指导实践,降低产品质量风险。
致谢语
周红刚老师在论文题目审定、文章思路安排和严密性、材料组织上给我以菲常认真详细
的指导,在此我对老师表示由衷的感谢,感谢老师的辛苦付出。
[参考文献]
rn沈建明•项目风险管理(第2版)[M].机械工业出版社,2oio・
[2]王叶琰.项冃风险管理一般过程探析[J].金融经济(理论版),2010,(1):129-130.⑶谷珊•风险管理在软件测试项目中的应用[D].北京邮电大学,2009.
[4]张春霞,苏秦.软件测试过程分析[J].计算机应用研究,2004.
[5]赵晓岚.规范化软件测试过程浅析[J].航天控制,2010,28(1):96-98.