追求代码质量(1)-不要被覆盖报告所迷惑-java开发java经验技巧

追求代码质量(1)-不要被覆盖报告所迷惑-java开发java经验技巧

ID:30887612

大小:724.09 KB

页数:16页

时间:2019-01-04

追求代码质量(1)-不要被覆盖报告所迷惑-java开发java经验技巧_第1页
追求代码质量(1)-不要被覆盖报告所迷惑-java开发java经验技巧_第2页
追求代码质量(1)-不要被覆盖报告所迷惑-java开发java经验技巧_第3页
追求代码质量(1)-不要被覆盖报告所迷惑-java开发java经验技巧_第4页
追求代码质量(1)-不要被覆盖报告所迷惑-java开发java经验技巧_第5页
资源描述:

《追求代码质量(1)-不要被覆盖报告所迷惑-java开发java经验技巧》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、追求代码质虽(1):不要被覆盖报告所迷惑-编程开发技术追求代码质量(1):不要被覆盖报告所迷惑原文出处:IBM中国您述记得以前大多数开发人员是如何追求代码质量的吗。在那时,冇技巧地放置?main()?方法被视为灵活口适当的测试方法。经历了漫t的道路以后,现在自动测试已经成为高质量代码开发的基木保证,对此我很感谢。但是这还不是我所要感谢的全部。Java?开发人员现在拥有很多通过代码度量、静态分析等方法來度量代码质量的工具。我们甚至已经设法将重构分类成一系列便利的模式!要获得有关代码质量问题的答案,您可以访问由AndrewGlover主持的?CodeQ

2、uality?论坛。所有的这些新的工具使得确保代码质量比以前简单-得多,不过您还需要知道如何使用它们。在这个系列中,我将重点阐述冇关保证代码质量的一些冇时看上去冇点神秘的东西。除了带您一起熟悉有关代码质量保证的众多工具和技术Z外,我还将为您说明:•定义并有效度量最影响质量的代码方面。•设定质量保证目标并照此规划您的开发过程。•确定哪个代码质蜃工具和技术可以满足您的需要。•实现最佳实践(清除不好的),使确保代码质鱼及早并经常地I成为开发实践中轻松且有效的方面。在这个月,我将首先看看Java开发人员中最流行也是最容易的质量保证工具包:测试覆盖度量。谨防

3、上当这是一个晚上塵战后的早晨,大家都站在饮水机边上。开发人员和管理人员们了解到一些经过良好测试的类可以达到超过90%的覆盖率,正在高兴地互换着NFL风格的点心。团队的集体信心空前高涨。从远处可以听到“放任地重构吧”的声音,似乎缺陷已成为遥远的记忆,响应性也已微不足道。但是一个很小的反对声在说:女士们,先生们,不要被覆盖报告所愚弄。现在,不要误解我的意思:并不是说使用测试覆盖工具是愚蠢的。对单元测试范例,它是很重要的。不过更重要的是您如何理解所得到的信息。许多开发团队会在这儿犯第一个错。高覆盖率只是表示执行了很多的代码,并不意味着这些代码被絃馳?执行

4、。如果您关注的是代码的质量,就必须精确地理解测试覆盖工具能做什么,不能做什么。然后您才能知道如何使用这些工具去获取有用的信息。而不是像许多开发人员那样,只是满足于高覆盖率。测试覆盖度量测试覆盖工具通常口J以很容易地添加到确定的单元测试过程中,而且结果口J靠。卜'载一个可用的工貝,对您的Ant和Maven构建脚木作一些小的改动,您和您的同事就冇了在饮水机边上谈论的一种新报告:测试覆盖报告。当?foo?和?bar?这样的程序包令人惊奇地显示岗?覆盖率时,您可以得到不小的安慰。如果您相信至少您的部分代码可以保证是“没有BUG”的,您会觉得很安心。但是这样

5、做是一个错误。存在不同类型的覆盖度量,但是绝大多数的工具会关注行療競也叫做语句覆盖。此外,有些工具会报告分支覆濫。通过用一个测试工具执行代码库并捕获整个测试过程中与被“触及”的代码对应的数据,就可以获得测试覆盖度量。然后这些数据被合成为覆盖报告。在Java世界中,这个测试工具通常是JUnit以及名为Cobertura>Emma或Clover等的覆盖工具。行療蛊只是指出代码的哪些行被执行。如杲一个方法有10行代码,其中的8行在测试屮被执行,那么这个方法的行覆盖率是80%。这个过程在总体层次上也工作得很好:如果一个类有100行代码,其中的45行被触及,

6、那么这个类的行覆盖率就是45%。同样,如果一个代码库包含10000个非注释性的代码行,在特定的测试运行中有3500行被执行,那么这段代码的行覆盖率就是35%。报告g-愛蛊?的工具试图度量决策点(比如包含逻辑?AND?或?0R?的条件块)的覆盖率。与行覆盖一样,如呆在特定方法中冇两个分支,并且两个分支在测试屮都被覆盖,那么您可以说这个方法有100%的分支覆盖率。问题是,这些度量有什么用?很明显,很容易获得所有这些信息,不过您需耍知道如何使用它们。一些例子可以阐明我的观点。代码覆盖在活动我在清单1中创建了一个简单的类以具体表述类层次的概念。一个给定的类

7、可以有一连串的父类,例如?Vector,它的父类是AbstractList,AbstractList?的父类又是"bstractCollection,AbstractCollection?的父类又是?0bject:清单1.表现类层次的类packagecom.vanward,adana.hierarchy;importjava,utiLArrayList;importjava.util.Collection;importjava.util.Iterator;publicclassHierarchy{privateCollectionclasses;p

8、rivateClassbaseClass;publicHierarchy(){super();this.classes=n

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。