第二章 个人技术与流程
单元测试
怎样才算一个好的单元测试?
单元测试应该准确、快速地保证程序基本模块的正确性。
验证单元测试好坏的一系列标准:
单元测试应该在最基本的功能/参数上验证程序的正确性。
单元测试要测试API中的每一个方法及每一个参数。单元测试必须由最熟悉代码的人(程序的作者)来写。
编写单元测试?
最好是在设计的时候就写好单元测试,这样单元测试就能体现API的语义,如果没有单元测试,语义的准确性就不能得到保障,以后会产生歧义。单元测试过后,机器状态保持不变。这样就可以不断地运行单元测试,如果单元测试创建了临时的文件或目录,应该在Teardown阶段删掉。如果单元测试在数据库中创建或修改了记录,那么也许要删除或恢复这些记录,或者每一个单元测试使用一个新的数据库,这样可以保证单元测试不受以前单元测试实例的干扰。
其他
单元测试应该集成到自动测试的框架中。另一个重要的措施是要把单元测试自动化,这样每个人都能随时、随地运行单元测试。
团队一般是在每日构建之后运行单元测试的,这样单元测试的错误就能及时被发现并得到修改。
单元测试必须和产品代码一起保存和维护。单元测试必须和代码一起进行版本维护。
回归测试
目的是:
- 验证新的代码的确改正了缺陷
- 同时要验证新的代码有没有破坏模块的现有功能,有没有Regression
其他
回归测试最好要自动化,因为这样就可以对于每一个构建快速运行所有回归测试,以保证尽早发现问题。单元测试是回归测试的基础。在专注于模块基本功能的单元测试之外,还有功能测试—从用户的角度检查功能完成得怎么样。
个人开发流程
PSP
卡内基梅隆大学(CMU)的能力成熟度模型(CMM和CMMI),是用来衡量一个团队能力的一套模型。CMU的专家们针对软件工程师也有一套模型,叫Personal Software Process(PSP)。(最新PSP2.1)