测试优先编程
这里谈到的测试都是正确性测试,即输入符合spec,非法值是对鲁棒性/安全性进行测试
- 定义函数和spec
- 写测试样例
- 实现第一步中定义的函数
测试方法
- 划分等价类
- 完全笛卡尔乘积或者完全覆盖(一个测试覆盖完全笛卡尔乘积中的几种情况)
黑盒测试与白盒测试
- 黑盒测试:只关注函数规约的说明来实现测试用例,不考虑内部实现,也就是现在一直在做的
- 白盒测试:考虑函数的内部实现设计不同的测试用例,因为对不同的输入可能会有不同的算法或者处理方法
本文谈到的都是对程序的正确性进行验证,即输入均符合规约。非法的值则是对鲁棒性进行测试
覆盖率
覆盖率
- 声明覆盖率:是否每一个声明均被测试
- 分支覆盖率:对每一种if或while等等控制操作,他们的分支是否都被测试过
- 路径覆盖率:每一种组合分支的路径都被测试过了吗