Cobertura测试代码覆盖率_第1页
Cobertura测试代码覆盖率_第2页
Cobertura测试代码覆盖率_第3页
Cobertura测试代码覆盖率_第4页
Cobertura测试代码覆盖率_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Cobertura代码覆盖率测试代码覆盖率测试信息技术部雷高峰2012年11月目的 优化代码结构,减少冗余代码; 提高测试质量,提升整体软件质量; 提高测试人员测试分析能力,提高测试设计质量; 术语介绍培训内容 Cobertura简介 Cobertura测试报告 Cobertura漏测分析 Cobertura使用 代码覆盖率术语介绍测试代码对被测功能代码的覆盖程度,主要度量方式包括:语句覆盖、判定覆盖、条件覆盖、路径覆盖。 McCabe复杂度一种软件质量度量方法,它是基于对程序拓扑结构复杂度的分析。在软件工程活动中,广泛使用于几个方面:作为程序设计和管理指南;作为测试的辅助工具;作为网络复杂性

2、的一种度量方法。 Cobertura 是一种开源测试工具,它通过检测基本的代码,并观察在测试包运行时执行了哪些代码以及哪些代码没有执行,来测量测试覆盖率。除了找出未测试到的代码并发现 BUG 外,Cobertura 还可以通过标记无用的、执行不到的代码来进行代码优化,还可以提供 API 实际操作的内部信息。Cobertura简介图图 1. Flight 的包级别覆盖率统计数据的包级别覆盖率统计数据Cobertura测试报告图图 2. Com.mangocity.flight.web.convert 包中的代码覆盖率包中的代码覆盖率Cobertura测试报告图图 3. AllPriceQuery

3、Action类中的代码覆盖率类中的代码覆盖率Cobertura测试报告Cobertura漏测分析 利用以上Cobertura 测试报告,可以找出代码中未测试的部分并针对它们更新相应的测试用例。例如,图 3 显示 Flight 需要进行一些测试,运用 name() 函数对文字节点、注释节点、处理指令节点、属性节点和名称空间节点进行测试。 如果有许多未覆盖的代码,像 Cobertura 在以上报告的那样,那么添加所有缺少的测试将会非常耗时,但也是值得的。不一定要一次完成它。你可以从被测试的最少的代码开始,比如那些所有没有覆盖的包。在测试所有的包之后,就可以对每一个显示为没有覆盖的类编写一些单元测试

4、代码。对所有类进行专门测试后,还要为所有未覆盖的方法编写单元测试代码。在测试所有方法之后,就可以开始分析对未测试的语句进行测试的必要性。 Cobertura漏测分析 一般来说,开始测量后,要达到95%以上的代码覆盖率是比较困难的事情。例如,可能存在某些class文件属于公共类,并不会被永远调用。或者捕获不会发生的异常的 catch 语句等。 并不总是可以得到完美的、100% 的代码覆盖率。有时你会发现,不管对代码如何改造,仍然有一些行、方法、甚至是整个类是测试不到的。 下面是你可能会遇到的挑战的一些例子:影响代码覆盖率部分因素捕获不会发生的异常的 catch 语句。只在特定平台上执行的代码。如

5、在PC、MAC上执行的代码。非公共类中的一些方法,它们永远也不会被实际调用,只是为了满足某个接口契约而必须实现。1234一些公共jar档中的大部分公共类可能不会使用 ,以及冗余代码。平时的工作积累以及过去平时的工作积累以及过去的失败经验教训可以有效的失败经验教训可以有效的帮助提高测试用例的设的帮助提高测试用例的设计质量。计质量。通过测试方法来逐一检查通过测试方法来逐一检查我们哪些方面的测试用例我们哪些方面的测试用例没有考虑到,从而帮助我没有考虑到,从而帮助我们增加相关的测试用例。们增加相关的测试用例。对覆盖率低的模块的代码对覆盖率低的模块的代码走查将有助于你增加相关走查将有助于你增加相关的用例

6、而提高代码覆盖率的用例而提高代码覆盖率有效的测试工具能快速检有效的测试工具能快速检测代码覆盖率低的地方,测代码覆盖率低的地方,快速定位测试的薄弱环节快速定位测试的薄弱环节个人工作经验个人工作经验测试分析设计测试分析设计代码走查代码走查测试工具测试工具提高代码覆盖率的一些方法Cobertura使用 在了解了测量代码覆盖率的好处后,让我们再来讨论一下如何用 Cobertura 测量代码覆盖率的具体细节。Cobertura 被设计成为支持Command line和Ant task两种方式运行。Command line方式2Ant task方式3 1Cobertura使用Ant task方式:准备工作

