总结:
一般原则:
测试任何可能失败的地方。
测试任何已经失败的地方。
对于新加的代码,在被证明正确之前,都可能是有问题的。
至少编写和产品代码一样多的测试代码。
针对每次编译都做局部测试。
签入代码之前做全局测试。
要回答的问题:
我如何知道代码运行是否正确呢?
我要如何对它进行测试?
还有那些方面可能会发生错误?
这个问题是否会在其他的地方出现呢?
测试哪些方面:使用Right-BICEP
Right------结果是否正确(Right)?
B----------是否所有的边界(Boundary)条件都是正确的?
I-----------能查一下反向(Inverse)关联吗?
C----------能用其他手段交叉检查(Cross-Check)一下结果吗?
E----------你是否可以强制错误条件(Error Condition)发生?
P----------是否满足性能要求?
好的测试是一个A-TRIP
自动化(Automatic).
彻底的(Thorough).
可重复(Repeatable).
独立的(Independent).
专业的(Professional).
CORRECT边界条件
Conformance(一致性)--------------值是否和期望的一致。
Ordering(顺序性)-------------------值是否如应该的那样,是有序或者无序的。
Range(区间性)---------------------值是否位于合理的最小值和最大值之内。
Reference(依赖性)-----------------代码是否引用了一些不在代码控制范围之内的外部资源。
Existence(存在性)-----------------值是否存在(是否是非Null,非0,在一个集合中)。
Cardinality(基数性)----------------是否恰好有足够的值?
Time(相对或者绝对的时间性)-------所有事情的发生是否是有顺序的?是否在正确时刻?是否恰好及时?