使用Cobertura统计单元测试覆盖率(上)

发表于:2010-7-27 11:38

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

  学习Cobertura的起因是前天晚上媳妇儿(终于有出场机会了)突然问我有没有用过一些可以统计单元测试覆盖率的工具,答曰:木有...感觉比较丢人,于是昨天晚上研究了一把,今天顺便share一下。

  因为之前没有用过这方面的工具,所以只能Google一下了,发现有很多这方面的工具,看着比较顺眼的有JCoverage, EMMA, Cobertura等等,因为JCoverage收费了,所以最后挑了一个自己感觉生成的report比较好看的学习了一把:Cobertura。 (如果有更好的工具,还望不吝赐教)

  刚看到Cobertura的时候,比较纠结,因为不认识这个词儿,也查不到是什么意思,据说是西班牙语的“覆盖率”之类的意思,我也无从考究了,反正现在我是老写错,囧RZ...

  以上都是闲篇儿...

  --- James Gosling mused: "I don't think anybody tests enough of anything."

  做单元测试是developer都要接触的事情,工具也基本上都是选择JUnit或者TestNG,但是无论是JUnit还是TestNG都只能得出一个测试用例相关的报表


  从这个报表中我们能得信息是,测试用例的执行情况,成功率,失败率,哪个失败了等等。通过这份报表我们并不能得悉我们是否把所有的功能代码都测试到了,那么这时候我们就需要引入单元测试覆盖率的概念了。

  单元测试覆盖率通俗的讲就是多少行代码被测试用例运行到了,多少个block被执行了,多少个包被执行了等,通过这些数据我们可以清楚的了解测试的覆盖率情况,进而反向的改善已有的或者新添加测试用例去尽可能多的覆盖功能代码,block等,以提高代码的可信赖度。

  对于Java而言,进行覆盖率分析的方式有三类:第一种是将instrumentation(不知道怎么翻译好,测试仪表?),直接加入到源代码中;第二种是将instrumentation加入到编译好的Java字节码中;第三种是在一个可编辑的虚拟机中运行代码。Cobertura选择了第二种方式。

  为了便于使用,Cobertura提供了两种方式将Cobertura集成到已有的运行环境中: Ant和命令行

  总结起来Cobertura做的事情就是:

  1. Cobertura将instrumentation加入到编译好的需要被检测的Java类的字节码中。

  2. 运行测试用例的时候Cobertura通过之前安插好的instrumentation统计每一行代码是否被执行,所有被植入instrumentation的类的序列化信息将被写入cobertura.ser。

  3. 根据统计结果生成报表,格式为XML或者HTML。

  整个过程不需要我们额外写任何Java代码,只需要通过ant脚本或者命令行触发相应的操作。
31/3123>
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • yshana
    2013-7-24 17:35:48

    tasks.properties这个是个什么文件?
    Could not load definitions from resource tasks.properties. It could not be found

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号