zoukankan      html  css  js  c++  java
  • 2018-2019-1 20189206 《构建之法》第二章学习笔记

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

    第二章 个人技术和流程

    单元测试

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

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

    回归测试

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

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

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

    效能分析

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

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


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

    PSP有如下特点

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

    总结

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

  • 相关阅读:
    Java的静态块与实例块(转)
    Programming Ability Test学习 1031. Hello World for U (20)
    Programming Ability Test学习 1011. World Cup Betting (20)
    Programming Ability Test学习 1027. Colors in Mars (20)
    Programming Ability Test学习 1064. Complete Binary Search Tree (30)
    Programming Ability Test学习 1008. Elevator (20)
    【maven详解-生命周期】Maven的生命周期和插件
    【maven详解-插件】maven插件学习之源码插件Source Xref
    $(document).ready(){}、$(fucntion(){})、(function(){})(jQuery)onload()的区别
    你还没真的努力过,就轻易输给了懒惰
  • 原文地址:https://www.cnblogs.com/zz-1226/p/9902029.html
Copyright © 2011-2022 走看看