| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发测试 -> 阿里p8推荐,测试覆盖率工具—Jacoco,实用性极佳 -> 正文阅读 |
|
[开发测试]阿里p8推荐,测试覆盖率工具—Jacoco,实用性极佳 |
测试覆盖率工具 ? 测试过程中根据需求文档和设计文档编写测试用例、执行测试;为了更加全面的覆盖,我们可能还需要理解被测程序的逻辑,需要考虑到每个函数的输入与输出,逻辑分支代码的执行情况,这个时候我们的测试执行情况就以代码覆盖率来衡量。 覆盖率是衡量测试效果的一个辅助指标。 01 意义 分析未覆盖部分的代码,从而反推在前期测试设计是否充分,没有覆盖到的代码是否是测试设计的盲点,为什么没有考虑到? 需求/设计不够清晰、测试设计的理解有误、工程方法应用后的造成的策略性放弃等等,之后进行补充测试用例设计。 检测出程序中的废代码,可以逆向反推在代码设计中思维混乱点,提醒设计/开发人员理清代码逻辑关系,提升代码质量。 代码覆盖率高不能说明代码质量高,但是反过来看,代码覆盖率低,代码质量不会高到哪里去,可以作为测试自我审视的重要工具之一。 02 工具比较 市场上主流工具Emma、Cobertura、Jacoco、Clover(商用)。 ? 添加图片注释,不超过 140 字(可选) Jacoco简介 Jacoco 是一个开源的覆盖率工具,针对的语言为java。它可以嵌入到Ant 、Maven中,也提供了EclEmma Eclipse插件。Jacoco主要通过代码注入(即Java Agent)方式来实现覆盖率的功能。 很多第三方的工具提供了对 Jacoco 的集成,如:Sonar、Jenkins、IDEA,下载地址:https://www.eclemma.org/jacoco/ 01 覆盖率相关概念 Jacoco支持多种覆盖率的统计,包括: 行覆盖率(Lines):度量被测程序的每行代码是否被执行,判断标准行中是否至少有一个指令被执行。 类覆盖率(classes)):度量计算class类文件是否被执行。 分支覆盖率(Branches,C1coverage):度量if和switch语句的分支覆盖情况,计算一个方法里面的总分支数,确定执行和不执行的 分支数量。 方法覆盖率(non-abstract methods):度量被测程序的方法执行情况,是否执行取决于方法中是否有至少一个指令被执行。 指令覆盖(Instructions,C0coverage):计数单元是单个java二进制代码指令,指令覆盖率提供了代码是否被执行的信息,度量完全 独立源码格式。 圈复杂度(CyclomaticComplexity):在(线性)组合中,计算在一个方法里面所有可能路径的最小数目,缺失的复杂度同样表示测 试案例没有完全覆盖到这个模块。 02 插桩及不同插桩模式 什么是插桩 程序插桩,最早是由J.C. Huang 教授提出的,它是在保证被测程序原有逻辑完整性的基础上在程序中插入一些探针(又称为“探测仪”,本质上就是进行信息采集的代码段,可以是赋值语句或采集覆盖信息的函数调用)。 通过探针的执行并抛出程序运行的特征数据,通过对这些数据的分析,可以获得程序的控制流和数据流信息,进而得到逻辑覆盖等动态信息,从而实现测试目的的方法。 On-The-Fly和Offine比较 On-The-Fly模式是JVM通过 -javaagent参数指定jar文件启动代理程序,代理程序在ClassLoader装载一个class前判断是否修改class文件,并将探针插入class文件,探针不改变原有方法的行为,只是记录是否已经执行。 Offine模式就是在测试之前先对文件进行插桩,生成插过桩的class或jar包,测试插过桩的class和jar包,生成覆盖率信息到文件,最后统一处理,生成报告。 Offline模式适用于以下场景:
? 添加图片注释,不超过 140 字(可选) |
|
开发测试 最新文章 |
pytest系列——allure之生成测试报告(Wind |
某大厂软件测试岗一面笔试题+二面问答题面试 |
iperf 学习笔记 |
关于Python中使用selenium八大定位方法 |
【软件测试】为什么提升不了?8年测试总结再 |
软件测试复习 |
PHP笔记-Smarty模板引擎的使用 |
C++Test使用入门 |
【Java】单元测试 |
Net core 3.x 获取客户端地址 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/18 2:41:21- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |