测试覆盖率的实现方式
实现测试服务覆盖率的技术通常分为两种:
1、Instrumentation
Instrumentation技术在产品代码的关键位置插入统计代码。事实上,Instrumentation技术可以分为两种方式:Class Instrumentation和Source Instrumentation。前者把统计代码插入编译好的.class文件,而后者则把统计代码插入源代码并编译成新的.class文件。大多数测试覆盖率工具采用这两种Instrumentation技术。
2、Custom JVM
另一种方式是在JVM中把统计代码插入.class。测试覆盖率分析可以在JVM执行测试代码的过程中完成。
测试覆盖率工具的典型特性
1、和Ant集成
2、多种报告输出格式
3、源代码链接
4、覆盖率历史报告
EMMA的特点
Instrumentatiton方式:EMMA使用两种模式来实现覆盖率的统计,它称作“offline”和“on-the-fly”。EMMA使用Instrumentation .class文件的方式。EMMA通过byte instrumentation生成.class文件的增强版本,加入了统计测试覆盖率的代码Hook。对于“offline”模式,它从硬盘读入.class文件,然后输出经过Instrumented的增强版本;对于“on-the-fly”模式,这些操作发生在JVM内部(即增强版本的.class文件不写入硬盘)。前者是通用的模式,而后者用于简单的Java应用程序。
支持的覆盖率指标:EMMA支持class,method,line和basic block coverage指标。
优越的性能和可伸缩性。
Java平台支持:EMMA支持Java 1.2或更高版本的JVM,不依赖于任何第三方类库。
CPL License。
使用EMMA:命令行方式
文章来源于领测软件测试网 https://www.ltesting.net/