浅谈基于风险的测试实践

2018-02-09   出处: 大商所行业测试中心  作/译者: 大连飞创  

摘要

James BachHeuristic Risk-Based Testing中将基于风险的测试(简称RBT)描述为“列出一个风险的列表”,“进行考察每项风险的测试”,“当风险消失而新的风险出现的时候,调整测试计划”。本文将结合手机证券App入手,简略的描述风险识别,风险分析,测试计划,测试案例设计,风险闭环的实践过程和结果。从基于风险的测试角度出发,充分利用有限的测试资源、提高测试效率的测试实践。

关键词:风险;软件测试;测试管理


引言

   在测试过程中经常会面临测试资源不充分、时间不充分等问题,在有限的时间和资源情况下,我们也不可能进行穷尽测试。我们需要采取有效的方式来对软件质量风险进行全方面分析,评估测试优先级,合理的制定测试计划和方案,帮助我们在有限的时间及资源情况下保证产品质量、达到测试资源的最大利用。基于风险的测试可以帮助我们优化测试活动,提高测试效率和产品质量,因此基于风险的测试越来越被广泛的运用于测试活动中。


一、RBT定义

RBT(Risk-Based Testing)即基于风险的测试,James Bach在《Heuristic Risk-Based Testing》中将基于风险的测试描述为“列出一个风险的列表”,“进行考察每项风险的测试”,“当风险消失而新的风险出现的时候,调整测试计划”。

基于风险的测试是一种以软件质量风险作为测试出发点和测试活动主要参考依据的测试方法。通过对项目质量相关信息的收集与分析处理,可有效地识别与划分、归类不同的风险域,再结合对测试粒度、方法及实施人员能力等方面的认识对测试做出优化安排。  

基于风险的测试最重要的观点是将软件的潜在风险作为测试安排的依据和目标。对当前潜在风险的全面分析和把握,才能有效地设计并组织恰当的测试;用尽可能少的测试资源,发现尽可能多的潜在缺陷,最大限度规避潜在风险降低维护成本。


二、RBT实施过程模型

测试的根本原因是产品存在质量风险,而RBT理论上可以提高测试效率和质量,因此,RBT一度成为测试团队比较流行的技术之一。

风险识别: 风险识别目标是发现尽可能多的风险,以力求使得所有重要的风险都被识别。风险识别包括新老特性分析、风险基础性预测、历史运营数据分析等,并可以进行相关头脑风暴会议、专家讨论等。

风险分析:针对测试范围清单的每一项内容,进行度量和评估,包括风险概率、风险影响分析,并对风险进行综合评估,以此制定出风险策略。

基于风险的测试:根据每个测试分析得出的风险分析进行测试设计、测试资源分配、详细测试方案制定,同时在测试过程中对风险持续评估、关注风险变化。

风险闭环评估:测试完成后,根据测试的结果、测试数据度量分析我们的风险识别、风险分析及测试过程中存在的问题,予以风险警示,不断进行过程改进。


图1  RBT实施过程简要模型


三、RBT实践


本节将从手机证券App测试入手,简略的描述风险识别,风险分析,测试案例设计,风险闭环的实践过程和结果。本页的实践案例业务需求变更为关闭风险警示、退市整理股票权限开通两项功能,目标为保障系统平稳正常上线。

1.风险识别

风险识别过程中需要向客户、潜在用户、业务部门、运维、项目经理、开发者、测试人员、DBA,客户服务中心等部门或人员进行调研与咨询。同时生产运营历史数据、历史缺陷、开发人员历史遗留问题分布、测试人员生产问题逃逸率分布同样是非常重要的指导风险识别环节。在风险识别的环节,需要把相关干系人和干系数据都纳入其中,这样才能从客户使用、服务、设计等角度比较完整地识别风险,让风险信息真正发挥其价值。

风险需要进行持续的更新和跟踪,在需求、设计、实现、测试、服务、运维、营销的活动过程中,都会发现新问题,进而给产品带来新的风险,如果风险有变化,应及时修改或增加风险识别内容,重新对风险进行评估。

综合的风险识别结果如下表:


表格1  风险识别结果

2.风险分析

根据风险识别的结果,进行风险概率、风险影响及风险综合分析,最终得到RBT风险评估表。

在风险概率分析(RP)环节上采用专家多级打分法,即风险值打分(风险值用以度量测试内容的风险大小,值越高表示风险越大,本文涉及到的风险值打分范围均为1~5分);风险影响分析(RC)包括风险客户损失分析(影响范围、影响使用、影响工作)与系统损失分析(模型复杂度、代码复杂度、技巧、依赖、维护程度等),可以通过生产运营数据、业务复杂程度、测试人员技能等来确定分值;风险综合分析(RE)由RPRC得出:RE=RP*RCRE范围会在1~25分之间,RE风险值越高代表该模块内容发生风险问题的几率越大。金点子手机证券App风险值简要评估如下:


表格2  RBT风险评估表

