1.6 单元测试
视频讲解
在现代软件开发过程中,测试不再作为一个独立的生命周期,而是成为与编写代码同步进行的开发活动。单元测试能够提高程序员对程序的信心,保证程序的质量,加快软件开发速度,使程序易于维护。
1.6.1 单元测试概述
在程序设计过程中会有多种测试,单元测试只是其中的一种。单元测试并不能保证程序是完美无缺的,但是在所有的测试中,单元测试是第一个环节,也是最重要的一个环节。单元测试是一种由程序员自行测试的工作。简单地说,单元测试就是测试代码撰写者依据其所设想的方式执行是否产生了预期的结果。
单元测试不仅是无错编码的一种辅助手段,还必须是可重复的,即无论是在软件修改或是移植到新的运行环境的过程中都可以进行单元测试。
与单元测试有密切关联的开发活动包括代码走读(Code review)、静态分析(Static analysis)和动态分析(Dynamic analysis)。代码走读就是对软件的源代码进行宏观阅读,整理开发思路。静态分析就是对软件的源代码进行研读,查找错误或收集一些度量数据,并不需要对代码进行编译和执行。动态分析就是通过观察软件运行时的动作,来提供执行跟踪、时间分析以及测试覆盖度方面的信息。
1.6.2 单元测试的优点
单元测试具有以下优点:
一种验证行为。程序中的每一项功能都是用测试来验证它的正确性,为以后的开发提供支援。就算是开发后期,也可以轻松地增加功能或更改程序结构,而不用担心这个过程中会破坏重要的东西,而且它为代码的重构提供了保障。这样,我们就可以更自由地对程序进行改进。
一种设计行为。编写单元测试将使用户从调用者观察、思考。特别是先写测试(test-first),迫使设计者把程序设计成易于调用和可测试的,即解除软件中的耦合。
一种编写文档的行为。单元测试是一种无价的文档,它是展示函数或类如何使用的最佳文档。这份文档是可编译、可运行的,并且它保持最新,永远与代码同步。
具有回归性。自动化的单元测试避免了代码出现回归,编写完成之后,可以随时随地地快速运行测试。