软件测试是软件质量保证的重要组成部分,测试的目的是尽早发现缺陷和尽量多地提供测试对象相关的信息,从而提高产品质量和帮助利益相关者做出合适的决定。在有限的时间和资源的情况下,穷尽测试是不可能的,测试团队需要在时间、成本和质量等各个方面进行平衡和协调。基于风险的测试作为软件测试的一种有效方法,可以解决测试过程中面临的一些问题:
● 首先,测试团队面临的问题是测试任务的时间压力。很少有测试项目可以获得足够的时间进行充分的测试。相反,测试一般都是有时间限制的,例如:项目具体里程碑时间、客户或者用户要求产品提交的时间等。基于风险的测试可以提供一种方法,对测试用例和测试任务进行优先级排列。测试的时间限制,其面临的挑战实际就是确定测试的覆盖率。通过基于风险的测试,可以从几乎无限的测试中选择重要的和风险高的测试来开展,从而降低风险和尽快提高质量,提高对产品的信心。测试的时间压力不仅仅存在于测试实现和执行阶段,同样也存在于测试分析和设计阶段。通过基于风险的测试,可以在早期将测试工作量放在高风险的地方,同时可以告知利益相关者这样做可能存在的风险。
● 其次,测试团队经常面临的问题是系统需求质量低下或者不完整。通过召集利益相关者讨论哪些是需要测试的、哪些是不需要测试的、测试的深度是多少等问题,基于风险的测试可以用来识别需求规格说明中存在的不足。基于风险的测试也可以帮助其他利益相关者认识到测试在确定测试范围和测试深度方面面临的挑战,有助于项目团队成员之间更好地理解和沟通。
● 第三,在项目测试的后期,例如:完成测试执行之后,测试团队需要提供相关的信息给其他的利益相关者,以帮助做出合适的决定。基于风险的测试可以允许测试团队和其他利益相关者一起,根据剩余的风险确定一个可接受的风险级别。而不是仅仅依赖于其他一些不充分的度量,例如:缺陷数目、测试用例执行数目等。
有效地应用基于风险的测试可以较好地指导测试活动的展开,更好地使测试活动在时间、成本、质量等方面进行平衡,从而提高测试质量、降低测试成本、缩短测试时间等。下面是基于风险的测试的优点。
1)确定测试优先级
根据测试风险的分析和评估得到的风险分布,确定测试的优先级(风险级别分析也适用于测试的设计和测试实现等阶段,即通过风险分析,确定测试设计和测试实现的优先级)。测试风险的分析基于两个方面:发生的可能性和发生的严重程度。其中,风险发生的可能性主要是从技术方面考虑;而风险发生的严重程度主要是从客户或者用户的角度考虑。图1是一种风险等级的划分方式。
图1 确定测试优先级
根据图1的风险等级划分方式,在测试过程中,首先将重点放在高优先级的区域(例如:不同的模块、功能等)。假如时间、成本等因素不允许,标注为低优先级的模块或者功能(风险等级较低)可能就会放弃测试。
2)确定测试完备性
前面提到的一个假设条件:并不是所有的测试对项目而言是同等重要的。同样的道理,并不需要对测试对象的不同内容进行同等重要的测试,例如:最重要或者风险最大的模块或者对象需要测试得更加彻底,更加完备。而对于风险比较小、优先级低的模块或对象,可以简单测试。对于优先级最低的对象,在时间和成本等不允许的时候,甚至不进行测试。图2显示了一种测试风险和完备性的对应关系。测试完备性的要求需要在测试计划制定的时候,在测试经理和项目经理之间达成共识,在测试风险、测试成本、测试进度、测试范围和测试质量之间进行平衡。
图2 确定测试完备性
3)确定测试资源分配
根据测试风险的分析和测试优先级的评估,将经验丰富和技术能力丰富的测试人员(不管是设计人员、实现人员,还是执行人员)放在最重要的模块或测试对象中,可以达到如下效果:
设计更加完善、完备和准确的测试用例。
实现高质量的测试用例脚本和代码。
更加高效地发现测试对象中的缺陷。
如图3所示,将新员工或者经验比较少的测试人员放在低风险的对象和模块上。在测试过程中,他们可以慢慢积累经验,同时使得项目测试的风险处于可以控制和可接受的范围之内。
图3 确定测试资源分配
4)易于测试进度监控
根据测试风险的分析和评估,得到测试的优先级和测试重点。接下来,可以根据风险的分布对测试进度进行汇报和控制。例如:测试经理可以根据测试工作的侧重点、测试进度协调人力资源和测试环境的分配,将测试的资源放在最重要的部分。
图4是根据风险得到的测试进度和状态,从中可以看出,测试存在如下几个问题:
● 测试优先级高(测试重点区域)的测试完成率比较低。
● 测试优先级高(测试重点区域)的测试通过率比较低。
● 测试优先级低的测试完成率高。
图4 测试进度汇报和监控
根据测试进度的分析和测试风险的评估,在后面的测试活动中,测试经理和测试人员需要调整测试的重点和方向:
● 将测试资源和测试经验丰富的人员放到测试风险高的区域。
● 分析为什么测试风险高的区域的通过率很低,是由于本身测试对象的质量太差,还是由于发现的缺陷没有及时被修复和验证。
5)加速测试信心提升
据测试风险分析和评估得到的测试优先级和测试重点,可以更好、更快地提供产品或者被测系统在质量方面的信心。对被测对象的质量,根据不同的测试策略,得到不同的信心演变过程:
● 策略1:随机执行测试用例,不分优先级和测试重点,被测系统质量信心的递增是随着测试完成率的递增而线性增加的。
● 策略2:先执行低复杂度的测试,因此,测试完成率增加很快,但是相应的被测对象质量的信心却增加很慢。而对于高风险(例如:测试难度较大的大容量用户数据模拟测试)的区域,很可能放在测试的后期进行。
● 策略3:基于风险的测试,将高风险区域首先进行测试,尽管测试完成率增加比较慢,但是对被测对象质量的信心却增加很快。
图5形象地描述了这三种测试策略,以及对应策略测试完成率和被测对象质量信心之间的关系。
图5 测试完成率和质量信心
|