zoukankan      html  css  js  c++  java
  • 构建之法阅读笔记二

    构建之法阅读笔记二

    一:单元测试

    1.好的单元测试标准:

    (1)单元测试应该在最基本的功能/参数上验证程序的正确性

    单元测试应该测试程序中最基本的单元,在此基础上,可以测试系统中最基本的功能点,单元测试要测试API中的每一个方法和参数。

    (2)单元测试必须有最熟悉代码的人(代码的作者)来写

    代码的作者组了解代码的目的,特点和实现的局限性。

    (最好是在设计的时候就写好单元测试,这样单元测试就能体现API的语义)

    (3)单元测试过后,机器状态保持不变。

    这样可以不断的运行单元测试,如果单元测试创建了临时的文件或目录,应该在测试结束后删除。

    (4)单元测试应该产生可重复,一致的结果。

    (用随机数来增加测试的真实性是不现实的,因为随机数不确定,如果这一次随机数错误导致程序出错,但是下一次运行又不能重复这一错误。单元测试不能解决所有问题,不必期望会发现所有缺陷。)

    (5)独立性

    单元测试的运行、通过、失败不依赖于别的测试 ,可以人为构造数据。

      这是比较重要的几点,其他的就不一一赘述。

      在以前我只是使用其中的前三条标准,因为那些都是最基础的,也是交作业时的最基本的要求,现在我对后面的内容也有一些认识,随机数不能解决所有问题,另外单元测试不能解决所有的问题,其

    实这些性质都是最基本的,如果让我直接说是说不出来的,看到之后也感觉就是这麽回事,这些标准在我们的变成过程中会有意识或者无意识的遵循着这些规则。

    2.回归测试(Regression Test)

    1.定义:从正常工作的稳定状态退化到不正常工作的不稳定状态。

    2 目的:验证新的代码的确修改了缺陷和同时验证新的代码有没有破坏模块的现有功能。

    回归测试对我来说时很陌生的,我好像以前很少或者几乎不适用,我认为这个在以后可能会用到,我也会在编程的过程中去有意识地想这个。

    二.效能分析。

    1.效能分析就是让自己夫人程序跑得越快越好,最好是比别人快一个数量级。

    2.两种分析方法:抽样和代码注入。

    抽样就是当程序运行的时候,时不时看一看这个程序运行在哪一个函数并记录下来。

    优缺点:不需要改动程序,可以很快找到瓶颈,但是不能准确表示代码中的调用关系数。

    代码注入 是将检测的代码加入到每一个函数中,这样的程序一举一动都会被记录下来。

    优缺点:程序的各个效能数据都会被精准的测量,但是程序的运行时间会大大将长,还会产生很大的数据文件。

    使用方法:一般是用抽样的方法找到效能瓶颈所在,然后对特定的模块用代码注入的方法做详细分析。

      像我以前认为程序的方法快就是我的代码长度短,方法比较简单,现在发现好像不是折磨一回事,而且我的代码注入也不是这莫用的,我会在代码调试的时候,

    在函数中加入一些代码来判断是否执行,现在对代码注入有了新的理解,

    3.效能分析涉及到的名词

    (1)调用者:函数foo()中调用了bar(),foo()就是调用者。

    (2)被调用函数:上例中的bar()就是被调用函数。

    (3)调用关系树:从程序的主函数开始,调用者和被调用函数就形成了一个树形关系

    还有消逝时间,应用程序时间,本函数时间,所有时间等等。

    三.个人开发流程。

    1.内容:(1)计划(估计这个任务需要多少时间)

      (2)开发(包括 分析需求,生成设计文档,设计复审,代码规范(为目前的开发定制合适的规范),具体设计,具体编码,代码复审,测试(包括自测,修改代码,提交修改))

    (3)记录用时

    (4)测试报告

    (5)计算工作量

    (6)事后总结

    (7)提出过程改进计划

    2.PSP特点

    (1)不局限于某一个软件技术,而是着眼于软件开发的流程,这样开发不同应用的软件工程师可以相互比较。

    (2)不依赖与考试,而主要靠工程是自己手机数据,然后分析,提高。

    (3)PSP依赖于数据,需要工程师输入数据,记录工程师的各项活动这需要很多时间,再加上数据不准确或者有遗失,或者这些数据不利于工程师本人。

    (4)PSP的目的世纪路工程如何实现需求的效率,而不是记录顾客对产品的满意度。

  • 相关阅读:
    Wauzh原理简析及audit规则风险评估
    浅析这句经常在框架中出现的JS代码加深对bind的理解
    浅析如何做web安全问题
    浅析JavaScript到底是什么
    浅析webpack异步加载原理及分包策略
    浅析JavaScript的执行机制
    浅析如何提高代码可读性复用性拓展性
    浅析代码编译过程
    浅析JavaScript的7种异常类型及如何快速排查
    浅析浏览器是如何调度进程和线程的
  • 原文地址:https://www.cnblogs.com/Gazikel/p/14908104.html
Copyright © 2011-2022 走看看