这篇文章本来想写技术贴,但是思来想去还是给大家呈上总结贴。
一:什么是单元测试?
官方定义:单元测试是开发人员编写的、用于检测特定条件下目标代码正确性的代码。
二:为什么要做单元测试?
1.便于后期重构。单元测试可以尽可能的覆盖每一项功能的正确性,这样就算后期开发也可以有保障的增加功能或者更改程序结构。
2.优化设计。编写单元测试将我们从调用者的角度观察和思考,迫使我们的设计易于调用和测试,并且解除软件中的耦合。
3.文档记录。单元测试是一种无价的文档,他是函数或类如何使用的最佳解读文档,并且可编译,永远与代码同步。
4.测试方便。相对于手动去测试每个临界值来说这个更加便捷更加省时省事。
三:不写单元测试的接口!!!!
1.单元测试太花时间
软件开发工作那么忙,哪有时间再去写测试,这可能是我们程序员最多的借口。但是真的是这样么?你有没有想过,导致你加班的原因就是你花了太多的时间在手动测试、调试程序上。从而没有考虑到灵活性与设计,当发生需求变更时需要花很多的时间在复杂的代码中完成特定的功能。而这些修改又有可能引发新的BUG。又需要你进行手动的测试,调试、、、、如此的反复。
2.测试不是我的工作
测试的确不是开发人员的工作,但是单元测试确实是开发人员的工作,单元测试是保证单吗正确下的白盒测试。
3.代码编译都通过了还测什么
代码编译通过并不表示你的代码没有错误,比如临界值等等。
4代码原来就没有单元测试,且难以测试
这些基本是接受 别人的项目,而原来的代码没有编写单元测试,再加上之前的代码比较混乱,此时正是需要单元测试的时候,你需要详细的分析降低代码的耦合度,一块块的去拆解。
四:什么是正确的单元测试?
一:边界条件
边界条件是单元测试的重点测试,因为很多Bug都出现在临界值。
①一致性:值是否和预期值一致。
②有序性:值是否像预期那样有序或者无序。
③区间性:值是否位于合理的最小值和最大值之间。
④依赖性:代码是否引用了一些不在控制范围内的外部资源。
⑤存在性:值是否存在。
⑥基数性:是否恰好有足够的值。
⑦时间性:所有的事情发生是否是有序的,是否在正确的时间。
二:覆盖执行路径
该处重点是对多条件的判定,必须覆盖所有可行路径。
看完这些大家是否觉得我们的开发流程有缺陷呢?