7、:A、从官网下载cobertura--bin.zip的zip压缩包,官网下载地址页面如下:http:/ task方式:Ant task方式:修改perties配置文件:# The source code for the examples can be found in this directorysrc.dir=././src# The path to cobertura.jarcobertura.dir=./# Classes generated by the javac compiler are deposited in this directoryclas

8、ses.dir=classes# Instrumented classes are deposited into this directoryinstrumented.dir=instrumented# All reports go into this directoryreports.dir=reports# Unit test reports from JUnit are deposited into this directoryreports.xml.dir=$reports.dir/junit-xmlreports.html.dir=$reports.dir/junit-html# C

9、overage reports are deposited into these directoriescoverage.xml.dir=$reports.dir/cobertura-xmlcoverage.summaryxml.dir=$reports.dir/cobertura-summary-xmlcoverage.html.dir=$reports.dir/cobertura-htmlAnt task方式:修改build.xml配置文件:在 build.xml 文件中添加一个任务定义。以下这个顶级 taskdef 元素将 cobertura.jar 文件限定在当前工作目录中: Ant

10、task方式:修改build.xml配置文件:定义cobertura-instrument 任务,该任务将在已经编译好的类文件中添加日志代码。todir 属性指定将测量类放到什么地方。fileset 子元素指定测量哪些 .class 文件: Ant task方式:修改build.xml配置文件:定义Junit单元测试内容: Ant task方式:修改build.xml配置文件:定义生成报告的格式: Ant task方式:运行Ant编译任务: 在自己的 Ant 编译文件中加入了类似的任务后,就可以通过在eclipse中右键单击build.xml,选择ant build命令进行测试并生成代码覆盖率

11、测试报告。或者可以通过键入以下命令来生成一个代码覆盖率测试报告: % ant instrument% ant cover-test% ant coverage-report 当然,如果你愿意的话,还可以改变目标任务的名称,或者将这三项任务合并为一个目标任务。Ant task方式:打包部署: 被测试工程如果需要打包部署到服务器进行测试,可以通过重新编辑build.xml文件进行打包,在build.xml配置中,将binDir目录指向instrument目录即可。或者直接通过Myeclipse导出war包后,将instrument中的class文件替换到war中的class文件即可。 备注:部署到

12、服务器测试时,需要将cobertura目录下已经instrument过的cobertura.ser上传到对应的服务器上。(具体可参看commind line方式。)Command line方式2Ant task方式3 1Cobertura使用Command line方式:准备工作:A、从官网下载cobertura--bin.zip的zip压缩包,官网下载地址页面如下:http:/ line方式:插针操作: CMD命令行下进入cobertura解压目录,对编译过的class文件进行插针操作: cobertura-instrument.bat -destination D:cober

13、turainstrumented D: coberturaclassesCommand line方式:插针操作: 执行插针操作时,在执行命令的当前目录会自动生成cobertura.ser文件,该文件用于记录代码的执行情况,初始化状态的代码执行率情况全部为0%。在代码执行过程中,Cobertura的统计代码会添加代码的执行信息统计到cobertura.ser文件中。在websphere环境、tomcat环境下进行测试前,务必需要将cobertura.ser文件上传到对应的服务器上,否则执行出来的代码覆盖率全部为100%。Command line方式:Ser文件文件Instrument InfoL

14、oad Class InfoExecute Info测试过程中,代码执行的统计信息什么时候写入cobertura.ser文件?Command line方式: Cobertura only writes the coverage data file when the application server shuts down. We do not want to stop our application server after running our tests. It is possible to instruct Cobertura to write the data file. One

15、of your classes should call the static method:net.sourceforge.cobertura.coveragedata.ProjectData.saveGlobalProjectData(). For example, you could add something like this to a logout method in your web application: Command line方式:打包部署: 执行以上操作后,instrumented中的class文件就是进行插针过的工程文件,将这些class文件替换原编译的class文件打

16、包部署到tomcat或websphere容器中,然后将coubertura.ser覆盖率统计文件部署到tomcat或websphere服务上,即可开始进行测试。Command line方式:测试报告: 测试完成后,进入cobertura安装目录,根据对应测试服务器上的代码执行统计文件cobertura.ser来生成代码覆盖率测试报告: cobertura-report.bat -format html -datafile D: coberturacobertura.ser -destination D:coberturareportscobertura-html D:TestSpaceTestCoberturasrcCommand line方式:Ser文件合并: Cobertura支持将不同测试环境的cobertura.ser统计文件进行合并。如:同一版本的项目在不同的环境下(或集群环境中)进行测试后,代码覆盖率需要合并报告。合并cobertur

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论