主要内容:测试优先的编程思想,用等价类划分和边界值分析方法设计测试用例,单元测试,自动化测试,黑盒/白盒测试,检测代码的覆盖度,回归测试
测试优先的编程思想
测试可以发现bug、检测是否达到要求、检测质量特性
测试不能百分百覆盖,也不能百分百证明程序中没有错误
好的测试的四大准则:能发现错误、不冗余、最有效、不复杂也不简单
分类:单元测试、集成测试、系统测试、验收测试(回归测试)
重点:静态测试与动态测试的区分(靠眼睛看与撸起袖子加油干)
重点:测试与调试的区别(前者只发现,后者要修改)
重点:白盒测试与黑盒测试的区别(前者测试程序内部代码结构,后者测试程序外部行为)
测试用例=输入+执行条件+期望结果
测试优先编程的过程:写spec、写符合spec的测试用例、写代码、执行测试、修改、测试
单元测试
对软件的最小单元测试,方便定位错误
Driver:产生对要测试的模块的调用和数据
Stubs:是要测试的模块中调用的模块。
自动化测试:JUnit
设计测试用例
等价类划分:根据等价关系划分等价类,从其中选出一个作为测试用例即可。
边界值分析:找输入域的边界,是对等价类划分方法的补充。
笛卡尔积全覆盖:多个维度上的多个取值组合起来,每个取值一个用例
覆盖每个取值,至少一次:每个取值能被一个用例覆盖即可。
前者测试完备、用例数量多、测试代价高;后者测试用例少、代价低、但覆盖度未必高。
代码覆盖率
难度由低到高、测试效果由低到高:函数覆盖、语句覆盖、分支覆盖、路径覆盖
回归测试