接下来弹出一个消息窗口显示全部的 Task 文件数目,这个数目和您在第一步生成的 Task 文件相同,如图 5 所示。


  图 5. 所使用的 Task 文件的提示界面

  接下来选择所有的 Task 的文件属性,如图 6 所示。


  图 6. 选择 Task 文件的属性

  接下来要选择生成报表,选择 Code-Coverage->Hierarchy (Drill Down). 如图 7 所示。


  图 7. 生成报表菜单

  在这一步请选择 Trace 文件,然后运行所有的测试用例后生成 Trace,如图 8 所示:
  点击 Add 按钮,然后选择 Trace 文件所在的位置。


 图 8. 选择 Trace 文件界面

  选择完 Trace 文件后,点击 Create Report 按钮,这样生成代码覆盖率的报表,生成报表的时间根据 Task 文件的数目而不同,后生成的报表如图 9 所示。


  图 9. 生成的报表

  图 9 第一行显示代码覆盖率为 49.2%,显示总共有 5593 个方法需要被测试,其中您的测试用例覆盖到 2752 个方法,两者的相除的结果是代码覆盖率。接着再看红色部分显示的是没有覆盖的代码(覆盖率为 0%),绿色部分显示全部覆盖的代码 ( 覆盖率为 ),黄色部分显示的是只有部分代码被覆盖。
  同时我们可以创建测试漏洞 (Test Hole) 报表,选择 Functional-Coverage -> Holes (Drill Down),如图 10 所示。


  图 10. 选择测试漏洞菜单

  在这个窗口中,在目标路径上选择 Trace 文件,然后点击 Create Report 按钮,这样生成测试漏洞报表,这个报表显示所有的没有被测试用例覆盖的代码,报表图 11 所示。


  图 11. 生成测试漏洞报表

  如果我们需要看看那些代码没有被覆盖,直接点击 Substring 的项目去看详细内容,比如我们选择 delete 项目,点击进去看到如图 12 所示。


  图 12. 测试漏洞详细报表

  在这个图表中,比如我们看到在目录 compaswdmsuiserviceserviceImplquicklaunch 中的 UserPreferenceServiceImpl.java 源文件,检查到 deleteApplicationGroup (com.pasw.dms.userprefs.TypeApplicationBookmark) 方法没有被覆盖,这个报表非常明确地告诉测试人这个方法没有被测试到,那么我们检查测试用例,是否有对应这个方法的测试用例,接着可以补充这个测试用例以提高代码覆盖率。以此类推检查所有没有被覆盖到的方法,并分析和补充缺失的测试用例。
  总结
  我们可以免费地获得 Contest 和 FoCuS 工具,并用于项目开发。这两个工具使用方法很简单,这样减少学习工具的时间开销,使测试人员只需要把时间花销在撰写测试用例层面。Contest 是一个用于检测和报告 Java 代码覆盖率的开源工具。它不但能很好的用于小型项目,很方便得得出覆盖率报告,而且适用于大型企业级别的项目。Contest 支持两种方式的代码覆盖率分析,用户可以根据自己的需要进行选择。
  FoCuS 工具可以很方便地针对本机以及远程机器上的 Java 程序进行代码覆盖分析,分析报告可自动生成。FoCuS 可以精确地找出被覆盖以及没有被覆盖的方法,以多种报表来展示给用户,通过覆盖率数据,可以知道测试得是否充分,测试得弱点在哪些方面,进而可以指导我们设计能够增加覆盖率的测试用例。
  代码覆盖率在实际应用中常与自动测试相结合以达到好的效果。自动测试过程中的代码覆盖率分析,以小的测试代价,精确的分析,来获得当前的测试完成情况,为测试人员提高了良好的分析报告,以便测试人员改进和新增新的测试用例,大大提高了回归测试的测试效率与质量。