可爱的EMMA:测试覆盖率工具

发表于:2009-02-04来源:作者:点击数: 标签:工具覆盖率EMMA
就在几个月前的一个项目中,我决心按照 敏捷 开发 的实践,为项目组引入一个 测试 覆盖率 工具。首先考虑的当然是大名鼎鼎的Clover,Clover功能强劲,理应是测试覆盖率的首选工具。但Clover用于商业开发是要收费的,况且我喜欢 开源 、免费的东西。经过了一番
就在几个月前的一个项目中,我决心按照敏捷开发的实践,为项目组引入一个测试覆盖率工具。首先考虑的当然是大名鼎鼎的Clover,Clover功能强劲,理应是测试覆盖率的首选工具。但Clover用于商业开发是要收费的,况且我喜欢开源、免费的东西。经过了一番测试和比较,我选择了EMMA Code Coverage。就像一篇评测覆盖率工具的Blog所言,它是开源工具的首选。 

  在讨论EMMA的使用之前,我首先简要介绍几个相关的概念。

  测试覆盖率(Code Coverage)

  测试覆盖率,简单的说,就是评价测试活动覆盖产品代码的指标。测试的目的,是确认产品代码按照预期一样工作,也可以看作是产品代码工作方式的说明文档。进一步考虑,测试覆盖率可以看作是产品代码质量的间接指标--之所以说是间接指标,因为测试覆盖率评价的是测试代码的质量,并不是产品代码的质量。

  代码覆盖率是一种白盒测试,因为测试覆盖率是评价产品代码类内部的指标,而不是评价系统接口或规约。测试覆盖率尤其用于评价测试代码是否已经覆盖了产品代码所有的路径。

  衡量测试覆盖率的指标很多,常用的指标有:

  Statement coverage,也称作Line coverage,用于评价测试的代码语句覆盖率。

  Basic block coverage, 是Statement coverage的一个变种,它把没有一个分支的代码区域作为一个计量单位,而不是简单的代码行,用于一个if-else分支代码 行数远远大于另一个的情况,在这种情况下,statement coverage指标并不适用。

  Decision coverage(也称作Branch coverage),用于评价代码分支地测试覆盖率。

原文转自:http://www.ltesting.net