当前位置:网站首页>阿里p8推荐,测试覆盖率工具—Jacoco,实用性极佳
阿里p8推荐,测试覆盖率工具—Jacoco,实用性极佳
2022-07-07 06:12:00 【软件测试呀】
测试覆盖率工具
测试过程中根据需求文档和设计文档编写测试用例、执行测试;为了更加全面的覆盖,我们可能还需要理解被测程序的逻辑,需要考虑到每个函数的输入与输出,逻辑分支代码的执行情况,这个时候我们的测试执行情况就以代码覆盖率来衡量。
覆盖率是衡量测试效果的一个辅助指标。
01、意义
分析未覆盖部分的代码,从而反推在前期测试设计是否充分,没有覆盖到的代码是否是测试设计的盲点,为什么没有考虑到?
需求/设计不够清晰、测试设计的理解有误、工程方法应用后的造成的策略性放弃等等,之后进行补充测试用例设计。
检测出程序中的废代码,可以逆向反推在代码设计中思维混乱点,提醒设计/开发人员理清代码逻辑关系,提升代码质量。
代码覆盖率高不能说明代码质量高,但是反过来看,代码覆盖率低,代码质量不会高到哪里去,可以作为测试自我审视的重要工具之一。
02、工具比较
市场上主流工具Emma、Cobertura、Jacoco、Clover(商用)。
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模式适用于以下场景:
运行环境不支持java agent
部署环境不允许设置JVM参数
字节码需要被转换成其他虚拟机字节码,如Android Dalvik VM
动态修改字节码过程中和其他agent冲突
无法自定义用户加载类
房子要一层一层盖,知识要一点一点学。大家在学习过程中要好基础,多上手实操,话不多说,这里狠狠上一次干货!我熬夜整理好的各阶段(功能、接口、自动化、性能、测开)技能学习资料+实操讲解,非常适合私下里学习,比找资料自学高效多了,分享给你们。
领取关 w/x/g/z/h:软件测试小dao
敲字不易,如果此文章对你有帮助的话,点个赞收个藏来个关注,给作者一个鼓励。也方便你下次能够快速查找。
边栏推荐
- Quick sorting (detailed illustration of single way, double way, three way)
- Componentspace2022, assertions, protocols, bindings, and configuration files
- PLSQL的安装和配置
- [Chongqing Guangdong education] organic electronics (Bilingual) reference materials of Nanjing University of Posts and Telecommunications
- Basic data types and string types are converted to each other
- [Yugong series] February 2022 U3D full stack class 007 - production and setting skybox resources
- Three series of BOM elements
- Tronapi-波场接口-源码无加密-可二开--附接口文档-基于ThinkPHP5封装-作者详细指导-2022年7月6日-新手快速上手-可无缝升级tp6版本
- ncs成都新电面试经验
- 数据分析方法论与前人经验总结2【笔记干货】
猜你喜欢
![Upload an e-office V9 arbitrary file [vulnerability recurrence practice]](/img/e7/278193cbc2a2f562270f99634225bc.jpg)
Upload an e-office V9 arbitrary file [vulnerability recurrence practice]

Through the "last mile" of legal services for the masses, fangzheng Puhua labor and personnel law self-service consulting service platform has been frequently "praised"

Calling the creation engine interface of Huawei game multimedia service returns error code 1002, error message: the params is error
![[Yu Yue education] higher vocational English reference materials of Nanjing Polytechnic University](/img/e2/519a5267cd5425a83434d2da65ebe6.jpg)
[Yu Yue education] higher vocational English reference materials of Nanjing Polytechnic University

数字三角形模型 AcWing 275. 传纸条
![[Yu Yue education] basic reference materials of electrical and electronic technology of Nanjing Institute of information technology](/img/2a/01db1b84c26502c851786aaca56abe.jpg)
[Yu Yue education] basic reference materials of electrical and electronic technology of Nanjing Institute of information technology

Virtual address space

SSM integration

Greenplum6.x常用语句

Input and output of floating point data (C language)
随机推荐
调用华为游戏多媒体服务的创建引擎接口返回错误码1002,错误信息:the params is error
oracle一次性说清楚,多种分隔符的一个字段拆分多行,再多行多列多种分隔符拆多行,最终处理超亿亿。。亿级别数据量
说一个软件创业项目,有谁愿意投资的吗?
字符串操作
[Yugong series] February 2022 U3D full stack class 005 unity engine view
FPGA knowledge accumulation [6]
Implementation of navigation bar at the bottom of applet
Componentspace2022, assertions, protocols, bindings, and configuration files
[Yu Yue education] C language programming reference of Zhongbei College of Nanjing Normal University
2-3查找树
A bug using module project in idea
如何在快应用中实现滑动操作组件
Oracle makes it clear at one time that a field with multiple separators will be split into multiple rows, and then multiple rows and columns. Multiple separators will be split into multiple rows, and
【踩坑】nacos注册一直连接localhost:8848,no available server
关于基于kangle和EP面板使用CDN
ncs成都新电面试经验
[Chongqing Guangdong education] accounting reference materials of Nanjing University of Information Engineering
Opencv converts 16 bit image data to 8 bits and 8 to 16
Frequently Asked Coding Problems
Rapid integration of authentication services - harmonyos platform