(1)为效益而测试

测试为了什么?提高软件质量,增加客户满意度,多赚钱。测试的目的,是为了效益。在质量和成本之间寻求一个平衡点是测试要掌握的度。

(2)测试是全程测试

测试是贯穿软件生命周期全程的,而不仅仅是程序完成后。前期的需求验证和设计验证能够发现需求缺陷和设计缺陷,保证这些缺陷不产生放大效应。

保证每个周期禁得起考验,这需要引入对测试的评估,即测试本身也要被测试。

(3)测试是不完全的

无论多么小的程序,想要测试完全,都是不可能的。这是由需求不完整性,逻辑路径组合性,输入数据大量性,结果多样性这些因素造成的。

可以通过等价类划分,边界值等方法寻求小集合。

(4)80-20原则

80%的bug存在于20%的代码中,这个理论提供的方法论是在出问题多的模块加强测试。提高测试效率和bug的发现率。

另外,在系统分析,系统设计,系统实现阶段的复审、测试工作中能够发现和避免80%的软件缺陷;此后的系统测试中能够找出剩余缺陷的80%。后的4%只能在交付后长期使用暴露出来。

第三,80%的bug由手工测试发现,20%的bug由自动化测试发现。

(5)测试的免疫性

简言之,测试的越多,寻找缺陷越困难。

代码量不变,bug存在的数目越多的时候每找到一个bug平均走查的代码越少,花时间越少;

当bug存在的数目减少了,每找到一个bug平均走查的代码增加了,这样花的时间多了。

(6)测试必须有预期结果

必须有标准来判定测试的结果,不能凭借感觉来评判缺陷。

(7)缺陷必然存在性

(8)测试后要做分析

对测试结果的分析可以为下次的测试提供借鉴。