怎么做好白盒测试?
白盒测试
- 一、什么是白盒测试?
- 二、白盒测试特点
- 三、白盒测试的设计方法
- 1、逻辑覆盖法
- 1、测试设计方法—语句覆盖
- a、用例设计如下:
- b、语句覆盖的局限性
- 2、测试设计方法—判定覆盖
- a、测试用例如下:
- b、判定覆盖的局限性
- 3、测试设计方法—条件覆盖
- a、测试用例如下:
- b、条件覆盖的局限性
- 4、测试设计方法—判定条件覆盖
- a、测试用例如下:
- b、判定条件覆盖的局限性
- 5、测试设计方法—条件组合覆盖
- a、测试用例如下:
- b、条件组合覆盖的局限性
- 6、路径覆盖
- a、用例设计
- b、路径覆盖局限性
- 2、基本路径测试法
- a、测试设计方法——基本路径测试法
- 四、总结
一、什么是白盒测试?
白盒测试,又称结构测试或逻辑驱动测试,是一种软件测试方法,它基于对程序内部结构的理解来进行。在这个测试过程中,测试人员就像是有源代码的“盒子”里的操作员一样,关注的是代码的各个组件、算法、数据结构以及控制流程。测试者会检查每一个逻辑路径、循环条件、分支判断等,验证输入是否按预期处理并得出正确的输出结果。白盒测试通常用于单元测试,能提供更深入的覆盖度,但无法揭示用户界面或外部接口的问题。
二、白盒测试特点
优点:
- 代码覆盖率高。
缺点:
- 覆盖所有代码路径难度大。
- 业务功能测试覆盖不全。
- 测试开销大。
黑盒测试:每个项目都需要测试
白盒测试:业务逻辑很复杂的模块进行白盒测试,保证路径尽可能的覆盖全面。
三、白盒测试的设计方法
静态
- 桌面检查:研发交叉检查
- 代码审查:组织会议,由研发讲解自己的代码内容,为什么这么写。(开发、测试人员参加)。
- 代码走查:可以理解为showcases(功能实现)。
- 代码扫描工具:不能完全替代上面的方法,只能检查代码规范问题。SonarQube
动态
- 逻辑覆盖法
- 语句覆盖
- 判定覆盖
- 条件覆盖
- 判定条件覆盖
- 条件组合覆盖
- 路径覆盖
- 基本路径测试法
1、逻辑覆盖法
是通过对程序逻辑结构的遍历实现程序的覆盖。
对逻辑代码转化为代码执行流程图
代码案例:
1、测试设计方法—语句覆盖
设计测试用例,使得程序中每条语句至少被执行一次。
a、用例设计如下:
b、语句覆盖的局限性
在六种逻辑覆盖标准中,语句覆盖标准最弱。
2、测试设计方法—判定覆盖
判定覆盖:也叫分支覆盖,设计测试用例,使得程序中的每个判断的“真”和“假”都至少被执行一次。即:程序中的每个分支至少执行一次。
a、测试用例如下:
b、判定覆盖的局限性
只要满足了判定覆盖标准就一定满足语句覆盖的标准
3、测试设计方法—条件覆盖
设计测试用例,使得判定中的每个条件至少有一次取真值,有一次取假值。
a、测试用例如下:
b、条件覆盖的局限性
条件覆盖并不能保证判定覆盖
4、测试设计方法—判定条件覆盖
设计测试用例,
1、使得被测程序中的每个判断本身的判定结果(真假)至少满足一次,同时;
2、每个逻辑条件的可能值(真假)也至少被满足一次。
即同时满足100%判定覆盖和100%条件覆盖的标准。
a、测试用例如下:
b、判定条件覆盖的局限性
满足判定-条件覆盖标准一定能够满足条件覆盖、判定覆盖和语句覆盖。
5、测试设计方法—条件组合覆盖
设计测试用例,使得被测试程序中的每个判定中条件结果的所有可能组合至少执行一次。
a、测试用例如下:
b、条件组合覆盖的局限性
条件组合覆盖能满足判定覆盖、条件覆盖、判定条件覆盖、也就包括了语句覆盖。
条件组合覆盖不能保证覆盖所有的路径
6、路径覆盖
设计测试用例,覆盖程序中所有可能的路径(从头到尾)
a、用例设计
根据路径设计测试用例,从头到尾只要有1小段路径不同,则为不同的路径。
b、路径覆盖局限性
2、基本路径测试法
在程序控制流图的基础上,通过分析程序的环路复杂性,导出基本可执行路径集合,从而设计测试用例。
a、测试设计方法——基本路径测试法
四、总结
主要应用于单元测试阶段
先静态、后动态
设计用例一般使用基本路径测试,重点模块使用多种覆盖率标准
相关文章:

