开发人员测试不同于测试人员测试,前者是白盒测试,后者是黑盒测试。开发人员测试主要包括单元测试,组件测试,集成测试等。不管哪一种,测试的目的都是为了发现缺陷。所以,既然测试,首先就要认为一定会发现缺陷,若是总想着找不到缺陷,就会真的找不到缺陷。测试这件事,要从一开始就考虑,像测试用例,早晚都是要写的,不如先写,想用就能用,还能更早发现需求是否有问题。
作者在书中通过一个例子详细的列出了各种测试的技巧,如下:
- 设计最可能发现错误的测试用例。
- 每一条语句都要覆盖至少一次。
- 每一个变量的赋值与使用的组合都要覆盖。比如x可能为a可能为b,y可能为x可能为2x,那么这就有4种情况要覆盖。
- 等效的测试用一个就好了。
- 边界条件处一般要测三个case,等于的,正好大于的,正好小于的。
- 错误的数据要测,太多的,太少的,太大的,太小的,类型不对的,大小不对的,没初始化的等等。
- 正确的数据也要测,最小的,最大的,中间的,是不是兼容以前老的数据等。
- 用例最好便于手工计算验证。
缺陷不是平均分布的,通常集中在一些类或者函数里,符合著名的80/20法则,即80%的缺陷在20%的代码中。一些复杂的类或者函数就比较容易包含很多缺陷。这也是一直强调要降低复杂度的原因之一。有一点要注意的是测试代码本身往往会比要测试的代码更容易有缺陷,这是因为开发人员倾向于认为测试代码用过就不要了,就不像也被测试的代码那样认真写。