当前位置: 首页 > news >正文

软件质量保证——单元测试之白盒技术

笔记内容及图片整理自XJTUSE “软件质量保证” 课程ppt,仅供学习交流使用,谢谢。

程序图

程序图定义

程序图P=(V,E),V是节点的集合(节点是程序中的语句或语句片段),E是有向边的集合(有向边是程序语句或语句片段之间的有向控制流)。若程序图P存在两个节点i和j,存在一条从i到j的有向边,这说明语句片段j能在i后立即被执行。

在实际案例中程序图仅仅包含实际执行的语句。

程序图案例

三角形问题程序源码:

三角形问题程序路径图:

DD路径

DD路径定义

DD路径,全称Decision to Decision Paths,是从决策到决策的语句序列路径(决策语句指一个节点的入度或出度大于等于2),DD路径中的语句序列内部没有分支。起始节点和终止节点不同的路径是链,链中每个节点的入度和出度都是1。DD路径图是一种压缩格式的程序图。

DD路径是程序图中的一条链,分为五种情况:

1)源节点——由一个入度为0的节点组成

2)汇节点——由一个出度为0的节点组成

3)判定语句/判定结束语句——由一个入度或出度>=2的节点组成

4)短分支——由一个入度和出度都是1的节点组成

5)串行语句序列——由长度>=1的最大链组成

DD路径案例

三角形问题DD路径:

三角形问题DD路径图(左边程序图压缩为右边DD路径图):

测试覆盖指标

黑盒测试技术常常缺乏合适的度量标准,因而采用提供相应测试覆盖指标的结构性测试进行辅助,覆盖率是用于度量测试完整性的一种手段。

覆盖率 = 被执行的测试项数量 / 总项数 * 100%

程序图的覆盖指标

采用给定的测试用例集作用于被测软件时,分析其程序图:

节点覆盖——要求程序图中的所有节点都被遍历到。

边覆盖——要求程序图中的所有边都被遍历到。

路径覆盖——要求程序图中的所有从源节点到汇节点的路径都被遍历到。

逻辑覆盖指标

逻辑覆盖主要针对程序内部的逻辑结构进行测试用例设计,包含以下6种指标:

1)语句覆盖——程序中的每条可执行语句都至少被执行一次,与节点覆盖等同

2)判定覆盖——程序中的每个判定的取真分支和取假分支都至少被执行一次

3)条件覆盖——程序中的每个判定的每个条件的各种取值都至少被执行一次

4)判定-条件覆盖——结合了判定覆盖和条件覆盖

5)条件组合覆盖——程序中的每个判定的所有条件的各种取值组合都至少被执行一次

6)路径覆盖——程序中的每个路径都至少被执行一次

Miller覆盖指标

Miller覆盖指标主要是基于程序DD路径的指标,并通过实践表明当一组测试用例满足DD路径覆盖指标时,可以发现程序中大约85%的缺陷。

循环覆盖指标

简单循环:存在while-do和do-until两种形式,采用改进的边界值分析设计测试用例。

嵌套循环:一个循环体内包含其他循环,采用由内向外逐层测试的思想设计测试用例。

串接循环:程序中两个及以上的连续循环,根据循环间是否独立采用简单循环/嵌套循环的测试策略设计测试用例。

复杂循环:循环体内存在入度/出度大于1的节点,甚至两个及以上循环相互嵌套,是一种实际程序设计中需要避免的情况。

相关文章:

软件质量保证——单元测试之白盒技术

笔记内容及图片整理自XJTUSE “软件质量保证” 课程ppt,仅供学习交流使用,谢谢。 程序图 程序图定义 程序图P(V,E),V是节点的集合(节点是程序中的语句或语句片段),E是有向边的集合…...

Vue0-生命周期-03

生命周期 生命周期指定就是一个对象从创建到销毁的整个过程。 Vue也是有的 完整的Vue周期包含8个阶段。 Vue官方生命周期流程图&#xff1a; 那这有什么用呢&#xff1f;我们可以在指定阶段做特殊的事件。 这些方法伴随生命周期的进行自动执行。 <!DOCTYPE html> <…...

Flutter:页面滚动

1、单一页面&#xff0c;没有列表没分页的&#xff0c;推荐使用&#xff1a;SingleChildScrollView() return Scaffold(backgroundColor: Color(0xffF6F6F6),body: SingleChildScrollView(child: _buildView()) );2、列表没分页&#xff0c;如购物车页&#xff0c;每个item之间…...

【CameraPoseRefinement】以BARF为例介绍三维重建中的位姿优化

文章目录 IntroductionApproachPlanar Image Alignment(2D)Neural Radiance Fields (3D)Bundle-Adjusting Neural Radiance Fields Experiment平面图像对齐的定性实验合成场景上的定量实验 Introduction 在计算机视觉三维重建中&#xff0c;求解3D场景的表示和定位给定的相机帧…...

YOLO系列论文综述(从YOLOv1到YOLOv11)【第13篇:YOLOv10——实时端到端物体检测】

