使用 EMMA 获得功能测试覆盖率(2)

发表于:2016-02-18来源:IBM Bluemix作者:不详点击数: 标签:功能测试
由于示例被测组件运行在 Websphere Portal Server 中,并使用默认的 JRE 运行,因此将emma.jar 放到 /opt/WebSphere/PortalServer/ java /jre/lib/ext 下面。在实际的测试中,将

  由于示例被测组件运行在 Websphere Portal Server 中,并使用默认的 JRE 运行,因此将emma.jar 放到 “/opt/WebSphere/PortalServer/java/jre/lib/ext” 下面。在实际的测试中,将该路径进行相应的替换。

  插装

  EMMA 中提供了 “instr” 命令完成插装操作。插装操作可以面向 JAR 包、 WAR 包、 WAR 包、类文件和目录,选择合适的命令进行插装可以使插装过程变得简便。下面的1-4通过具体例子介绍了不同情况下的插装命令。

  插装目录和类文件

  对于类文件,通过指定类文件所在的目录实现。

  清单 1. 对类文件插装命令

  插装 JAR 包

  JAR 包可以作为一个整体进行插装。通过对整个 JAR 进行插装,可以避免对 JAR 包进行解压和压缩的过程,提高插装效率。

  清单 2. 对 JAR 包插装命令

  插装 WAR/EAR 包

  由于 WAR/EAR 包需要运行在特定的环境中,所以在进行插装之前,需要先将其安装在特定的 J2EE 容器中,然后将其看作目录进行插装。

  清单 3. 对 WAR/EAR 包插装命令

  选择性的插装

  EMMA 支持对整个 JAR 包和目录进行插装,但如果在 JAR 包或者目录中包含系统的文件或者测试过程中不关心的文件时,应该进行选择性插装,因为这些文件的存在会影响测试结果的百分比。 EMMA 提供了选择插装的选项,实现选择性插装。

  清单 4. 选择插装命令

  上述命令选择了与清单2中同样的 JAR 包,由于只包含了 org.wstest.service.* 内的内容,因此只插装了4个类。

  以上的1-4分别介绍了在插装过程中的常用命令,下面对命令中用到的一些参数进行解释。

  参数 “m”代表插装后文件输出的模式。有三个值可供选择: “copy” ,“overwrite” 和 “fullcopy” 。其中,“copy” 和 “ fullcopy” 这两种模式将会改变插装文件所在的目录,并需要测试人员手动为其生成所需的包,使用起来比较复杂。“overwrite” 模式直接用插装后的文件覆盖插装前文件,使用方便。但是由于同一时间生成的文件只能插装一次,在 “overwrite”模式下,插装前的文件已经丢失,测试人员无法重复插装操作,因此建议在插装之前先将需要插装的文件和包进行备份。

  参数 “ip” 和 “cp” 用来提供插装路径,其中 “cp” 用来指明一个文件夹, “ip” 指定单独的文件或者 JAR 包。

  参数 “Dmetadata.out.file” 用来指定插装得到的元数据文件保存的路径。

  EMMA 中通过 “ix” 参数指定文件的包含和排除关系,其中在 “+” 符号后的文件为包含进的文件, “-” 后面的内容为排除在外的文件。

  合并元数据

  完成插装操作以后,在指定的路径下会产生一些名为 “*coverage.em” 的文件,这些文件保存了插装的元信息,这些信息主要是记录插装过程中的插装点在被测代码中的位置。如果在插装过程中,指定这些文件到同一文件的话, EMMA 默认将元数据进行合并。如果测试人员未指定路径,或者希望得到独立的元文件,这些文件将分别产生在默认或指定的目录下。测试人员还可以通过使用 “merge” 命令手动将这些元文件进行合并,保证生成的覆盖率报表的全面性。注意:合并操作不支持逆向操作。

  清单 5. 合并元数据命令

  在 “input” 后面的参数为待合并的文件名,在 “out” 后面的参数为合并以后的结果文件。

  完成上面的操作以后,就已经完成了收集覆盖率信息的准备工作。接下来测试人员可以进行正常的测试工作,在运行测试的过程中, EMMA 将跟踪并记录执行轨迹,得到覆盖率信息。

  运行测试用例,得到覆盖率报告

原文转自:http://www.testwo.com/article/591