1.4.5 边界值分析
边界值分析(Boundary Value Analysis,BVA)是一批又一批软件工程师惨痛教训的总结,这个教训就是:程序逻辑很容易在边界值的处理上出问题,在用等价类划分的方法设计测试用例的时候,划分类别的边界部分非常值得重点测试,那里是bug的高发区!
以上一节中讨论的程序为例,A等级分数的区间是90~100。这个区间的最小值是90,最大值是100,它们是这个类别的边界,我们需要重点测试。具体来说,对于边界值,我们需要测试边界值本身,以及比边界值略小和略大的输入值,如表1-3所示。
值得注意的是,分数89在A等级的下区间边界值测试中会被覆盖到,在B等级的上区间边界值测试中也会被覆盖到,但这是完全相同的输入,我们没有必要重复测试,只需要在测试描述中清晰表达这条测试数据代表的意义就可以。
表1-3 A等级分数的边界值测试范例
等价类划分是边界值分析的前提,前者的质量会直接影响后者的质量,这要求测试人员对产品功能有很好的理解,进行合理的划分,否则边界如果不是真正的边界,边界值分析就起不到应有的效果,错过了对真正的边界的测试。
边界值分析是一种行之有效的工程实践,它是用以往的经验来指导现在的行为,让我们知道把测试资源投入在哪些方面会有较高的回报。如果我们对此加以扩展,可以得到一系列“以史为鉴”的思路:
1)不重视测试的“古代”软件项目无法保证质量,项目失败的概率极高,“今人”应该引以为戒,避免重蹈覆辙。
2)“古人”编写的软件程序经常在边界值的处理上出错,“今人”很有可能在这个方面继续犯错,应该多加注意。
3)如果在软件的某个模块发现了比较多的bug,我们需要更加仔细、更加深入地测试这个模块,因为很有可能有更多的bug有待发现。
4)如果开发团队中某人写的代码的问题比较多,我们在审核其代码时需要更加仔细,因为个人技术的提升需要时间积累,这种状况很可能会持续一段时间。