白盒测试入门概念

news2024/12/29 13:20:59

白盒测试的度量

  • 根据待测产品的内部实现细节来设计测试用例
  • 白盒测试的执行手段是可以涵盖单元测试、集成测试
  • 使用代码覆盖率作为白盒测试的主要度量指标

代码覆盖率常见概念 

  • 语句覆盖:每行代码都要覆盖至少一次
  • 判定覆盖:判定表达式的真假至少覆盖一次
  • 判定/条件覆盖:判定覆盖与条件覆盖都必须覆盖
  • 条件组合覆盖:判定表达式中的所有条件组合都需要覆盖
  • 分支覆盖:控制流中的每条边都要被覆盖一次
  • 路径覆盖:所有的路径都要尽量覆盖
  • 指令覆盖:一行代码会被编译为多条指令,尽可能的覆盖所有指令
  • 方法覆盖:每个方法至少要被覆盖一次
  • 类覆盖:每个类至少被覆盖一次

 覆盖率统计的工具

  • jacoco
  • emma
  • cobertura

插桩原理 

插桩(Instrumentation)是一种在软件开发和调试过程中经常使用的技术。它通过在代码中插入额外的代码,可以实时地监视、收集或修改程序的执行。插桩可以用于各种用途,例如性能分析、代码覆盖率测量、调试等。

  • 对jvm的字节码插桩:它是指在Java虚拟机执行Java程序之前,对Java字节码进行修改和注入。这种技术通常通过使用Java代理(Java Agents)和Java的Instrumentation API来实现。 
  • 基于block插桩:它的目标是对程序中的代码块进行监视和测量。代码块可以是方法、函数、循环、条件语句等逻辑单元。基于block插桩的原理是在代码块的入口和出口处插入额外的代码,用于收集和记录代码块的执行信息,比如执行次数、执行时间等。
  • 计算覆盖的代码块:通过代码插桩技术计算出程序执行过程中被执行的代码块。在代码覆盖率测试中,我们希望了解被测试代码的覆盖程度,即在测试中有多少代码被执行过。通过在代码块的入口处插入计数器代码,可以统计代码块被执行的次数。然后,通过分析这些计数信息,可以计算代码块的覆盖率。

总的来说,字节码插桩是一种技术,通过在代码中插入额外的代码,可以实时地监视、收集或修改程序的执行。基于block插桩是其中常见的一种技术,用于监视和测量代码块的执行。计算覆盖的代码块是指通过插桩技术计算出被执行的代码块。这些技术在性能分析、代码覆盖率测试等方面有广泛的应用。

JACOCO覆盖率报告

流程覆盖

  • 利用代码执行流代表流程
  • 流程覆盖用路径覆盖率表达
  • 对流程进行裁剪获得一个适合业务的小规模的业务子集
  • 流程覆盖率=测试经过的路径/业务子集路径

精准化测试

  • 代码调用链与黑盒测试用例的关联
  • 根据代码变更自动分析影响范围
  • 黑盒测试过程中借助代码流程覆盖数据指导探索式测试
  • 利用线上数据推导有效测试用例
  • 代码流程分析与覆盖率统计

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CSS文字阴影渐变动画效果

最近项目中需要一些简单的动画效果&#xff0c;就写了一个文字渐变的动画效果,纯CSS动画.文字加了一点阴影效果,看起来有发光哒感觉~ 效果如下图 大家可以自己拷贝代码亲自试一试 代码看下面 html <div class"son"> Particia </div>css .son {color…

SpringBoot2+Vue2实战(七)springboot集成jwt

一、集成jwt JWT依赖 <!-- JWT --><dependency><groupId>com.auth0</groupId><artifactId>java-jwt</artifactId><version>3.10.3</version></dependency> UserDto import cn.hutool.core.annotation.Alias; import …

【数据库】mysql 管理员密码丢失解决方案

本次操作环境是mysql5.7.24版本 问题&#xff1a;由于各种原因&#xff0c;数据库管理员密码丢失&#xff0c;无法登陆数据库 解决方法&#xff1a; 1、进入my.cnf文件进行修改配置 在[mysqld]下添加 skip-grant-tables 2、重启mysql服务 service mysql stop service mysql …

Fiddler如何延迟接口响应时间

需求描述&#xff1a;通过延迟接口响应时间来mock响应超时的测试场景 解决方法&#xff1a; 使用fiddler模拟接口延时请求&#xff0c;fiddler设置参数如下&#xff1a;

淘宝再夺顶级技术比赛CVPRNTIRE冠军,背后是这些提升用户体验的内容技术

不知不觉间&#xff0c;内容电商似乎已经成为人们生活中不可或缺的存在&#xff1a;在闲暇时间&#xff0c;我们已经习惯于拿出手机&#xff0c;从电商平台的直播间随手下单自己心仪的商品。 尽管优质的货品、实惠的价格、精致的场景布置、有趣的内容输出都是非常关键的影响因…

【JavaScript】文档注释详解

文章目录 什么是文档注释为什么要写文档注释不使用文档注释存在的隐患使用函数成员时的书写问题调用函数时功能使用问题 文档注释官方标签函数参数标签 param参数类型 {}参数注释对象属性属性注释使用带有对象属性注释的参数 返回值标签 returns注释 作者标签 author许可证标签…

spring cloud 之 eureka

