自动化测试之路——EMMA在java代码覆盖率自动化测试中的应用(二)

来源:互联网 发布:三年二班文具淘宝店 编辑:程序博客网 时间:2024/05/01 00:20
1.如何在一些常用的服务器(如Weblogic、Tomcat等)中使用?

我们从上一篇文章中可以知道在emma中有两种运行模式。首先,很难有机会在一个成熟的J2EE容器中使用on-the-fly这种模式。其原因在于很多J2EE的特征需要专门的加载类,这个很可能是发生在EMMA插装类以外。服务器可能运行得很好,但很有可能得不到任何的覆盖数据。

因而,正确的流程是在部署网站之前进行插装(offlinemode)。离线插装经常按照同样的 编译==>插装==>打包==>发布==>获得覆盖率==>生成报告 这样的一个流程,具体的流程如下:

A.       使用EMMA的instr工具来插装需要的类。这一步可以作为编译后打包前来完成。然而,很多的用户同样也发现直接让EMMA处理jar包会更加方便(无论是在本地,使用overwrite模式,或者创建单独的插装附件,使用fullcopy模式)

B.       像往常一样打包J2EE,但此时不要将emma.jar包作为一个lib包括进去,如.war,.ear等

C.       确定容器所使用的JRE,将emma.jar包复制到<jre dir>/lib/ext目录下,如果这无法操作,将emma.jar加入到服务器的classpath中(in a server-specific way)

D.       部署插装的类,.jars,.wars,.ears等,并且通过客户端的测试用例来测试J2EE应用。

E.        要获得覆盖转存文件,有三个选择。

----------  默认的是将覆盖数据转存到JVM关闭钩子,这种情况的发生是当VM存在或者通过Ctrl+C关闭。

-----------在emma 版本2.1上. 不管插装代码在什么时候运行,都可以通过该方法获得覆盖转存数据。所以一般推荐使用该方法,可以获得更加准确的数据。

----------- 也可以使用编写相关的代码来获得覆盖转存信息,通过调用以下的函数即可.

我们必须明确的是,该方法仅仅在运行插装代码的时候有效,所以你需要通过一个jsp, servlet. Servelet filter,或者是应用监听程序来调用。在build2.1.5320以前,这个是唯一的触发覆盖转存,在新的CTL工具中已经不建议使用。

 


在此强烈建议使用coverage.get控制命令和ctl工具(版本2.1中可用)。

http://emma.sourceforge.net/faq.html#q.runtime.coveragedump

注意:运行java程序时如果加载多个jar包,则是用“;”隔开


2. Weblogic环境

2.1  weblogic简介

Weblogic 和Tomcat较为类似,一般做中型或大型网站会使用weblogic来部署。Weblogic部署时需要注意到数据库的衔接,因而在web项目打包之后,需要解压到服务器上。

2.2  weblogic安装

安装环节的话要注意jdk的安装,首先安装jdk。Weblogic安装时注意可能出现oracle错误,即oracle软件需要提供一个oracle的根目录。

2.3  部署web项目

将j2ee的web项目进行打包war,然后在服务器端进行解压,配置相关的数据库以及端口操作。具体的部署,需要再后面的操作中去熟悉。


3. 用EMMA对java web + weblogic的测试

3.1  emma工具的命令

将emma.jar分别部署在$JAVA_HOME$/jre/lib/ext和项目的web-inf/lib下

使用emma对weblogic上部署的web服务进行插装操作

(1)插装web-inf下面的classes文件夹的class文件【如果仅需对部分class文件进行插装,可以采用emma的部分选择插装模式】。其插装命令和结果如下,其中-Dmetadata.out.file是用来设置输出.em文件的位置。


(2)运行weblogic服务器,运行相关的测试网站

运行时可以看到服务器的控制台显示出emma:47653端口已经打开

(3)获取jvm虚拟机中的测试信息,生成.ec的代码覆盖率报表文件

注意:此时很容易出现RFC错误,主要需要排查的是【是否将emma.jar包复制到web-inf/lib下】【服务器是否显示emma47653端口开始监听】

在weblogic服务器端可以看到监听端口已经打开


(4)此时已经获取到了插装文件.em以及测试文件.ec,将二者合并生成.html(或者.txt)文件,生成成功之后,即可查看java代码的覆盖率。

可以看到在相应的文件夹下生成了我们需要的文件


打开html文件查看在功能测试后代码的覆盖率报告(由于部署时没有java代码提供,所以无法看到代码的标记信息

我们可以点击各个包里面的文件,查看单个的java程序的代码覆盖率,找出覆盖率低的原因,为编程人员和测试人员提供一定的参考,有助于完善软件,提供其运行得性能和效率。



参考文献:

官方网站 http://emma.sourceforge.net/docs.html



1 0
原创粉丝点击