张燕+刘善田+张佳佳+宋士涛+郑希源
摘 要:软件测试工作中的风险是不可避免的,如何有效的识别软件测试中的风险非常重要。本文论述了一种新的故障树风险识别方法,能够进行定性分析和定量分析,能更有效的识别软件测试中存在的风险。
关键词:软件测试;风险识别;故障树分析法
DOI:10.16640/j.cnki.37-1222/t.2017.22.097
1 前言
软件测试是提高软件产品质量最直接、最有效的手段。在软件测试过程中,即使是规模很小的软件系统,我们也不可能对系统进行覆盖率为100%的测试,即存在用户发现软件缺陷的可能性,这就是测试风险。软件测试风险管理包括行风险管理规划、风险识别、定性和定量风险分析、风险应对规划和风险监控六个主要环节。其中风险识别是指在风险事故发生之前,人们运用各种方法系统的、连续的认识所面临的各种风险以及分析风险事故发生的潜在原因。
2 风险管理的研究现状
风险来自于未来的不确定性,风险是指人们在生产建设和日常生活中遭遇能导致人身伤亡、财产受损及其他经济损失的自然灾害、意外事故和不可测事件的可能性。我国对于风险问题的研究是从风险决策开始的,起步较晚,“风险”一词是在1980年首次由周士康提出来的。在20世纪80年代,我国对项目风险管理的研究主要是对项目风险管理的定性描述,到了80年代末期,我国对于项目的风险管理才逐步发展起来,但是针对软件测试的风险管理的论著少之又少。我国研究的风险管理大部分是针对软件开发项目,而不是软件测试项目。
3 软件测试中风险识别的重要性
软件测试的风险管理的目的是在测试前对可能存在的缺陷或工作中导致测试无法有效执行的可能性进行分析,来合理安排测试资源活动,尽量将测试风险将到最低。测试的不成功导致导致软件交付潜藏着问题,一旦在运行时爆发,就会带来很大的商业风险。
测试风险的管理的第一步就是要识别出对测试项目产生重大影响的测试风险,这就是测试风险识别活动。事实上,有很多实施了风险管理活动的测试项目,仍然会出现较大的意外而导致测试项目失败,其根源就是测试项目没有真正识别出那些会对测试项目产生危机的风险。
4 目前常用的风险识别技术
常用的风险识别技术,主要是头脑风暴法、访谈法和风险检查表法等。
头脑风暴法是指刺激并鼓励一群知识渊博的人员畅所欲言,以发现潜在的失效模式及相关为先、风险、决策标准及/或处理办法。头脑风暴法让项目相关的人员都参与,有助于全面沟通,有助于发现新的风险,速度较快并易于开展,适合在在风险识别阶段进行定性分析。但是头脑风暴法相对松散,较难保证过程的全面性;可能会出现特殊的小组情况,某些有重要观点的人不愿意提出意见等。
访谈法就是与不同的项目相关人员进行有关风险的访谈,其结果将有助于发现那些在常规计划中未被识别的风险。该方法是利用被访谈人员的资深背景和工作经验来识别风险,局限性是识别的风险不够全面。
风险检查表法是把测试项目可能遇到的风险列成表,风险识别人员对照表的每一项进行判断,逐个检查,该方法的优点是简单、快速、容易理解、结果稳定,缺点是专业人员不可能编制一个全面的检查表,无法预防可能遇到的新风险。
5 故障树风险识别技术
在研究过程中,我们发现安全系统工程中最重要的分析方法故障树分析法,能够应用到软件测试的风险识别管理中。故障树分析(Fault Tree Analysis,FTA)技术是美国贝尔电报公司的电话实验室于1962年开发的,它采用逻辑的方法,形象地进行风险的分析工作,特点是直观、明了,思路清晰,逻辑性强,体现了以系统工程方法研究安全问题的系统性、准确性和预测性。
我们先使用风险检查表法分析出所有的直接風险或间接风险,然后按照故障树分析法把软件测试风险视为顶事件,自上而下逐级一直分析到最底层的风险,再把所有的风险按逻辑关系(与、或等)表达出来,最后按照故障树分析法进行定性分析和定量分析,计算出软件测试风险发生的概率,或者某个风险发生的概率。我们称这种先使用风险检查表法识别出软件测试的风险,然后使用故障树分析法对风险进行分析的识别方法称为故障树风险识别技术。
6 故障树风险识别技术的应用
我们以某个测试项目为例,先使用风险表检查法识别出来的风险情况如下:
6.1 定性分析
我们用故障树风险识别技术的结构法进行定性分析计算最小割集:
A=A1+A2+A3
=X1A4+(A5+A6)+(X5+ A4)
=X1(X2+ X3)+(X4+X5)+(X6+ X5+ X7)+(X2+ X3)
=X1X2+X1X3+ X2+ X3+A4+2X5+X6+ X7
=X2(X1+1)+X3(X1+1)+A4+X5+X6+ X7
= X2+ X3+A4+X5+X6+ X7
这样我们求出了最小割集是X2、X3、A4、X5、X6、X7,这些事件是对测试风险有影响的所有事件,排除了事件X1对最终测试风险的影响。
6.2 定量分析
定量分析是在各个底事件相互独立和已知其发生概率的条件下,求出故障树顶事件发生的概率,根据计算结果与预定的目标值比较,可以确定如何处理该风险。
顶事件发生概率的计算公式为:
其中,P(Ai)是事件Ai发生的概率。
通过以上分析可以看出,采用故障树风险识别技术进行定性分析,能够排除很多无关的测试风险,有效的减少后期风险分析的工作量,能够有效改善传统识别技术逻辑性不强、识别的不够全面,存在冗余的风险等缺点。另外,故障树风险识别技术能够进行定量分析,这是传统的风险识别方法做不到的。定量分析能够提供软件测试风险或者主要测试风险发生的概率,从而更有利的指导后期的风险分析工作。
7 小结
通过实际运用和具体分析可以看出,故障树风险识别技术既能做定性分析又能做定量分析,能够更有效的识别软件测试中的风险,对以后软件风险的分析和解决提供更有力的依据。
参考文献:
[1]鲁英.软件测试风险分析及其对策研究[D].上海:上海财经大学,2008.
[2]谷珊.风险管理在软件测试项目中的应用[D].北京:北京邮电大学,2009.
[3]王杉杉.软件测试项目的风险管理[D].北京:北京工业大学,2011.
[4]杨俊,张素芬.基于模糊评判的软件测试项目风险评估方法[J].信息化研究,2015,41(05):14-17.
[5]李红燕,尉双梅.浅谈软件测试风险管理[J].电脑知识与技术,2012,08(11):2518-2520.
作者简介:张燕(1981-),女,山东蓬莱人,硕士研究生,主要从事软件测试和软件测试管理研究。endprint