怎么做好白盒测试?
白盒测试 一、什么是白盒测试?二、白盒测试特点三、白盒测试的设计方法1、逻辑覆盖法1、测试设计方法—语句覆盖a、用例设计如下:b、语句覆盖的局限性 2、测试设计方法—判定覆盖a、测试用例如下:b、判定覆盖的局限性 3、测试设计方法—条件覆…...

【神经网络基础】
神经网络基础 1.损失函数1.损失函数的概念2.分类任务损失函数-多分类损失:3.分类任务损失函数-二分类损失:4.回归任务损失函数计算-MAE损失5.回归任务损失函数-MSE损失6.回归任务损失函数-Smooth L1损失 2.网络优化方法1.梯度下降算法2.反向传播算法(BP算法)3.梯度下降优化方法…...

实战 | C#中使用YoloV8和OpenCvSharp实现目标检测 (步骤 + 源码)
导 读 本文主要介绍在C#中使用YoloV8实现目标检测,并给详细步骤和代码。 详细步骤 【1】环境和依赖项。 需先安装VS2022最新版,.NetFramework8.0,然后新建项目,nuget安装 YoloSharp,YoloSharp介绍: https://github.com/dme-compunet/YoloSharp 最新版6.0.1,本文…...
debian 如何进入root
debian root默认密码, 在Debian系统中,安装完成后,默认情况下root账户是没有密码的。 你可以通过以下步骤来设置或更改root密码: 1.打开终端。 2.输入 sudo passwd root 命令。 3.当提示输入新的root密码时,输入你想要的密码…...

短视频矩阵系统:智能批量剪辑、账号管理新纪元!
在当今快节奏的数字化时代,短视频已经成为人们获取信息和娱乐的主要途径。 然而,对于创作者和企业来说,如何高效地管理多个短视频账号并保持内容的质量和一致性,成为了一个令人头疼的问题。 短视频矩阵系统就是为了解决这一难题…...

【SpringMVC - 1】基本介绍+快速入门+图文解析SpringMVC执行流程
目录 1.Spring MVC的基本介绍 2.大致分析SpringMVC工作流程 3.SpringMVC的快速入门 首先大家先自行配置一个Tomcat 文件的配置 配置 WEB-INF/web.xml 创建web/login.jsp 创建com.ygd.web.UserServlet控制类 创建src下的applicationContext.xml文件 重点的注意事项和说明…...

vitepress博客模板搭建
vitepress博客搭建 个人博客技术栈更新,快速搭建一个vitepress自定义博客 建议去博客查看文章,观感更佳。原文地址 模板仓库: vitepress-blog-template 前言 服务器过期快一年了,博客也快一年没更新了,最近重新搭…...

Git入门图文教程 -- 深入浅出 ( 保姆级 )
01、认识一下Git!—简介 Git是当前最先进、最主流的分布式版本控制系统,免费、开源!核心能力就是版本控制。再具体一点,就是面向代码文件的版本控制,代码的任何修改历史都会被记录管理起来,意味着可以恢复…...

Linux编辑器 - vim
目录 一、vim 的基本概念 1. 正常/普通/命令模式(Normal mode) 2. 插入模式(Insert mode) 3. 末行模式(last line mode) 二、vim 的基本操作 三、vim 正常模式命令集 1. 插入模式 2. 移动光标 3. 删除文字 4. 复制 5. 替换 6. 撤销上一次操作 7. 更改 8. 调至指定…...

Spring Security使用基本认证(Basic Auth)保护REST API
基本认证概述 基本认证(Basic Auth)是保护REST API最简单的方式之一。它通过在HTTP请求头中携带Base64编码过的用户名和密码来进行身份验证。由于基本认证不使用cookie,因此没有会话或用户登出的概念,这意味着每次请求都必须包含…...

