的代码进行测试覆盖分析。 常用的衡量测试覆盖率的指标主要有语句覆盖率、 分支覆盖率、 路径 覆 盖率、条件覆盖率和方法覆盖率等。具体采用哪些指标可以根据项目的实际情况来定,以避免因过高的指标增加了代码开发人员的工作量而影响
了项目整体的 进 度。
EMMA 是一款比较流行的开源 Java 测试覆盖率分析工具,支持类、方法、代码行、基本代码块等多种类型的测试覆盖率分析,支持将覆盖率分析结 果导 出为多种格式的报告,并采用多种颜色来高亮显示不同的覆盖率状态。EclEmma 是一款基于 EMMA 的 Eclipse 插件,方便在 EclipseIDE 中进行测试覆盖率 分析。如图 9,在测试用例写好后,可以在右键点击测试类,选择 CoverageAs->JUnitTest。
图 9.运行测试覆盖分析
单元测试跑完后,Coverage 视图中会显示所选择的测试的覆盖率。双击打开某一具体的类后,可以看到高亮显示的覆盖分析结果,如图 10 所 示。红色 代表测试没有覆盖到该行,黄色表示部分覆盖,绿色的行表示该行在本次测试中被覆盖到。
图 10.查看测试覆盖分析结果
在 Coverage 视图中可以通过点击鼠标右键将测试覆盖分析的结果导出成需要的格式,例如
HTML。
图 11.导出测试覆盖分析结果
图 12 显示了导出的 report。
图 12.测试覆盖分析报告
为了保证单元测试的有效性和质量,可以规定一个测试覆盖率的下限,例如所有的包和类的覆盖率必须达到 80%以上。不过值得注意的是,不要单纯追 求 高覆盖率,要同时注意测试用例的质量,如果测试用例本身就写的有错误,那么即使测试覆盖率很高也没有意义。
步骤四:持续集成
持续集成(ContinuousIntegration)是利用一系列的工具,方法和规则,做到快速的构建开发代码,自动的测试化,来提高开发 代码的效率和质量。利用 自动构建工具,随时都能把提交的代码构建出来,提供一个可以测试使用的版本,让用户和开发人员同时看到相同的功能,尽早的发现问题 和错误,也可以尽 快的得到测试人员和用户的反馈。
要做到持续集成,就要利用一系列工具,把开发过程中的重复
工作自动化。搭建自动的构建服务器, 自动的进行单元测试和发布新版本,一个集成的服务 器可以提供构建过程的结果报告,自动通知开发人员构建结果,并且保存历史数据。 IBMRationalTeamConcert(RTC)可以提供工作任务的管理,项目计划 的安排,代码版本管理控制,自动构建可用版本,生成构建结果报 告。这些过程构成了项目的持续集成过程,其中,版本的自动构建和代码的自动单元测试是 持续集成的关键过程,RTC 在这些过程上提供了有力的支持。
自动构建
RTC 提供了 buildengine 来负责构建 build,首选,启动 buildengine,并和 RTC 服务器建立了连接。再创建项目的 build 定义 。在这个定义中,需要设 定编译哪些模块的代码,需要跳动哪个 ANT 文件来启动编译,和一些编译过程中的参数的设 定。当这些都准
备好了,编译对于项目而言,就变成一个简单的 事情。
可以看到,通过在 build 定义上,点击请求构建,就可以触发一次构建过程。选择需要的构建参数,这个过程就会在后台运行。每一个开发人员,做 了稍 许的代码改变和提交,都可以触发新的构建过程,来保证我们代码的有效性。申请一个新的构建的过程如图 13、图 14 所示。
图 13.申请一个新的构建
图 14.构建申请界面
当构建结束后。RTC 服务器会提供构建结果报告。开发人员可以
查询到这次构建的详细信息。
图 15.构建结果
整个开发过程中, 构建版本的过程应该是无数次的, 通过每次构建, 都可以得到当时代码的编译情况, 并且可以得到一个可运行的
软件版本。 在构建定义 上, RTC 支持设置构建计划。定时自动的触发一次构建。
图 16.构建定义
自动单元测试
构建可以自动了, 重点提高代码质量的单元