单元测试是针对软件的最小模块进行正确性检验的测试工作。所谓最小模块,在OOP的范畴内,通常是指对象的方法。
单元测试是程序员的一项基本职责和基本技能,直接影响到程序员的工作效率和软件的质量,
也直接影响到团队的合作。试想以下的情形:
某程序员提交了一段未经测试的代码,另外一个程序员checkout出来后,使得本地的代码无法正常运行,花费了很长的时间才发现是这段未经测试的代码的问题:影响了
其他程序员的工作。
某程序员的代码没有单元测试,过了一段时间发现程序运行异常,经过艰苦排查,发现是这段代码的问题,于是修复了漏洞;又过了一段时间,发现了另外一个bug,于是修复了这个新发现的bug;但是在修复这个bug的时候,导致了上次发现的bug重现(当时没有发现这个问题,因为一般只是对刚刚修复的bug作简单的测试):这是一个恶性循,一个bug的修复导致了另外一个bug的出现而不自觉。
单元测试的好处也是显而易见的:
提高了整个团队的工作效率。有质量的代码是对整个团队的贡献。
提高了程序员的责任心和代码的质量。通过单元测试,保证自己的代码是可靠的和完整的,这是对自己负责,也是对团队负责。
单元测试的内容单元测试主要分为人工静态检查和动态(自动)执行跟踪检查。
人工静态检查人工静态检查的主要目的是保证:
正确性,能够实现预期的功能。
清晰性,代码简明易懂,注释没有歧义。
规范性,代码的格式、命名等符合公司的编码规范和代码风格。
高效性,代码的执行效率尽量高。
以上的检查目标的优先级是从高到底的。
自动跟踪检查自动跟踪检查是我们研究的重点。所谓自动跟踪检查,是指通过单元测试工具,编写单元测试的类和方法。当执行测试类和方法时,自动对设定的输入条件进行计算,并给出测试的结果。
通过自动跟踪测试,我们能够将发现的每个bug或者能够想到的未来可能的bug写进测试类和方法中。这样只要运行测试类,就能够有效的发现bug是否仍然存在,或者已经修复的bug是否又“死灰复燃”。
自动跟踪检查方式的单元测试是XP核心理念之一。单元测试和每日构建技术的结合,能够保证整个开发过程平滑顺利的推进。