YOLOv10 1 摘要2 网络结构3 YOLOv1-v10对比 YOLO系列博文&#xff1a; 【第1篇&#xff1a;概述物体检测算法发展史、YOLO应用领域、评价指标和NMS】【第2篇&#xff1a;YOLO系列论文、代码和主要优缺点汇总】【第3篇&#xff1a;YOLOv1——YOLO的开山之作】【第4篇&#xff1a…...

多数元素

多数元素 给定一个大小为 n 的数组 nums &#xff0c;返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的&#xff0c;并且给定的数组总是存在多数元素。 示例 1&#xff1a; 输入&#xff1a;nums [3,2,3] 输出&#xff…...

EasyDSS视频推拉流技术的应用与安防摄像机视频采集参数

安防摄像机的视频采集参数对于确保监控系统的有效性和图像质量至关重要。这些参数不仅影响视频的清晰度和流畅度&#xff0c;还直接影响存储和网络传输的需求。 安防摄像机图像效果的好坏&#xff0c;由DSP处理器和图像传感器sensor决定&#xff0c;如何利用好已有的硬件资源&…...

在CentOS7上更换为阿里云源

在CentOS 7上更换为阿里云YUM源可以通过以下步骤进行&#xff1a; 备份当前的YUM源配置文件 sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 下载阿里云的YUM源配置文件 sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirr…...

小程序跳转到本页面并传参

const pages getCurrentPages(); const currentPage pages[pages.length - 1]; // 当前页面路由 const route currentPage.route; // 当前页面参数 const options currentPage.options;// 构建新的 URL 参数 const newOptions {...options,// newParam: newValue }; // 你…...

Vim操作

1. Vim的模式 2.正常模式->编辑模式 在上⽅插⼊⼀⾏&#xff1a; O在下⽅插⼊⼀⾏&#xff1a; o (open)在当前光标前插⼊&#xff1a; i在⾏⾸插⼊&#xff1a; I在当前光标后插⼊&#xff1a; a在⾏尾插⼊&#xff1a; A 3.常见命令行 1、拷贝当前行 yy ,拷贝当前行向下…...

金碟云星空-企微通知

需求背景&#xff1a; 通过企业微信&#xff0c;及时发送金碟云星空消息&#xff0c;比如流程异常、审批节点、等需要关注数据和信息点 需求目的&#xff1a; 及时告警、高响应、自动化 技能要求&#xff1a; 前后端开发工具的运用与开发&#xff0c;本实例使用IDEA 企业…...

Java中的运算符“instanceof“详解

在Java中&#xff0c;instanceof运算符用于检查一个对象是否是某个特定类的实例&#xff0c;或者是否实现了某个特定接口。它返回一个布尔值&#xff08;true或false&#xff09;&#xff0c;用于在运行时进行类型检查。这在处理多态性时尤其有用&#xff0c;可以帮助我们确定对…...

SVG无功补偿装置MATLAB仿真模型

“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 模型简介 SVG&#xff08;又称ASVG 或STATCOM&#xff09;是Static Var Generator 的缩写&#xff0c;叫做静止无功发生器。也是做无功补偿的&#xff0c;比SVC 更加先进。其基本原理是将自换相桥式电路通过电抗器或…...

Java 虚拟机:承载 Java 生态的神奇魔盒

在软件开发的世界里&#xff0c;Java 虚拟机&#xff08;JVM&#xff09;就像一位智慧的管家&#xff0c;默默守护着 Java 生态系统的运行。它不仅让 Java 实现了"一次编写&#xff0c;到处运行"的梦想&#xff0c;更是成为了多种编程语言的运行平台。让我们一起走进…...

多输入多输出 | Matlab实现TCN-LSTM时间卷积神经网络结合长短期记忆神经网络多输入多输出预测

多输入多输出 | Matlab实现TCN-LSTM时间卷积神经网络结合长短期记忆神经网络多输入多输出预测 目录 多输入多输出 | Matlab实现TCN-LSTM时间卷积神经网络结合长短期记忆神经网络多输入多输出预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 多输入多输出 | Matlab实现…...

快速排序算法讲解(c基础)

一、快速排序的基本原理 快速排序是一种基于分治策略的高效排序算法。它的基本思想是&#xff1a; 选择一个基准元素&#xff08;pivot&#xff09;&#xff0c;通过一趟排序将待排序序列分割成两部分&#xff0c;其中一部分的所有元素都比基准元素小&#xff0c;另一部分的所有…...

数据结构--二叉树的创建和遍历

目录 引入 定义 性质 二叉树的创建 迭代法 注意事项&#xff1a; 递归法 注意事项&#xff1a; 二叉树的遍历 深度优先 广度优先 先序遍历&#xff08;前序遍历&#xff09; 中序遍历 后序遍历 层序遍历 查找树结构中是否存在某数值 方法一&#xff1a; 方法…...

2024143读书笔记|《遇见》——立在城市的飞尘里,我们是一列忧愁而又快乐的树

