软件测试是把控软件质量的重要防线,但风险又存在于软件测试的全过程。软件测试的风险是指软件测试过程出现的或潜在的问题,造成的原因主要是测试计划不充分、测试方法有误或测试过程偏离,造成测试的补充以及结果不准确。
测试的不成功导致软件产品交付潜藏着问题,一旦在运行时爆发就会带来巨大的商业风险。软件测试风险管理主要是对测试计划执行的风险分析与制定要采取应急措施,防止软件测试的产生的风险造成的危害。
测试计划的风险一般指测试进度滞后或出现非计划事件,就是针对计划好的测试工作造成消极影响的所有因素,对于计划风险分析的工作是制定计划风险发生时应采取的应急措施。
在软件测试过程中常见的计划风险主要有以下七类。
(1)测试时间进度风险:用户需求发生重大变更或设计计划的大幅调整压缩了测试时间,测试人员、测试环境、测试资源的不能准时到位也会对测试计划造成影响。
(2)测试质量目标风险:测试的质量目标不清晰,如易用性测试、用户文档的测试目标存在见仁见智的问题。
(3)测试范围认知风险:对产品质量需求或产品特性理解不准确,造成测试范围分析误差,出现测试盲区或验证标准错误。
(4)测试人员风险:测试开始后,测试人员、技术支持人员因故不能及时到位。
(5)测试充分性风险:部分测试用例设计时忽视了边界条件和深层次的逻辑关系;部分测试用例被测试人员有意无意的忽略执行。
(6)测试环境风险:测试环境无法与生产环境一致,致使性能测试的结果存在误差。
(7)测试工具风险:能否及时准备相关测试工具,测试人员对新工具无法熟练运用等情况也时有发生等。
为了避免、转移或降低风险,要事先做好针对不同情况的应对策略。首先,在做测试计划时,对资源、时间、成本等估计要留有余地,避免风险发生时没有相应的资源及时支持应急方案。其次,测试开始前,对测试环境、测试工具等难以控制的因素进行检查,将这些因素纳入风险管理计划中。第三,通过培训提高测试人员的综合素质,降低由于质量目标不明确、项目背景不熟悉、测试技术及工具不能熟练掌握导致的测试风险。关键技术岗位要培养后备人员。第四,对所有过程做好日常跟踪,并进行完善的文档管理。
典型测试风险及解决办法见下表:
风险类型 | 风险表现 | 控制措施 |
测试时间进度风险 | 开发需求增加 | 增加测试时间、人员、资源 |
与客户协商,顺延交付日期 | ||
将已有的低优先级的功能或者特性推迟 | ||
降低对低优先级的功能和特性的测试质量 | ||
测试人员风险 | 测试人员突然离开 | 测试人员加班 |
推迟软件发布 | ||
降低对低优先级的功能和特性的测试质量 | ||
删除某些风险级别较低的功能或者特性 | ||
抽调测试人员 | ||
测试环境风险 | 测试环境不到位或测试环境与生产系统不一致 | 通过事先列出要检查的所有条目,在测试环境设置好后,按已列出条目逐条检查 |
增加测试资源,如请求用户团队对测试工作提供更多支持 |
要想真正回避风险,就必须彻底改变测试项目的管理方式,针对测试的各种风险,建立一种“防患于未然”或“以预防为主”的管理意识。软件风险分析和测试计划风险分析与应急措施是相辅相成的。计划风险、软件风险、重点测试、不测试,甚至整个软件的测试与应急措施都是围绕“用风险来确定测试工作优先级”这样的原则来构造的。