你的项目统计这些数据吗?(2)

前面我们曾经讲过《你的项目统计这些数据吗?》,这里我们在补充一些内容。

1. bug原因分类

    bug产生的原因只有一种,那就是代码编写错误,没有什么设计错误还是需求错误之类的荒谬分析。如果牵强的分类会发生什么情况,程序员为了减轻自己的责任,将问题尽量的归结为:

     设计不充分 —— 设计人员的问题     需求不明确 —— 需求分析人员的问题
     测试用例不足 —— 管理人员的问题——他没给我足够的时间用来测试。

然而这些统统都不是问题的真正原因,bug产生的原因就只有一种:代码书写错误。
     比如那个二分法查找的著名bug:

     mid =  (left + right) / 2;会导致当left + right > Integer.Max的时候产生负数,从而引起数组越界。

     如果让你来分类你会怎么分?
         - 设计错误         - 基础API不熟悉
         - 测试用例不充分
     是三个常见的分类方式。然而这么分类的意义何在?
      设计错误,那以后就能够规避设计上不出错误吗?
      API不熟悉,那以后就能够加深API的理解吗?
      测试不充分,那以后就能够做充分的测试吗?

      答案都是否定的,因为
       引起设计错误的原因是时间不足,所以复查不充分。
       实际上作者可能知道>>>的用法,但是没有考虑到这里的越界情况,如果给他足够多的时间(据说发现这个bug用了12年)
       测试不充分的原因仍然是时间不足。

      所以,代码的Bug就是代码的bug,不应该归结为其他原因,这只是编程人员减轻自己责任的一个借口而已。

2.bug产生阶段分类

     做这个分析的目的是为了从上层来更早的提高质量。然而,只要把软件工程分阶段了,就违背了把质量更早的提高这个目标。这个将在《荒谬过程》一文中详细阐述。

     所以与其做bug产生阶段分类,不如想想如何才能够去掉阶段吧。

     更何况,每次项目统计出来的数据总是差不多,也就是分析了也没有改进,那么分析有什么必要呢?

3.各阶段工时分布

    和上述问题一样,把软件开发分阶段就是违背了早期提高质量这个目标的。所以,也没有必要统计各个阶段的工时分布,况且,统计工时还需要耗费工时——这也是目标和行为背离的一个行为。

4.bug未发现的原因

   bug未发现的原因也只有1个,那就是测试不充分。   统计这个数据的原本目的是为了能够通过bug未发现的原因进行分类分析,从而能够提升质量,减少提交给客户的bug数量。然而,这一统计本身并不能达到这个目的,反而只是浪费工时而已。
   请参照《到底应该测试多少(1)——尽量的全面》和《到底应该测试多少(2)——不要放过细节》这两篇文章来看看测试中到底有多少遗漏。另外,回归测试的时候采用影响性分析——>有选择的测试这种懒人思维也是导致测试不充分的原因。

   所以要想尽量减少遗漏给客户的bug,那就从如下几方面着手吧:

    A.增加测试用例种类
    B.改进测试手段 —— 引入自动测试,以降低回归测试成本
    C.改进测试流程 —— 不论何时提交,都要全面测试

   否则,做bug未发现原因分类这种分析也就是聊以慰藉而已。

5.Review的问题分类

    Review的时候问题可能分为:风格的问题、逻辑的问题、规范的问题、需求吻合度的问题等等若干种。但是做这种分类的意义只在于证明做了很多机器应该做的事情。

    关于这一点将在《走马看花的代码复查》中详细阐述。

   Review的问题应该只有一种:耦合度偏高

   风格的问题、规范的问题属于机器的工作,需求吻合度不应该在Review时才发现。而逻辑的问题通过Review发现的可能性很小。只有耦合度问题可以在Review中最容易发现,也应该在Review中发现。

6.文档页数

   文档该不该写都有一定的疑问,更何况去统计页数。另外,页数是一个很不靠谱的概念。字体的大小,间距的大小,换行的频度都可能会影响文档的页数。更为重要的是,统计文档的页数对于软件质量改进或者过程改进毫无帮助。

 

posted @ 2012-12-05 21:30  史蒂芬.王  阅读(395)  评论(0编辑  收藏  举报