《构建之法》学习(2)——个人技术和流程
1.单元测试
对一个多人合作的软件来说,让自己负责的模块功能定义尽量明确,是至关重要的,而单元测试能稳定、质量地保证模块的质量。
在写技术模块的规格说明书的时候,要越详细越好,最好各项要求都可以表示为一个单元测试用例。
虽然繁琐,但是为了不在后期发现更难处理的bug,单元测试是十分必要的。
验证单元测试好坏的标准:
单元测试应该在最基本的功能/参数上验证程序的正确性。
单元测试必须有最熟悉代码的人(代码的作者)来写。
单元测试过后,机器状态保持不变。
单元测试要快(一个测试的运行时间是几秒钟,而不是几分钟)
应该产生可重复,一致的结果。
独立性
单元测试应该覆盖所有代码路径
单元测试应该集成到自动测试的框架中
单元测试必须和产品代码一起保存和维护
2.回归测试
“回归”是指“回归到以前不正常的状态”。
工程师应该在新版本上运行所有已通过的测试用例,以验证有没有“退化”情况发生。
回归测试最好要自动化,因为这样就可以对于每一个构建快速运行所有回归测试,以保证尽快发现问题。
单元测试是回归测试的基础。
能避免遗漏bug,以及确保bug都已解决。
3.效能分析工具
效能分析分为两种分析方法,先分析再优化。
抽样:
当程序运行时,时不时看一看这个程序运行在哪一个函数内,并记录下来。
代码注入:
将检测的代码加入到每一个函数中,这程序的一举一动都被记录在案,程序的各个效能数据都可以被精确地测量。
4.个人开发流程
4.1软件工程师的任务清单
计划
估计这个任务需要多少时间
开发
分析需求
生成设计文档
设计复审(和同事审核设计文档)
代码规范(为目前的开发制定合适的规范)
具体设计
具体编码
代码复审
测试(包括自测,修改代码,提交修改)
记录用时
测试报告
计算工作量
事后总结
提出过程改进计划
4.2PSP特点
不局限于某一个软件技术(如编程语言),而是着眼于软件开发的流程,这样开发不同应用的软件工程师可以相互比较。
不依赖于考试,而主要靠工程是自己手机数据,然后分析,提高。
PSP依赖于数据,需要工程师输入数据,记录工程师的各项活动,再加上数据不准确或者有遗失。
PSP的目的记录工程师如何实现需求的效率,而不是记录顾客对产品的满意度。