1、单元测试的概念
单元测试,就是针对代码单元的独立测试。为什么需要单元测试呢?这是代码的基本特性决定了的。代码有一个基本特性,就是对数据分类处理。
代码通常会有很多的判定。一个判定,就是一次分类。嵌套的判定,会使分类次数翻倍。
如果我们在写代码的时候,有一个分类漏掉了,就会产生一个Bug;如果一个分类,虽然写了代码,但是处理不正确,也会产生一个Bug。一个函数要没有错误,必须做到两点:1.对数据的分类必须完整;2.每一个分类的处理必须正确。
要检测某个函数的功能逻辑,就必须要依照分类列出数据,检测代码是否对每一个分类都做了处理,而且每一个分类的处理是否正确-------这就是单元测试。
2、单元测试的基本方法
由上面的分析可以看出,单元测试的基本方法就是:依数据的分类列出输入,执行被测试程序,然后,判断输出是否符合预期。
无论关联代码是否有错,都要保证单元测试代码是正确的。
3、单元测试的效益
- 首先,单元测试可以保证代码的质量。
- 其次,排错成本最小。如果在编码阶段同时进行单元测试,排错成本可以忽略不计。但若到了后期,排错成本可能会增长上百倍,要是产品已经到用户手里,那造成的损失就更难说了。
- 提高开发效率。单元测试可以让程序行为一目了然,也就是程序行为可视化。什么叫程序行为呢?就是什么输入下,会执行哪些代码,会产生什么输出。那么,是不是整个项目的所有代码都做了单元测试,才能得到这些效益?
不是的,80:20规则,在软件开发过程中也存在。也就是说,80%的代码错误,可能存在于20%的代码中;80%的编码、调试成本,可能会消耗在20%的代码上。这20%,就是算法密集度高的代码,也就是功能逻辑复杂的代码。只对这20%的代码进行单元测试,在提升产品的质量和开发效率方面,也会产生立竿见影的效果。
- 自动回归。