2018-2019-1 20189206 《构建之法》第二章学习笔记

2018-2019-1 20189206 《构建之法》第二章 学习笔记

第二章 个人技术和流程

单元测试

单元测试应该准确、快速地保证程序及本模块的正确性。

  • 单元测试的标准
    • 单元测试应该在最基本的功能、参数上验证程序的正确性。
      • 单元测试应该测试的是程序中最基本的单元、系统中最基本的功能点。
    • 单元测试必须由最熟悉代码的人来写
      • 最好在测试的时候就写好单元测试,可以体现API的语义。
    • 单元测试过后,机器状态保持不变
    • 单元测试要快(一个测试的运行时间是几秒钟而不是几分钟)
    • 单元测试应该产生可重复、一致的结果
    • 独立性——单元测试的运行、通过、失败不依赖于别的测试,可以人为构造数据,以保持单元测试的独立性。
      • 单元测试中的模块可以直接引用其他的模块,并期待其他模块返回正确的结果。
    • 单元测试应该覆盖所有的代码路径
      • 所有的代码路径是包括错误处理的路径,为了保证代码的覆盖率,单元测试必须测试公开和私有的函数、方法。
        ** 100%的代码覆盖率不等于100%的正确性 **
    • 单元测试应该集成到自动测试的框架中
    • 单元测试必须和产品代码一起保存和维护

回归测试

在单元测试基础上,就可以建立关于这一模块的回归测试。顾名思义,在项目中,一个模块或功能以前是正常的,但是在一个新的构建中出了问题,那么这个模块出现了“退步”从正常工作的状态退化到不正常工作的状态。

回归测试最好要自动化,对每一个构建快速运行所有的回归测试,以保证今早发现问题。

  • 回归测试的目的在于
    • 验证新的代码改正了缺陷
    • 验证新的代码没有破坏模块的现有功能

效能分析

  • 两种分析方法
    • 抽样 当层序运行结束时,VS查看这个程序运行在哪一个函数内,并记录下来。程序结束后,VS得出关于程序运行时间分布的大致印象。
    • 代码注入 将检测代码加入到每一个函数中,程序的各个效能可以被精确地测量。缺点是程序的运行时间会大大加长,产生很大的数据文件,增加数据分析的时间。
    • 一般的做法是先利用抽样方法找出效能瓶颈,在针对特定的模块用代码注入的方法进行效能分析。

个人开发流程PSP(personal Software Process)


  • 计划
    • 明确需求和其他相关因素,指明时间成本和依赖关系
  • 开发
    • 需求分析
    • 生成设计文档
    • 设计复审
    • 代码规范
    • 具体设计
    • 具体编码
    • 代码复审
    • 测试(自测、代码修改和提交修改)
  • 报告
    • 测试报告
    • 计算工作量
    • 事后总结,并提出过程改进计划

PSP有如下特点

  • 不限于某一种软件技术,而是着眼于软件开发的流程,开发出不同应用的软件工程师可以互相比较
  • 不依赖于考试,主要靠工程师自己收集数据,然后分析提高
  • 在小型、初创的团队中很难找到高质量的项目需求,意味着程序员的输入质量不高,得到的软件质量也不高
  • PSP依赖于数据
  • PSP的目的是记录工程师如何实现需求的效率,而不是记录顾客对产品的满意度。

总结

在过去的学习和实践中因为专业学的很多,没有接触到项目开发流程和类似于团队管理这方面的知识,通过本章对于PSP个人开发流程的学习,了解到一个软件项目的开发不仅仅局限于代码的编写,着眼于整个项目的开发,从需求分析到最后的事后总结,并详细记录每个环节所需要的时间,可以更加高效地完成项目,同时也会发现,在做项目的项目详细地划分使得工作方向更加明确,在以后的学习中我也会更加注重这方面知识的积累,开发项目时合理规划每一个阶段并计算所需时间。

原文地址:https://www.cnblogs.com/zz-1226/p/9902029.html