只懂黑盒测试也能学会的代码覆盖率及精准化测试

本文介绍了代码覆盖率的概念和重要性,以及如何利用工具如Emma、Cobertura和JaCoCo进行覆盖率统计。文中详细讲解了JaCoCo的工作原理和插桩方式,并探讨了SonarQube如何导入和分析覆盖率数据,以及通用测试数据模板的应用。
摘要由CSDN通过智能技术生成

只懂黑盒测试也能学会的代码覆盖率及精准化测试测试覆盖率是对测试完成程度的度量。它通常依据某种覆盖准则来对测试用例执行情况进行衡量,以判断测试执行得是否充分。
——出自《计算机科学技术名词 》第三版
今天文章中我们给大家介绍覆盖率统计及覆盖率分析。在10月13日20:00,资深测试开发架构师思寒将光临直播间手把手教大家如何搞定精准化测试!

温馨提示:你以为代码覆盖率与精准化测试知识与黑盒测试无缘?不,你只是没遇到思寒讲的这节课。

常见覆盖率统计工具

  • emma
  • cobertura
  • jacoco

emma 与 cobertura 是为单元测试而设计的覆盖率统计,jacoco 与 emma 同属于一家公司,但是是为了更广泛的覆盖率统计而设计的工具。

Jacoco

jacoco 的文档中有个 mission 章节,里面对 jacoco
的定位描述的很好。原文的大意是说其他的工具没有得到积极有效的维护,而且其他的工具都是为了单一任务而设计,他们不是为了 “集成”
而生。从这一点上我们就可以看出 jacoco 的设计理念。

得益于 jacoco 的设计理念,以及良好的 api
设计,它可以轻松的与已有的工具集成,甚至进行平台化。它也可以同时用于单元测试与集成测试,所以是一款非常优秀的覆盖率统计工具,很多公司的精准化测试,就是重度依赖了
jacoco。

覆盖率分析原理

要了解代码覆盖率的统计原理,我们就需要去深入了解 jvm 的机制。这方面的知识是 java
领域的高端进阶知识,限于篇幅,我们只讲解下大概的原理,完整内容请参考 VM 虚拟机系列的书籍,以及 newrelic 早年发布的若干代码插桩的资料。

简单说下原理,java 源代码会被 javac 编译为 class 文件,class 文件保存了 class 的基本信息与 jvm 的指令集。java
的底层 runtime,也就是 jvm 在解析 class 的时候,会把文件格式的 class 读取到内存并运行。android
也是借鉴了这一整套的设计理念,android 上的 runtime 其实是 dalvik 与 art。

当我们要统计代码覆盖率的时候,就需要在代码的执行路径上加入探针分析。通常是在读取类的时候,在关键的指令块的出口与入口增加标记。当指令块被执行后,就会

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值