Eureka概述 Spring Cloud封装了Netflix 公司开发的Eureka模块来实现服务治理&#xff0c;SpringCloud将它集成在其子项目spring-cloud-netflix中 在服务注册与发现中&#xff0c;有一个注册中心。当服务器启动的时候&#xff0c;会把当前自己服务器的信息比如服务地址通讯地址…

ubuntu 显卡驱动/cuda/cudnn

显卡驱动 https://www.bilibili.com/video/BV1Zc41137tU/?spm_id_from333.999.0.0&vd_sourced75fca5b05d8be06d13cfffd2f4f7ab5 使用recommended的驱动&#xff0c;open和无open的区别在于无open更适合发挥NVIDIA显卡的全部功能和性能&#xff0c;特别是GPU加速计算等任…

K8S集群安装与部署(Linux系统)

一、环境说明&#xff1a;CentOS7、三台主机&#xff08;Master&#xff1a;10.0.0.132、Node1&#xff1a;10.0.0.133、Node2&#xff1a;10.0.0.134&#xff09; 二、准备环境&#xff1a; 映射 关闭防火墙 三、etcd集群配置 安装etcd&#xff08;Master&#xff09; [ro…

[源码分析]-xxljob(1): 整体介绍

xxljob是一种分布式的调度框架&#xff0c;所谓分布式调度&#xff0c;是指调度器和执行器不在同一个进程里&#xff0c;因此必须进行远程服务调用&#xff0c;也需要考虑高可用问题。 但是由于调度器维护的数据是落库而在各个节点间共享的&#xff0c;因此不需要考虑数据的一…

必备数据可视化工具大揭秘

探索数据的美妙世界&#xff01;我们为您带来了一份精心策划的数据可视化工具分享合集。在这个数字时代&#xff0c;数据可视化是理解和传达数据的关键&#xff0c;而这些工具将帮助您以令人惊叹的方式展现数据的潜力。 分享一&#xff1a;伙伴云 伙伴云是一个提供仪表盘和可…

vscode超炫酷的编码特效详解

1.在扩展中搜索 插件&#xff1a;Power Mode 2.在设置里搜索Code Actions On Save 3.点击在settings.json中编辑 {"powermode.enabled": true, //启动// "powermode.presets": "flames", // 火花效果 // 炸裂// "powermode.presets&quo…

织梦宏,解锁元音之谜

本篇博客会讲解力扣“2586. 统计范围内的元音字符串数”的解题思路&#xff0c;这是题目链接。 本题可以使用一个宏来判断一个字符是不是元音字母&#xff0c;接着遍历字符串数组&#xff0c;统计满足条件的字符串个数。 需要满足的条件有&#xff1a; 第一个字符是元音字母。…

微信小程序 滚动到底部加载新的数据 之后滚动到顶部

1.配置到底部监听 在app.json的window里面加入 里面的300表示距离底部300rpx触发onReachBottom事件 默认50rpx "window": {"onReachBottomDistance": 300}, 2.在数据列表的js页面 /*** 页面上拉触底事件的处理函数*/onReachBottom() {console.log("…

采用 CD4011 的温度监测自动控制电路

该电路结构简单&#xff0c;制作容易&#xff0c;由一只与非门和一只热敏电阻组成测控电路和警笛声发声电路&#xff0c;由一只继电器作为执行电路。 一、电路工作原理 电路原理如图 8 所示。 测温电阻RT接在控制门D1的输入端&#xff0c;它和电阻R1、R2及RP通过RP的分压调节…

Cesium入门之十一:认识Cesium中的Entity

目录 Entity类简介Entity在Cesium中的作用Entity的常用属性使用Entity创建点、线、面常用的Entity图形对象及其属性创建点、线、面的方法创建点创建线创建面将点、线、面添加到viewer中 修改Entity的外观和样式点&#xff08;Point&#xff09;的外观样式线&#xff08;Polylin…

蓝奥声核心技术——无线协同代理技术

1.技术背景 无线协同代理技术指基于对目标场景状态变化的协同感知而获得触发响应并进行智能决策&#xff0c;属于蓝奥声核心技术--边缘协同感知(EICS&#xff09;技术的关键支撑性技术之一。该项技术涉及物联网边缘域的无线通信技术领域&#xff0c;具体主要涉及网络服务节点与…

mysql编写sql脚本:要求表没有主键,但是想查询没有相同值的时候才进行插入

文章目录 背景说明 背景说明 我这里主要针对2处地方要进行增量执行sql&#xff1a; 1.新功能需要创建一张新表结构indicator_alarm_threshold2.给菜单表和另一个表新增数据 我们现在使用的是项目启动先初始化加载init-table.sql的脚本(这里面的轻易不动了&#xff0c;保持原…

浏览器测试的三大挑战及解决方案

目录 跨浏览器测试&#xff0c;为什么重要 跨浏览器测试挑战及其解决方案 自动化挑战大 解决方案&#xff1a;正确选择工具 设施维护负担大 解决方案&#xff1a;选择可靠的云服务 浏览器适配列表太多 解决方案&#xff1a;选择多版本支持的平台 总结&#xff1a; 随着…

关于Nuxt3.6兼容低版本游览器的实战以及可能存在的问题

当我们网站打包上线后&#xff0c;有些问题我们肯定也要考虑在内&#xff0c;兼容性也是其中一个重要的一种&#xff0c;可能会有人说&#xff0c;都2023年了&#xff0c;还在乎那些废弃的游览器干啥&#xff0c;我只能说&#xff0c;错&#xff01;大错特错&#xff01; 我们不…