2018-2019-1 20189206 《构建之法》第二章 学习笔记
第二章 个人技术和流程
单元测试
单元测试应该准确、快速地保证程序及本模块的正确性。
- 单元测试的标准
- 单元测试应该在最基本的功能、参数上验证程序的正确性。
- 单元测试应该测试的是程序中最基本的单元、系统中最基本的功能点。
- 单元测试必须由最熟悉代码的人来写
- 最好在测试的时候就写好单元测试,可以体现API的语义。
- 单元测试过后,机器状态保持不变
- 单元测试要快(一个测试的运行时间是几秒钟而不是几分钟)
- 单元测试应该产生可重复、一致的结果
- 独立性——单元测试的运行、通过、失败不依赖于别的测试,可以人为构造数据,以保持单元测试的独立性。
- 单元测试中的模块可以直接引用其他的模块,并期待其他模块返回正确的结果。
- 单元测试应该覆盖所有的代码路径
- 所有的代码路径是包括错误处理的路径,为了保证代码的覆盖率,单元测试必须测试公开和私有的函数、方法。
** 100%的代码覆盖率不等于100%的正确性 **
- 所有的代码路径是包括错误处理的路径,为了保证代码的覆盖率,单元测试必须测试公开和私有的函数、方法。
- 单元测试应该集成到自动测试的框架中
- 单元测试必须和产品代码一起保存和维护
- 单元测试应该在最基本的功能、参数上验证程序的正确性。
回归测试
在单元测试基础上,就可以建立关于这一模块的回归测试。顾名思义,在项目中,一个模块或功能以前是正常的,但是在一个新的构建中出了问题,那么这个模块出现了“退步”从正常工作的状态退化到不正常工作的状态。
回归测试最好要自动化,对每一个构建快速运行所有的回归测试,以保证今早发现问题。
- 回归测试的目的在于
- 验证新的代码改正了缺陷
- 验证新的代码没有破坏模块的现有功能
效能分析
- 两种分析方法
- 抽样 当层序运行结束时,VS查看这个程序运行在哪一个函数内,并记录下来。程序结束后,VS得出关于程序运行时间分布的大致印象。
- 代码注入 将检测代码加入到每一个函数中,程序的各个效能可以被精确地测量。缺点是程序的运行时间会大大加长,产生很大的数据文件,增加数据分析的时间。
- 一般的做法是先利用抽样方法找出效能瓶颈,在针对特定的模块用代码注入的方法进行效能分析。
个人开发流程PSP(personal Software Process)
- 计划
- 明确需求和其他相关因素,指明时间成本和依赖关系
- 开发
- 需求分析
- 生成设计文档
- 设计复审
- 代码规范
- 具体设计
- 具体编码
- 代码复审
- 测试(自测、代码修改和提交修改)
- 报告
- 测试报告
- 计算工作量
- 事后总结,并提出过程改进计划
PSP有如下特点
- 不限于某一种软件技术,而是着眼于软件开发的流程,开发出不同应用的软件工程师可以互相比较
- 不依赖于考试,主要靠工程师自己收集数据,然后分析提高
- 在小型、初创的团队中很难找到高质量的项目需求,意味着程序员的输入质量不高,得到的软件质量也不高
- PSP依赖于数据
- PSP的目的是记录工程师如何实现需求的效率,而不是记录顾客对产品的满意度。
总结
在过去的学习和实践中因为专业学的很多,没有接触到项目开发流程和类似于团队管理这方面的知识,通过本章对于PSP个人开发流程的学习,了解到一个软件项目的开发不仅仅局限于代码的编写,着眼于整个项目的开发,从需求分析到最后的事后总结,并详细记录每个环节所需要的时间,可以更加高效地完成项目,同时也会发现,在做项目的项目详细地划分使得工作方向更加明确,在以后的学习中我也会更加注重这方面知识的积累,开发项目时合理规划每一个阶段并计算所需时间。