MySQL —— explain 查看执行计划与 MySQL 优化
文章目录 explain 查看执行计划explain 的作用——查看执行计划explain 查看执行计划返回信息详解表的读取顺序(id)查询类型(select_type)数据库表名(table)联接类型(type)可用的索引…...

出海第一步:搞定业务系统的多区域部署
出海的企业越来越多,他们不约而同开始在全球范围内部署应用程序。这样做的原因有很多,例如降低延迟,改善用户体验;满足一些国家或地区的数据隐私法规与合规要求;通过在全球范围内部署应用程序来提高容灾能力和可用性&a…...

二手手机回收小程序,一键便捷高效回收
随着科技的不断升级,智能手机也在快速进行更新换代,出现了大量的闲置手机,这为二手手机市场提供了巨大的发展空间! 经过手机回收市场的快速发展,二手手机回收已经成为了消费者的新选择,既能够减少手机的浪…...
开源模型应用落地-Qwen2.5-7B-Instruct与vllm实现离线推理-性能分析(四)
一、前言 离线推理能够在模型训练完成后,特别是在处理大规模数据时,利用预先准备好的输入数据进行批量推理,从而显著提高计算效率和响应速度。通过离线推理,可以在不依赖实时计算的情况下,快速生成预测结果,从而优化决策流程和提升用户体验。此外,离线推理还可以降低云计…...

深入解析小程序组件:view 和 scroll-view 的基本用法
深入解析小程序组件:view 和 scroll-view 的基本用法 引言 在微信小程序的开发中,组件是构建用户界面的基本单元。两个常用的组件是 view 和 scroll-view。这两个组件不仅功能强大,而且使用灵活,是开发者实现复杂布局和交互的基础。本文将深入探讨这两个组件的基本用法,…...

【汇编语言】转移指令的原理(三) —— 汇编跳转指南:jcxz、loop与位移的深度解读
文章目录 前言1. jcxz 指令1.1 什么是jcxz指令1.2 如何操作 2. loop 指令2.1 什么是loop指令2.2 如何操作 3. 根据位移进行转移的意义3.1 为什么?3.2 举例说明 4. 编译器对转移位移超界的检测结语 前言 📌 汇编语言是很多相关课程(如数据结构…...

opencv-python 分离边缘粘连的物体(距离变换)
import cv2 import numpy as np# 读取图像,这里添加了判断图像是否读取成功的逻辑 img cv2.imread("./640.png") # 灰度图 gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 高斯模糊 gray cv2.GaussianBlur(gray, (5, 5), 0) # 二值化 ret, binary cv2…...
机器学习杂笔记1:类型-数据集-效果评估-sklearn-机器学习算法分类
文章目录 1.类型2.数据集3.效果评估4.sklearn5.sklearn机器学习算法七种数据分析方法1.对比分析2.细分分析3.A/B测试 (单一变量分析)4.漏斗分析5.留存分析6.相关分析7.聚类分析 1.类型 【1】监督学习:从成对的已经标记好的输入和输出经验数据…...

Django+Nginx+uwsgi网站使用Channels+redis+daphne实现简单的多人在线聊天及消息存储功能
网站部署在华为云服务器上,Debian系统,使用DjangoNginxuwsgi搭建。最终效果如下图所示。 一、响应逻辑顺序 1. 聊天页面请求 客户端请求/chat/(输入聊天室房间号界面)和/chat/room_name(某个聊天室页面)链…...

数据结构在二叉树Oj中利用子问题思路来解决问题
二叉树Oj题 获取二叉树的节点数获取二叉树的终端节点个数获取k层节点的个数获取二叉树的高度检测为value的元素是否存在判断两颗树是否相同判断是否是另一棵的子树反转二叉树判断一颗二叉树是否是平衡二叉树时间复杂度O(n*n)复杂度O(N) 二叉树的遍历判断是否是对称的二叉树二叉…...

利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...

XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...

初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...

R 语言科研绘图第 55 期 --- 网络图-聚类
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...
提升移动端网页调试效率:WebDebugX 与常见工具组合实践
在日常移动端开发中,网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时,开发者迫切需要一套高效、可靠且跨平台的调试方案。过去,我们或多或少使用过 Chrome DevTools、Remote Debug…...