2024143读书笔记|《遇见》——立在城市的飞尘里&#xff0c;我们是一列忧愁而又快乐的树 第1章 年年岁岁岁岁年年第2章 遇见第3章 有个叫“时间”的家伙走过第4章 初雪第6章 回首风烟 《华语散文温柔的一支笔&#xff1a;张晓风作品集&#xff08;共5册&#xff09;》作者张晓风…...

计算机毕业设计Python+卷积神经网络股票预测系统 股票推荐系统 股票可视化 股票数据分析 量化交易系统 股票爬虫 股票K线图 大数据毕业设计 AI

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...

leetcode hot100【LeetCode 48.旋转图像】java实现

LeetCode 48.旋转图像 题目描述 给定一个 n x n 的二维矩阵 matrix&#xff0c;表示一个图像。请你将该图像顺时针旋转 90 度。 说明&#xff1a; 你必须在 原地 修改输入的二维矩阵。你可以假设矩阵的所有元素将会是整数。 示例 1: 输入: [[1, 2, 3],[4, 5, 6],[7, 8, …...

从零封装Cesium测量工具:我踩过的3个坑和性能优化心得(鼠标事件、坐标拾取、内存泄漏)

从零封装Cesium测量工具&#xff1a;我踩过的3个坑和性能优化心得 第一次在项目中集成Cesium测量工具时&#xff0c;我天真地以为这不过是调用几个API的简单工作。直到用户反馈地图越来越卡、测量结果偶尔出现诡异偏差时&#xff0c;我才意识到自己掉进了多少陷阱。本文将分享三…...

云原生地理空间分析引擎Meridian:基于Arrow与GeoParquet的高性能架构解析

1. 项目概述&#xff1a;一个面向未来的开源地理空间数据引擎最近在折腾一个涉及大量地理信息处理的项目&#xff0c;从海量GPS轨迹点到复杂的多边形区域分析&#xff0c;传统的数据库和工具链在处理效率和灵活性上开始捉襟见肘。就在这个当口&#xff0c;我注意到了GitHub上一…...

Gemini深度研究模式权限与数据隔离机制全披露(含GDPR/等保2.0合规对照表)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Gemini深度研究模式权限与数据隔离机制全景概览 Gemini 深度研究模式&#xff08;Deep Research Mode&#xff09;是 Google 提供的高级推理能力&#xff0c;专为复杂多步信息检索与跨源分析设计。该模…...

从相关性反馈到视觉理解:计算机视觉检索技术的演进与落地

1. 从“荒谬”到“范式转移”&#xff1a;一位计算机视觉先驱的二十年跋涉1995年&#xff0c;当互联网还处于襁褓之中&#xff0c;用技术自动搜索图片的想法听起来近乎“荒谬”。这是微软亚洲研究院副院长、首席研究员芮勇博士在回顾自己研究生涯起点时的感慨。二十多年后&…...

AsyncRun.vim 项目根目录管理:智能识别和高效利用

AsyncRun.vim 项目根目录管理&#xff1a;智能识别和高效利用 【免费下载链接】asyncrun.vim :rocket: Run Async Shell Commands in Vim 8.0 / NeoVim and Output to the Quickfix Window !! 项目地址: https://gitcode.com/gh_mirrors/as/asyncrun.vim AsyncRun.vim 是…...

不止于导航:用AI Habitat的语义分割数据,教你构建自己的室内物体识别与场景理解Pipeline

不止于导航&#xff1a;用AI Habitat的语义分割数据构建室内物体识别与场景理解Pipeline 在计算机视觉与机器人领域&#xff0c;室内场景理解一直是极具挑战性的研究方向。传统方法依赖于昂贵的传感器设备和人工标注数据&#xff0c;而仿真平台的出现为这一领域带来了革命性变…...

MarkFlowy:基于智能感知的Markdown写作流工具设计与实现

1. 项目概述&#xff1a;一个为Markdown而生的高效写作流工具 如果你和我一样&#xff0c;每天的工作都离不开Markdown——写技术文档、整理项目笔记、构思博客文章&#xff0c;那你一定体会过那种在“专注写作”和“格式调整”之间反复横跳的痛苦。刚进入心流状态&#xff0c;…...

2026届最火的十大AI辅助写作平台解析与推荐

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 在当下这个学术环境当中&#xff0c;AI辅助论文的写作已然变成了一种具备高效性的工具。借助…...

技能图谱探索器:从数据建模到交互可视化的全栈实现

1. 项目概述&#xff1a;一个技能图谱的探索工具最近在GitHub上看到一个挺有意思的项目&#xff0c;叫nitzzzu/openclaw-skills-explorer。光看名字&#xff0c;openclaw和skills-explorer这两个词就挺有画面感的。我第一反应是&#xff0c;这应该是一个用来探索、梳理或可视化…...

VRM-VRChat双向转换引擎:打破虚拟角色平台壁垒的技术解决方案

VRM-VRChat双向转换引擎&#xff1a;打破虚拟角色平台壁垒的技术解决方案 【免费下载链接】VRMConverterForVRChat 项目地址: https://gitcode.com/gh_mirrors/vr/VRMConverterForVRChat VRM格式转换、VRChat SDK3兼容、Unity编辑器扩展、虚拟角色迁移、跨平台角色转换…...