使用emma对web工程进行测试覆盖率检查

来源:互联网 发布:sql desc asc 编辑:程序博客网 时间:2024/05/20 08:42
  •   前言

注册CSDN的号已经好几年了,今天突然发现竟然一篇文章都没有,突然感觉有点汗颜,平时真是太懒了,看的多,做的少,争取以后每个月都能探索一门新技术。

  先说一下背景,因为工作原因,想对写的代码进行一下测试覆盖率的统计,在网上看到不少工具,一开始用的是Cobertura,觉得它的报告比较直观,但是后来发现要用到大量的ant脚本,嘿嘿,因为本人对ant不熟,觉得这个入手太慢了,就换成了emma。

  •   我的探索

  一开始发现有个东东叫做EclEmma,是emma的eclipse插件,顿时感觉前途一片光明,下班以前就可以解决问题。结果用eclipse自带的工具安装以后,发现可能是EclEmma版本太高的原因,coverage视图不能显示。郁闷,只好下了一个低版本了,现在的搭配是myeclipse6.6(自带eclipse3.3.2)+ EclEmma1.5.3。

  装上插件之后,测试junit的时候还遇到一个问题,就是使用junit测试时能够正常运行,使用EclEmma运行junit时报告缺少类文件,上网一通搜,发现是缺少oraclepki.jar包,网上也没找到下载地址,最后发现在Oracle的安装目录下就有,目录为oracle\product\11.2.0\dbhome_1\jlib。感觉挺奇怪,因为在正常编译工程时是不需要这个jar包的。

  EclEmma只能用于测试junit程序或是单机版的。找了半天也木有找到怎么统计web工程发布后人工测试的覆盖率。其实使用junit完全可以满足我们项目对关键算法的验证,但是一个是我太懒啦,用例要求的输入项又太多,所以只好继续寻找。

  最后还是回到了Emma上。emma的命令行命令虽然不多,但也够用了。一开始下载的release版本2.0.5312,结果没有 ctl 命令,最后还是换到2.1.5320版本,下载地址http://sourceforge.net/projects/emma/files/emma-testing/

  •   操作过程

1、将下载zip包中的emma.jar文件复制到使用到的jre目录下的ext文件夹下。

2、使用命令:

java emma instr -m overwrite -ip [classes目录]
得到coverage.em文件

3、使用tomcat启动web工程,测试

4、不要关闭tomcat,使用命令:

java emma ctl -connect localhost:47653 -command coverage.get,D:\test\coverage.ec
得到coverage.ec文件

5、使用coverage.em、coverage.ec两个文件获取报告。使用命令

java emma report -r html -sp . -in coverage.em,coverage.ec

得到覆盖率报告。

  • 使用emma时遇到几个问题

1、没法直接操作war包,如果对war包进行instr,提示说处理了0个文件,所以只好把war包解压以后再处理

2、在windows下tomcat不能自动得到coverage.ec文件,需要使用命令手动获取。

  • 开发环境:

操作系统:window7 64bit 

tomat:apache-tomcat-7.0.25 64bit

jdk:1.6.30

myeclipse:6.6

EclEmma:1.5.3

Emma:2.1.5320

  • 一些参考资料和高级应用

1、Cobertura 测量测试覆盖率(http://www.ibm.com/developerworks/cn/java/j-cobertura/)

2、使用 EclEmma 进行覆盖测试(http://www.ibm.com/developerworks/cn/java/j-lo-eclemma/index.html)

3、可爱的EMMA:测试覆盖率工具(http://www.51testing.com/html/51/n-89451.html)

4、EMMA上手指南翻译(http://blog.hunan2s.com/?p=419)

5、使用 EMMA 获得功能测试覆盖率(http://www.ibm.com/developerworks/cn/opensource/os-cn-emma/)

6、使用 EMMA 测量测试覆盖率(http://www.ibm.com/developerworks/cn/java/j-lo-emma/#download)

7、EMMA使用手册(http://hi.baidu.com/liangkejia_jaja/blog/item/9d5f173de961fad37c1e7184.html)

8、EMMA-OpenSource 的 Java code coverage 工具(http://www.blogjava.net/dorian/archive/2005/10/27/17066.html)

9、采用EMMA对JMeter执行代码覆盖率分析(http://www.365testing.com/bbs/thread-8428-1-1.html)

10、EMMA对功能测试进行代码覆盖率的统计(http://tianya23.blog.51cto.com/1081650/426490)

11、使用emma收集webapp运行期代码覆盖率(http://alin-ass.iteye.com/blog/664127)

12、测试覆盖率工具EMMA使用简要说明(http://utopiasky.iteye.com/blog/983619)

13、emma与tomcat等j2ee应用结合(http://hi.baidu.com/meiwenfox/blog/item/b85767156cc57545f919b87f.html)