一、精准化测试介绍

精准化测试介绍

      • 一、精准化测试是什么?
      • 二、什么是代码插桩?
      • 三、两种插桩方式
        • Offine模式:
        • On-the-fly插桩:
      • 四、jacoco覆盖率报告展示
      • 五、增量代码覆盖率监控原理
      • 六、精准测试系统架构图
      • 七、全量与增量覆盖率报告包维度对比
      • 八、全量与增量覆盖率报告代码维度对比
      • 九、实践案例
      • 十、覆盖率测试局限性
      • 十一、对精准化测试的畅想

一、精准化测试是什么?

传统的软件测试技术主要基于测试人员对业务的理解,但由于经验与真实业务数据的差距,肯定会测试不充分,所以很多情况下,测试结果无法精确保证对软件质量的定义和判断。

精准化测试技术从字面理解,就是非常准确的测试,这意味着要用量化的数字说话

精准化测试是一种可追溯的软件测试技术 。通过构建一套计算机测试辅助分析系统,对测试过程的活动进行监控,将采集到的监控数据进行分析,得到精准的量化数据,使用这些量化数据进行质量评价,利用这些分析数据可以促进测试过程的不断完善,形成度量及分析闭环。

精准化测试的核心思想就是:使用非常精确和智能的软件来解决软件测试的问题,从根本上引领软件测试从经验型方法向技术型方法的转型。质量的评估不再靠经验,而是通过精准的数据来判定。

二、什么是代码插桩?

就是在字节码中插入探针

在这里插入图片描述

三、两种插桩方式

  • Offine模式:

在测试前先对文件进行插桩,然后生成插过桩的class或iar包,测试插过桩的class和jar包后,会生成动态覆盖信息到文件,最后统一对覆盖信息进行处理,并生成报告。

  • 原理:jvm的内装载就是把class/jar包装载到jvm运行。offline就是在你装载的时候,class/jar包里已经加入了探针,直接装载就行。
  • On-the-fly插桩:

JVM中通过-javaagent参数指定特定的jar文件启动Instrumentation的代理程序,代理程序在通过ClassLoader装载一个class前判断是否转换修改class文件,将统计代码插入class,测试覆盖率分析可以在JVM执行测试代码的过程中完成。(企业一般都用这个)

六、精准测试系统架构图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

首先从gitlab拉取代码–>通过git diff命令加工成json数据–>把json数据传到AST–>拿到diff method list–把它传到jacoco里,探针转化为行号,对代码进行染色,生成代码维度报告–>

七、全量与增量覆盖率报告包维度对比

在这里插入图片描述

八、全量与增量覆盖率报告代码维度对比

在这里插入图片描述

九、实践案例

  • 接到一个提测通知
    在这里插入图片描述

  • 生成空白增量报告,这里可以看出开发只改了这个方法,红色表示没有测过
    在这里插入图片描述

  • 进行初步的流程性测试,发现无法跑通
    在这里插入图片描述

  • 我们又去进行了覆盖率测试,根据覆盖率报告分析逻辑走向
    在这里插入图片描述

  • 恢复数据后流程走通
    在这里插入图片描述

  • 再去拉一下覆盖率报告
    在这里插入图片描述

  • 主流程走通后观察项目覆盖率情况,发现其他流程还没通呢
    在这里插入图片描述

  • 没有覆盖的代码块,逐个击破
    在这里插入图片描述

  • 把发现的bug反馈给开发
    在这里插入图片描述

  • 开发修复了bug
    在这里插入图片描述

  • 精准化测试后的报告,说明逻辑已经完全覆盖
    在这里插入图片描述

  • 精准化测试后的覆盖率数据
    在这里插入图片描述

  • 使用覆盖率工具校正过的用例。有了这个工具测试无需跟开发过多的沟通就可以获取想要的信息,还是很方便的
    在这里插入图片描述

十、覆盖率测试局限性

覆盖率测试不是万能的,这只是针对代码层的,比如开发漏写了某一段逻辑,这个是检测不出来的

十一、对精准化测试的畅想

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/614646.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

芯品荟 | 酒柜屏控案例分享

产品简介 温控酒柜是一种专门设计用于存储和保护酒类的电器,它能为不同类型酒品提供最适宜的保存条件,以维持或提升酒的品质与风味。这类酒柜的主要特点是具备精准的温度控制功能,确保内部温度稳定在一个理想的范围内,通常为葡萄…

【DRAM存储器三十】DDR4介绍-DDR4 SDRAM的主要技术特性之bank group,为什么要搞个group出来?

👉个人主页:highman110 👉作者简介:一名硬件工程师,持续学习,不断记录,保持思考,输出干货内容 参考资料:《镁光DDR4数据手册》 、《JESD79-4B》 DDR4新增了bank group,大家想一想,为什么要增加这么个设定?其目的是什么? 如上是网上看到的一张从SDR到…

14:HAL---CRC校验

103系列只有一个CRC 前言: CRC(Cyclic Redundancy Check),即循环冗余校验,是一种根据网络数据包或电脑文件等数据产生简短固定位数校核码的快速算法,主要用来检测或校核数据传输或者保存后可能出现的错误。…

数据库被攻击后出现1044 - access denied for user ‘root‘@‘% ‘ to database table

MySQL数据库被攻击后,数据库全部被删除,并且加一个一个勒索的数据,向我索要btc, 出现这个问题就是我的数据库密码太简单了,弱密码,被破解了,并且把我权限也给修改了 导致我操作数据库时&#…

