专家简介:冼志超,新炬网络技术专家。
简介
EMMA 是一个开源、面向 Java 程序测试覆盖率收集和报告工具。它通过对编译后的 Java 字节码文件进行插装,在测试执行过程中收集覆盖率信息,并通过支持多种报表格式对覆盖率结果进行展示。
优点
EMMA 收集的数据包括类覆盖率、方法覆盖率、块覆盖率和行覆盖率,这些数据以包为单位进行组织。
大多数功能测试中,测试人员一般不能直接得到被测源代码,源代码也不是测试人员关心的重点。在具体的测试过程中,功能测试人员一般以一个有意义的功能模块作为测试关心的重点,而能够反映一定功能含义的类和方法的覆盖率在功能测试中更有价值。因此,在功能测试中,类覆盖率和方法覆盖率是测试人员关心的重点,行和块覆盖率则作为测试的参考。
测试覆盖率报告中包含了两个方面的内容,测试覆盖的部分和未被测试覆盖的部分。尽管百分之百的测试覆盖率不能代表被测对象完全没有问题,但是测试覆盖的部分以及覆盖比率可以增加测试者对测试工作的信心,指导测试执行以及测试的方向。另一方面,当测试用例执行出现异常时,针对每个测试用例的测试报告还可以提供可疑代码的范围,为代码纠错提供帮助。
测试覆盖率报告中未覆盖的部分也同样有价值:
· 表明测试可能不完整,有些功能、代码没有被测试覆盖到。
· 为测试用例的设计提供指导建议。在覆盖率报告的指导下,测试人员有目的地与开发人员进行讨论,确定未覆盖部分是测试的空白还是不需要测试的部分。
· 帮助开发人员发现无用代码,为修改,完善代码提供依据。
在使用 EMMA 获得测试覆盖率过程中,类、方法等覆盖的百分比报告,可以方便测试人员更好的评估测试。测试人员通过对照覆盖率报告与测试用例设计文档,需求文档可以迅速找到测试的不足。通过与开发人员进行讨论,可以更好的评估测试力度,并指导进一步的测试。因此在功能测试中引入覆盖率信息,能够完善测试结果报告,确保测试质量和力度,保证测试按质、按量地完成。
环境准备
操作系统
EMMA覆盖率测试工具是由纯Java开发,可运行在任何支持JRE1.6+版本的系统内,包括Windows、Linux。
JDK环境
Emma覆盖率测试工具运行时需使用JRE,配置环境变量:
· JAVA_HOME:C:\Program Files (x86)\Java\jdk1.6.0_38
· Path:C:\Program Files (x86)\Java\jdk1.6.0_38\bin;
· CLASSPATH:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
配置好后,命令窗口中分别输入java –version和javac,出现如下图的信息,即为配置成功。
示例WEB应用部署
使用Tomcat部署开源JSPXCMS的演示站点,包含了新闻、图集、视频、下载、在线留言、人员招聘、BBS等模块。jspxcms是一个开源的、基于Java的内容管理系统&#