• 1. 测试覆盖率工具 EclEmma使用培训测试小组20080604
  • 2. 目的提高单元测试质量 ,从而提高项目整体开发效率和软件质量2Mantis使用培训
  • 3. 培训内容术语介绍 EclEmma介绍 EclEmma使用 安装 获得测试覆盖率 查看结果 合并结果 导出报告 导入数据 高级特性3Mantis使用培训
  • 4. 术语介绍测试覆盖率 测试代码对被测功能代码的覆盖程度 测试覆盖率实现技术4Mantis使用培训
  • 5. 测试覆盖率实现技术Instrumentation:代码注入,在产品代码的关键位置插入统计代码,从而获得测试覆盖率数据 Class Instrumentation: 把统计代码插入编译好的.class文件 Source Instrumentation:把统计代码插入源代码并编译成新的.class文件 Custom JVM:在JVM中把统计代码插入.class。测试覆盖率分析可以在JVM执行测试代码的过程中完成EclEmma 为Class Instrumentation方式,不会改变项目文件中的class文件5Mantis使用培训
  • 6. 培训内容术语介绍 EclEmma介绍 EclEmma使用 安装 Coverage运行模式 查看结果 合并结果 导出报告 导入数据 高级特性6Mantis使用培训
  • 7. EclEmma介绍Eclipse插件 工作原理:Class Instrumentation(把统计代码插入编译好的.class文件) 测试覆盖率指标7Mantis使用培训
  • 8. 测试覆盖率指标行覆盖率 部分行覆盖:a>b?a:b基本语句块覆盖率 基本语句块:没有if-else分支的代码区域 类覆盖率 由JVM加载并初始化 方法覆盖率 第一个基本语句块被执行 测试覆盖率指标8Mantis使用培训
  • 9. 培训内容术语介绍 EclEmma介绍 EclEmma使用 安装 Coverage运行模式 查看结果 合并结果 导出报告 导入数据 高级特性9Mantis使用培训
  • 10. 安装(一) Eclipse 标准的 Update 机制远程安装 10Mantis使用培训
  • 11. 安装(二)http://update.EclEmma.org/ 11Mantis使用培训
  • 12. 培训内容术语介绍 EclEmma介绍 EclEmma使用 安装 Coverage运行模式 查看结果 合并结果 导出报告 导入数据 高级特性12Mantis使用培训
  • 13. 显示Coverage工具按钮(一)13Mantis使用培训
  • 14. 显示Coverage工具按钮(二)14Mantis使用培训
  • 15. 显示Coverage工具按钮(三)15Mantis使用培训
  • 16. 示例项目介绍示例项目源代码组织结构:Random:被测代码 RandomTest1:Random类的第一个JUnitTestCase类 RandomTest2:Random类的第二个JUnitTestCase类 Other: 与其他3个类无关的类(设置这个类的原因,稍后会做说明) Other包:无关包(设置这个包的原因,稍后会做说明)16Mantis使用培训
  • 17. 运行测试程序以RandomTest1为例17Mantis使用培训
  • 18. 查看结果18Mantis使用培训
  • 19. Coverage视图1 项目 2 源文件 3 包 4 类 5 方法对用output路径相同的类, 无法单独为某个类分析其测试覆盖率 19Mantis使用培训
  • 20. 标注源代码绿色:全部执行黄色:部分执行红色:未执行20Mantis使用培训
  • 21. 导出报告在Coverage视图主区域中点击右键,出现的快捷菜单中选择”Export Report…”21Mantis使用培训
  • 22. 导出报告session:一次测试覆盖率交互活动 要导出的session 选择报告的类型(HTML/XML/Text/EMMA session) 存放位置22Mantis使用培训
  • 23. HTML报告-项目23Mantis使用培训
  • 24. HTML报告-包24Mantis使用培训
  • 25. HTML报告-类/方法25Mantis使用培训
  • 26. 导入session文件可将该session的测试覆盖率数据从外部导入26Mantis使用培训
  • 27. 导入session文件27Mantis使用培训
  • 28. 培训内容术语介绍 EclEmma介绍 EclEmma使用 安装 Coverage运行模式 查看结果 合并结果 导出报告 导入数据 高级特性28Mantis使用培训
  • 29. 高级特性Coverage视图工具栏 EclEmma的配置界面29Mantis使用培训
  • 30. 显示更多菜单Coverage视图工具栏Coverage工具栏选择session 最小/大化视图折叠所有节点定位到其他视图选中的Java元素的测试覆盖率删除当前/所有session重新执行当前session当只有一次测试覆盖率测试结果时,合并session按钮不可用,显示为灰色。合并session30Mantis使用培训
  • 31. 可以将多次测试覆盖率的结果进行合并 选择Coverage视图工具栏上的 按钮,进入如下界面:合并结果31Mantis使用培训
  • 32. 合并后的结果测试覆盖率是多次测试覆盖率的累积32Mantis使用培训
  • 33. 显示更多菜单(过滤元素)点击 按钮后会出现更多菜单 以项目/根部包/当前包/类为根节点,显示各个元素的测试覆盖率以字节码指令/语句块/行/方法/类为单位,显示元素的测试覆盖率隐藏/过滤未使用的类,默认未选中33Mantis使用培训
  • 34. 显示更多菜单点击 按钮后会出现更多菜单 34Mantis使用培训
  • 35. EclEmma的配置界面在测试覆盖率工具栏中点击“Coverage…”进入 35Mantis使用培训
  • 36. 设置代码注入方式36Mantis使用培训
  • 37. 两种注入方式对比Outside Instrumentation:修改class文件的备份文件(这个备份文件保存在一个与项目文件不同的临时目录中),默认方式。 In-place instrumentation:直接修改项目中的class文件。一般不推荐使用这个功能。37Mantis使用培训
  • 38. 设置JUnit版本38Mantis使用培训
  • 39. 问题讨论39Mantis使用培训
  • 40. 谢谢!40Mantis使用培训