HackMyVM-VivifyTech

目录 信息收集 arp nmap nikto whatweb WEB web信息收集 wpscan feroxbuster hydra 提权 系统信息收集 横向渗透 git提权 get root 信息收集 arp ┌──(root㉿0x00)-[~/HackMyVM] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 08:00:27:9d:6d:7b, …

PC端与bluetooth蓝牙虚拟串口通信

应该采用RFCOMM虚拟串口方式来进行通信,原理跟socket通信类似,不同的是使用的通信协议不同,本人结合相关的API,做了以下最简单的封装。 1、获取本地蓝牙设备与附近蓝牙设备信息 2、通信类 /* 通信类:只是对于客户端通…

OpenCV的视频 I/O 的标志(77)

返回:OpenCV系列文章目录(持续更新中......) 上一篇:OpenCV 下一篇 :OpenCV系列文章目录(持续更新中......) ​ 枚举 枚举 cv::VideoCaptureAPIs { cv::CAP_ANY 0, cv::CAP_VFW 200, cv::CAP_V4L 200, cv::CAP_V4L2 …

增加表空间的数据文件

Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 表空间创建完成后,后期还可以为表空间增加数据文件,以扩大数据的存储空间。增加表空间数据文件的基本语法结构如下所示。 ALTER TABLESPACE 表空间名…

反着用scaling law验证数据:群聊场景指代消歧

本文作者:白牛 我们之前开源了 LLM 群聊助手茴香豆(以下简称豆哥),它的特点是: 设计了一套拒答 pipeline,实用于群聊场景。能够有效抵抗各种文本攻击、过滤无关话题,累计面对 openmmlab 数千用…

031.下一个排列Java实现

题意 整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。 例如,arr [1,2,3] ,以下这些都可以视作 arr 的排列:[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。 整数数组的 下一个排列 是指其整数的下一个字典序更大的排列。更正式地&#…

Codeforces Round 944 (Div. 4) A - G

div.4只写部分题解了&#xff0c;都比较基础&#xff0c;数学偏多一点&#xff0c;几乎没有算法&#xff0c;有不懂的欢迎评论区提问&#xff01; A. My First Sorting Problem #include<bits/stdc.h> using namespace std ; typedef long long ll ; const int maxn 2…

return语句

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 return语句 一、return语句后面跟表达式二、return无返回三、return返回的值和函数返回类型不一致四、return语句执行后,后方仍然存在代码五、存在分支语句&#xff0c;需考虑…

ue引擎游戏开发笔记(37)——实现敌人接收攻击伤害,并作出反应

1.需求分析&#xff1a; 现在已经显示造成实际伤害&#xff0c;但敌人对实际伤害并未产生反馈&#xff0c;例如还击&#xff0c;或者死亡倒地等等&#xff0c;实现敌人对于受击的反馈。 2.操作实现&#xff1a; 1.思路&#xff1a;在动画蓝图中添加死亡动画&#xff0c;并通过…

vue阶段案例,练习filter、map、forEach,双向绑定,三元表达式,以及图片滚动,文字跳动等等。

阶段案例 通过案例来练习双向绑定&#xff0c;三元表达式&#xff0c;以及图片滚动&#xff0c;文字跳动等等。 代码如下&#xff1a; <template><table class"bjtp" ><div class"title" >{{title}}</div><div class"s…

人生是旷野,不是轨道

最近看到一句话&#xff0c;很喜欢&#xff0c;分享一下。"人生是旷野&#xff0c;不是轨道"。人生不是固定的方程式&#xff0c;也没有唯一答案&#xff0c;没有谁生来就应该是什么样。别太被太多世俗观念束缚住手脚&#xff0c;每个人都有权利自由生长&#xff0c;…

二叉树进阶 --- 中

目录 1. find 的递归实现 2. insert 的递归实现 3. erase 的递归实现 3.1. 被删除的节点右孩子为空 3.2. 被删除的节点左孩子为空 3.3. 被删除的节点左右孩子都不为空 4. 析构函数的实现 5. copy constructor的实现 6. 赋值运算符重载 7. 搜索二叉树的完整实现 1. fi…

IM 是什么?

在当今数字化的时代&#xff0c;即时通讯&#xff08;IM&#xff09;已经渗透到人们的日常生活和企业的工作环境中。IM技术的快速i发展为人们提供了一种高效、便捷的沟通方式&#xff0c;不仅推动了社会的信息化进程&#xff0c;也提升了企业的协同效率和竞争力。 作为企业级I…

程序环境和预处理、编译链接过程、编译的几个阶段、运行环境、预定义符号等的介绍

文章目录 前言一、程序的翻译环境和执行环境二、编译链接过程三、编译的几个阶段四、运行环境五、预定义符号总结 前言 程序环境和预处理、编译链接过程、编译的几个阶段、运行环境、预定义符号的介绍。 一、程序的翻译环境和执行环境 在 ANSI C 的任何一种实现中&#xff0c…

建模电梯的状态图和学生选课ER图

第一题 尝试建模电梯的状态图&#xff08;选做&#xff09; 第二题 学校规定&#xff1a; 一个学生可选修多门课&#xff0c;一门课有若于学生选修。 一个教师可讲授多门课&#xff0c;一门课只有一个教师讲授。 一个学生选修一门课&#xff0c;仅有一个成绩。 学生的属性有学号…

【力扣】63.不同路径 II

原题链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 目录 1.题目描述 2.思路分析 3.代码实现 1.题目描述 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试…