Try WhiteBox Testing in Our Projec

工作中给所在team和其他几个team的的同事们做的一个实践的sharing。

sharing 的slides:Try WhiteBox Testing in Our Project

一个参考文档:WhiteBox

关于这次sharing

只是给小组share一下我们最近做了这样一件事情,最终的效果怎么样现在还有待检验,所以经验的东西并不是很多,在开始阶段开效果还不错,所以鼓励大家也可以再自己的项目中勇敢的尝试一下。ETP的课程告诉我们,相比于Black Box testing, whitebox testing 是相对要expensive的。从技术调查,和流程方面。技术调查上,我们通过调查一些静态代码扫描工具来帮助我们提高代码review的效率。在流程上,会通过一定的手段来分析这些工具的report,结对的来review代码。

本来不着重介绍语言太相关的东西,有些东西被拿掉了,但是TSS的同事让分享些Findbugs在HBase中的使用,还是简单说一下。因为语言差不多都是相同的,所以使用其他语言的同事应该也能从中得到启发,

为了和TSS组的同事们分享我们用这个工具发现的问题,这部分倒是要稍微详细的介绍下了。在之前还是要先声明一下.?

Potential Bugs Discovered in HBase 0.20.0

这是TSS的同事们比较关心的部分了,应用Findbugs在HBase的源码中做扫描。得到的一些问题,在前几天出了0.20.1,其中问题的数量从398增加到493。我初步检查了下,没有新的bug pattern出现。说明同一个小组开发的代码,出现的问题也都是很有共性的,通过解决一个就可以带动解决一类,解决一大部分。

关于静态代码工具

和其他的静态扫描工具一样,通过匹配某些pattern的扫描能发现一些问题,有些事实实在在的已经暴露为bug,更多的是一些潜伏的问题,是错误隐患,在后面的代码改动和维护中可能成长为bug。

对于其他team的,使用其他语言来开发的同事们,应该也能得到启发。因为语言都是相通的,其他语言应该也有类似的工具帮助我们来做代码review。就是让大家知道“这个工具,或这类工具真的能发现问题啊”。

但是我可以很保险的说,这个这类工具只是一个工具,尽管他有programming comprehension, 但是那些pattern 都是人输人的,怎么也不能替代一个有经验的工程师。能发现的问题类型也是有限的。尽管我们看到问题集合和多,但还是一个有限的集合,也不过这些。

但是这个工具是无论如何也不能代替人的,不能代替senior的工程师的,尤其是代码很简单的时候,几乎不能发现什么问题,所以读代码是最基本的做法。

关于流程

已经在小组内部讨论过了,就是在每次Build生成一个report,由专人来check这个report。在去检查哪些使问题,哪些不是问题。是问题的再去检查代码,计算机中有个“热点”的概念,想大家都知道。应用到我们这里,有一个地方发现一个问题,一般很可能还会有其他的问题,不管是对于一个feature来说,或者是对于一个代码段来说,或者对于一个source文件来说。所以对于有问题的地方,我们会重点的在做检查。当然这只是一部分,我们有计划对所以得代码做code review的,后面的改动也会做review。这个我们会开展。

关于静态代码扫描工具的Rules

上次小组内分享时,大家讲从中确实能学到一门语言很微妙的地方,真正长进的地方,易错的地方才是考验能力的地方。虽然不知道也可以写代码,但是真正掌握了领会了,可以写出更安全的代码。有个同事讲学习了这些,面试会很有用J。

关于coverage

UT有corverage,但是功能的case没有,都是基于feature的,但是cover了多少的代码,使我们也需要注意的,所以对我们的case加入了coverage的评测。在ishare有一篇文章介绍这个。大家有兴趣可以参考。

完。

工具等其实都是Roland推荐的,表示感谢。

原创文章。为了维护文章的版本一致、最新、可追溯,转载请注明: 转载自idouba

本文链接地址: Try WhiteBox Testing in Our Projec


, , ,

Trackbacks/Pingbacks

  1. Problems found in hbase-0.20.1 by findbugs | idouba - 2015年11月22日

    […] ? ? ?在09年底在对开发的代码进行有限的白盒测试的时候,使用静态代码扫描工具就着依赖使用的hbase(当时0.20.0版本)的代码进行代码扫描。本身直接扫描的report结果内容很多,有些是style和bad practice这样的改善型的,但是也有挺多的通过在代码中确认属于真实bug的。尤其是有些非常低级的bug出现在RegionServer这种非常核心的class里。筛选出来通过team在US的一个同事Andrew Purtell提交了HBASE-1916到。 […]

发表评论