追求代码质量: 不要被覆盖报告所迷惑
日期:2007年10月9日 作者: 查看:[大字体 中字体 小字体]-
测试覆盖工具对单元测试具有重要的意义,但是经常被误用。这个月,Andrew Glover 会在他的新系列 —— 追求代码质量 中向您介绍值得参考的专家意见。第一部分深入地介绍覆盖报告中数字的真实含义。然后他会提出您可以尽早并经常地利用覆盖来确保代码质量的三个方法。
您还记得以前大多数开发人员是如何追求代码质量的吗。在那时,有技巧地放置 main() 方法被视为灵活且适当的测试方法。经历了漫长的道路以后,现在自动测试已经成为高质量代码开发的基本保证,对此我很感谢。但是这还不是我所要感谢的全部。Java? 开发人员现在拥有很多通过代码度量、静态分析等方法来度量代码质量的工具。我们甚至已经设法将重构分类成一系列便利的模式!
所有的这些新的工具使得确保代码质量比以前简单得多,不过您还需要知道如何使用它们。在这个系列中,我将重点阐述有关保证代码质量的一些有时看上去有点神秘的东西。除了带您一起熟悉有关代码质量保证的众多工具和技术之外,我还将为您说明:
- 定义并有效度量最影响质量的代码方面。
- 设定质量保证目标并照此规划您的开发过程。
- 确定哪个代码质量工具和技术可以满足您的需要。
- 实现最佳实践(清除不好的),使确保代码质量及早并经常地 成为开发实践中轻松且有效的方面。
谨防上当
这是一个晚上鏖战后的早晨,大家都站在饮水机边上。开发人员和管理人员们了解到一些经过良好测试的类可以达到超过 90% 的覆盖率,正在高兴地互换着 NFL 风格的点心。团队的集体信心空前高涨。从远处可以听到 “放任地重构吧” 的声音,似乎缺陷已成为遥远的记忆,响应性也已微不足道。但是一个很小的反对声在说:
女士们,先生们,不要被覆盖报告所愚弄。
现在,不要误解我的意思:并不是说使用测试覆盖工具是愚蠢的。对单元测试范例,它是很重要的。不过更重要的是您如何理解所得到的信息。许多开发团队会在这儿犯第一个错。
高覆盖率只是表示执行了很多的代码,并不意味着这些代码被很好地 执行。如果您关注的是代码的质量,就必须精确地理解测试覆盖工具能做什么,不能做什么。然后您才能知道如何使用这些工具去获取有用的信息。而不是像许多开发人员那样,只是满足于高覆盖率。
测试覆盖度量
测试覆盖工具通常可以很容易地添加到确定的单元测试过程中,而且结果可靠。下载一个可用的工具,对您的 Ant 和 Maven 构建脚本作一些小的改动,您和您的同事就有了在饮水机边上谈论的一种新报告:测试覆盖报告。当 foo 和 bar 这样的程序包令人惊奇地显示高 覆盖率时,您可以得到不小的安慰。如果您相信至少您的部分代码可以保证是 “没有 BUG” 的,您会觉得很安心。但是这样做是一个错误。
存在不同类型的覆盖度量,但是绝大多数的工具会关注行覆盖,也叫做语句覆盖。此外,有些工具会报告分支覆盖。通过用一个测试工具执行代码库并捕获整个测试过程中与被 “触及” 的代码对应的数据,就可以获得测试覆盖度量。然后这些数据被合成为覆盖报告。在 Java 世界中,这个测试工具通常是 JUnit 以及名为 Cobertura、Emma 或 Clover 等的覆盖工具。
行覆盖只是指出代码的哪些行被执行。如果一个方法有 10 行代码,其中的 8 行在测试中被执行,那么这个方法的行覆盖率是 80%。这个过程在总体层次上也工作得很好:如果一个类有 100 行代码,其中的 45 行被触及,那么这个类的行覆盖率就是 45%。同样,如果一个代码库包含 10000 个非注释性的代码行,在特定的测试运行中有 3500 行被执行,那么这段代码的行覆盖率就是 35%。
报告分支覆盖 的工具试图度量决策点(比如包含逻辑 AND 或 OR 的条件块)的覆盖率。与行覆盖一样,如果在特定方法中有两个分支,并且两个分支在测试中都被覆盖,那么您可以说这个方法有 100% 的分支覆盖率。 - [1] [2] [3] [4] [5] [6] [7] [8] [9] 下一页
-
- 追求代码质量: 不要被覆盖报告所迷惑 相关文章:
- ·《牧场物语》追求护士MM方法(GBA) - 牧场物语攻略秘籍 - 牧场物语
- ·十二星座中对她温柔也追不到的星座女生
- ·天下霸图-追加秘籍
- ·单身女孩看过来--女生追男生猎捕报告
- ·《牧场物语 女孩版》追求男生心得 - 技巧心得
- ·追求女孩必修五招术
- ·追求代码质量: 不要被覆盖报告所迷惑
- ·Petstore源码追踪记
- ·查看系统记录以及追踪系统入侵者
- ·插翅难逃 根据Web服务器的记录来追踪黑客
- 追求代码质量: 不要被覆盖报告所迷惑 相关软件
- ·极品飞车(Need For Speed) 6 热力追踪2(Hot Pursuit 2)
- ·极品飞车(Need For Speed) 3 致命追击(HighStakes)
- ·Highway Pursuit 公路追缉令 V1.0
- ·曼哈顿追逐赛
- ·爱人追缉令
- ·追寻今生的最爱
- ·火线追缉(Mug Smashers)
- ·股票追击手 V2006 专业版
- ·月光搜索 V1.01 追捕版
- ·漂亮男子追情记
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
上一篇:需求阶段的风险分析
下一篇:解析UML的动态建模机制
精品推荐
热点TOP10
- ·深入浅出.NET泛型编程
- ·如何为嵌入式开发建立交叉编译环境
- ·SVG与UML图详解
- ·使用ADS1.2进行嵌入式软件开发
- ·Linux 系统内核的调试
- ·UML类图详解(1)
- ·统一建模语言(UML)的现状及发展
- ·微软WCF给SOA带来的影响
- ·.NET 数据访问架构指南
- ·利用UML类图设计Java应用程序详解(1)
- ·质量管理新七种工具简介(1)
- ·Tomcat中用web.xml控制Web应用详解
- ·VC中利用多线程技术实现线程之间的通信
- ·WinCE嵌入式开发程序入门
- ·用WPF构建强大的用户体验
- ·ISO9000:2000 质量管理八大原则(1)
- ·掀起你的盖头来:WPF开发简介
- ·Apache APR可移植运行库简介(1)
- ·团队协作关键做好三件事&一个项目经理的一些个人体会
- ·升级到SQL Server 2005 的10大理由
