这不是一篇严谨的技术文章。只是一些个人不成熟的感想。
在实际开发过程中,我发现在单元测试代码中经常会出现两种情况:第一种就是在测试代码中炫耀编程技巧,第二种就是敷衍了事,你不是让我通过测试么?好,我就写一个用例,一定能通过的那种,然后告诉你,OK,我的测试通过了。我觉得,这就是对单元测试的意义没有真正理解的表现。
到底单元测试是做什么用的?我想,在说明这个问题之前,我先说说我所理解的测试到底是做什么用的。
所谓的测试,是一种产品质量保证的手段。我按照需求规格说明书制造了一件产品,那么谁来确保这个产品符合了需求规格的要求呢?就是测试。它会根据需求规格说明书设计一系列的场景和用例,来对产品进行测试,看看产品是不是真的符合所期望的需求。
要达到这个目标,其实并不十分的容易,因为一个真正的系统,情况十分复杂,里面充满了数不清的分支、异常、边界条件,甚至运行环境,将这些东西组合起来,产生的需要测试的点将会是一个天文数字,在有限的时间内做完一个充分而可靠的测试,是不可能的。
为了将充分测试变得可能,一个比较好的途径就是分层测试。我在做运行测试或性能测试的时候,有一个前提,就是假设整个系统的集成运行已经没有问题了,在运行测试或性能测试时,我将不再考虑“系统无法正常运行”这种场景。那么如何保证集成运行没问题呢?我们用集成测试来检验。但是在做集成测试的时候,我们同样要基于一个假定,就是各个模块的功能都能够如期正常工作。而这一点,又是通过模块自身的功能测试来完成的。……这样一层层往下推,每个层次就假设它所依赖的层次没有问题,这样就可以减少很多场景以及由这些场景引出的额外的分支。将原先一个几何级数的测试用例分解成可以接受的若干层次的算术级数的用例。这样一来测试就变得有可能做好了。
而单元测试,正是这些测试的最低层次——保证每个函数/方法,或者说最小功能模块的正确性的一种测试。
通过上面的描述,我们至少清楚了这样几件事情:1. 单元测试是一种测试,它不是代码的一部分;2. 单元测试是最低层级的测试,它只保证函数的可靠性,不保证其它;3. 单元测试应该能保证每一个函数的可靠性。
文章来源于领测软件测试网 https://www.ltesting.net/