关注测试原因(针对风险测试)的基于问题的测试手段
基于风险的测试(risk-based testing)至少有两个主要含义。
Amland(1999)提出了一种基于风险测试管理的很好描述。根据这种观点,进行风险分析是为了确定下一步要做的测试。要根据程序中某个功能失效的可能性,以及如果失效确实发生可能造成的损失,确定测试的优先级。昂贵失效的可能性越高,尽早、尽可能仔细地测试该功能就越重要。
另一个含义是我们更关注的,即为了发现错误进行风险分析。当研究产品的某个功能时,我们要研究它会怎样失效。这个问题又可以分解为很多额外问题,例如:失效外观是怎样的?这个功能为什么会失效?什么样的 风险因素可能影响这个功能?
这两种基于风险测试的方法也在《James Bach 论基于风险的测试》(1999c)中做了描述。
Whittaker 和 Jorgensen(1999 和 2000)做了精彩的讨论,给出了涉及结构冲突的各种错误的例子:
输入约束(input constraint).限制程序可以处理的内容的约束。例如,如果程序只能处理 32 位数字(或小于 32 位数字),则程序员应该提供保护性历程检测并拒绝超出 32 位数字限制的输入。如果没有这样的保护,当程序试图处理它不能处理的输入数据时就会失效。
输出约束(outputation constraint)输入是合法的,但是会导致产生程序所不能处理的输出值。当程序试图显示、打印或保存输出值时会失效。
计算约束(computation constraint)输入和输出没有问题,但是在计算某个值(会产生一个输出)时,程序失效。例如,将两个很大的数乘在一起,积太大,程序不能处理。
存储(或数据)约束(storage (or data) constraint)。输入、输出和计算都是合法的,但是操作使用程序耗尽内存,或产生的数据文件太大,程序不能处理。
Whittaker(2002)针对这些约束提出了详细建议。
以下是基于风险测试设计的一些补充提示:
如果进行基于风险的测试,还必须做相当量的非基于风险的测试,以针对了解还不够,还不能做出正确决策的风险进行测试。
针对时序的测试。令人奇怪的是,很多接受美式教育的测试员都没有想到时序问题。一些经典时序问题包括竞争条件和其他事件意外发生顺序。
在创建测试时,总要创建测试过程,以强制程序使用测试员输入的测试数据,从而能够确定程序是否不正确地使用了这些数据。
搜索微信公众号:TestingStudio 霍格沃兹的干货都很硬核
评论