Myers的这本书非常不错,非常薄,但简明扼要,讲的是测试中的基本原则,值得人反复研读。今天看的第四章测试用例的设计应该算是本书的重点部分。简而言之,在书中的前面几章,作者阐明了一个观点。完全的测试方法是不可能的,对任何程序的测试必定是不完全的。那么,如何在时间成本的约束条件下,尽量选取一个测试用例的子集,使其最有可能发现最多的错误。
总的原则确定了,接下来作者分别讨论了黑盒和白盒测试的一些具体测试方法。并且建议在实现策略时将这几种方法综合起来,因为任何一种单独的测试方法都是不完善的,都有其优势和弱点。 白盒测试方法有语句覆盖,判定覆盖,条件覆盖,判定/条件覆盖,多重条件覆盖。白盒的优点是测试可以覆盖程序逻辑结构(源代码),但缺点是它未考虑到程序的规格说明。这之中,最完整的是多重条件覆盖。
黑盒的测试方法有等价类划分,边界值分析,因果图分析,错误猜测。等价类中,覆盖有效等价类时,一次要覆盖尽可能多的有效等价类,即用例设置在多个有效等价类的交集部分。覆盖无效等价类时,每次仅覆盖一个,这是因为一次有多个无效条件,可能在判断出第一个条件不满足时,后面的条件根本不做判定了,从而相关的等价类就没有被测试到。边界值分析也较好理解,这是从经验中总结出来的,重点考虑边界条件时,具有较好的测试回报率。因果图看起来比较复杂,整个过程也极为繁琐。其中最具难度的地方是将因果图转化为判定表的部分。错误猜测则具有相当多的偶然性了。大体是我们可以猜想程序可能会出错的地方,然后编写用例加以测试。
最后,作者建议了一个测试策略。
1.先根据规格说明使用因果图分析。
2.边界值分析加以补充
3.等价类分析
4.错误猜测
5.检查程序逻辑结果,使用白盒中各种覆盖准则。
看完这部分,最大的体会就是,测试工作量如此之大,超乎人的想象。
然而这项工作又是具有多么大的挑战性啊。给人以非常大的施展才华的空间。
可以说,测试中的想象力和创造力一点也不亚于分析和设计。
看来,测试就是“螺狮壳里做道场”,“于无声处听惊雷”!