3.基于风险的测试

测试分析、设计、评审、执行、改进等测试活动中有风险信息贯穿其中,基于风险的测试也应贯穿其中。

我们从严重程度影响因素(使用频率、商业的损失),发生可能性的影响因素(复杂性、时间压力、变更频率)两大方面来对功能模块进行风险系数评定,即风险系数是由风险发生带来的影响及风险发生可能性两者共同决定。

首先,我们将手机证券APP的测试内容分为功能、性能、兼容性、易用性几大方面,并对各项内容进行风险值打分,可根据我们获取的生产运营数据、历史数据、以及业务复杂度等客观数据对各模块进行评定,同时需要着重注意测试版本涉及到的功能变更,应提高相关功能模块的风险值分数。

然后,评定各项内容所占权重,权重总和为1,可根据各项影响因素的重要性对各项影响因素的权重进行设定,具体视项目情况而定。手机证券APP权重如下:

1=0.3(使用频率)+ 0.4(商业损失)+0.1(复杂性)+ 0.1(时间压力)+ 0.1(变更频率)

最后,通过分值和系数计算风险系数功能风险系数算公式如下(P1代表严重程度影响因素的风险值,C1代表相应权重,P2代表发生可能性影响因素的风险值,C2代表相应权重,n代表风险项,如下表中P1中的n代表使用频率、商业的损失: 


普通买卖风险系数=(0.3*5+0.4*5*0.1*5+0.1*5+0.1*4=4.9


表格3  基于风险的功能模块分析

基于风险的测试案例: 在对功能模块风险等级评定的基础上,再用相同方法对各个功能模块的测试案例进行风险等级评定,得出基于风险的测试案例,案例风险系数计算如下:


在案例量较大的情况下,可对案例归类后进行再批量进行风险评估,如在手机证券中可将普通买卖案例分为正案例、资金反案例、持仓反案例、系统状态类反案例等。

计算出案例风险系数后,再根据风险综合分析RE值与功能风险系数,得出案例最后的风险值,计算公式如下:


们可以对风险值进行等级划分,并对案例增加风险级别属性,在测试中根据升级内容及时间情况综合评估,以风险等级属性为基础进行执行案例选择。

   下表格为新股申购案例风险系数及风险值(案例为部分摘录),值越大表示风险越高,由上面的风险分析可知新股申购的RE值为25,功能风险系数为3.84,经过计算001002案例的风险值为600,风险值较高,再观察其它案例的风险值,可以发现通过我们的风险计算方法得出的风险值数据具有较高的准确性及参考性。同理针对系统的兼容性、性能、易用性等方面的测试及案例也可以按此方法进行分析。


表格4  基于风险新股申购测试案例

通过风险识别、风险分析、测试分析后,根据测试时间、资源情况,合理的制定出测试计划。同时在基于风险的测试中,需要辅以合理的管理手段,如建立评审机制,包括测试计划评审、案例评审、缺陷评审;建立风险监控机制等。

以下为简要的基于风险的测试计划:


表格5  风险/任务矩阵

4.风险闭环

6的基于风险的测试结果可知,测试中我们根据风险分析,选择了2367个案例进行执行,占总案例的48%,该48%案例发现了87%的问题,且严重缺陷占比100%,在有效的资源及时间内,有效的控制了系统的风险,可见与传统测试方法相比,基于风险测试方有利于合理制定测试计划、合理分配测试资源、提高测试效率。


表格 6  效果分析表格

同时在测试完成后,根据测试的情况对测试范围清单再进行一次风险评分,评估是否所有的内容的风险都降到了可接受的范围内,在基于风险的测试与实践中,通过基于风险的测试结果验证、结果度量、风险警示的不断更新,不断的优化我们的测试活动,进行过程改进。

四、总结与说明

基于风险的测试对测试内容进行了风险评估及优先级的划分,实践证明能提高质量信心和测试效率,尤其在测试资源紧张的阶段体现的特别明显。

基于风险的测试在风险识别和风险分析上要尽量以客观数据事实为依据,才能保证数据的有效性和参考性。

通过对基于风险的测试的结果数据分析发现,测试结果并没完全体现28缺陷分布原则,主要由于基于风险的测试目的旨在有效的时间内从几乎无限的测试中选择风险高的内容来开展工作,将风险控制在可接受范围内,并不代表发现所有缺陷。

基于风险的测试需要不断的根据测试结果数据、风险变更内容对风险评分进行及测试计划进行调整,不断的进行过程改进。


参考文献


[1]Jame Bach. Heuristic Risk-Based Testing.software Testing and Quality Engineering Magazine.11/1999




欢迎给测试窝投稿或参与内容翻译工作,请邮件至editors@testwo.com。也欢迎大家通过新浪微博(@测试窝)或微信公众号(测试窝)关注我们,并与我们的编辑和其他窝友交流。
196°|1963 人阅读|0 条评论

登录 后发表评论
最新文章