if/while/for/语句/分支/路径覆盖的控制流程图+数据流分析(DU)

news2024/11/27 10:39:01

if/while/for/语句覆盖/分支覆盖/路径覆盖的控制流程图+数据流分析(DU)

语句的线性序列Linear Sequences of Statements

在这里插入图片描述
在这里插入图片描述
“If” Constructs
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

“While” Constructs
在这里插入图片描述
“For” Constructs
在这里插入图片描述

在这里插入图片描述
语句覆盖率Statement Coverage
测试套件应执行 CFG 的所有节点
也被称为:
• 线路覆盖Line Coverage
• 节点覆盖Node Coverage
• 基本块覆盖Basic Block Coverage
在这里插入图片描述
分支机构覆盖Branch Coverage
测试套件应执行 CFG 的所有真/假边缘
也被称为:
• 决策覆盖率Decision Coverage
• 谓词覆盖Predicate Coverage
• 边缘覆盖Edge Coverage
在这里插入图片描述

路径覆盖Path Coverage
测试套件应执行通过 CFG 的所有路径
在实践中通常不可能
通过 countZeros 的路径数取决于 x 的长度
某些版本的路径覆盖专注于每个循环的 0、1 或更多次执行,以减少可能无限数量的路径!
在这里插入图片描述

覆盖标准受不可行测试要求的约束Coverage Criteria are Subject To Infeasible Test Requirements
• 这也可能发生在声明覆盖范围内: 不可行的语句指向死代码
• Branch Coverage 更有可能发生这种情况: 不可行的分支指向代码中的冗余决策
• 很可能与路径覆盖:
不可行路径不一定是冗余的结果; 并非所有通过 CFG 的路径在实际代码中都是合法可行的

包含结构覆盖标准Subsumption of Structural Coverage Criteria
在这里插入图片描述

何时使用结构覆盖
• 结构覆盖级别是了解测试套件执行了多少代码的有用指标。
• 通用原理:您不会希望发布未通过至少一次测试执行至少一次的代码部分:
因此语句/行覆盖率是常用的指标
但 Branch Coverage 更强,无需更多额外努力即可获得
路径覆盖不太常见且通常难以处理

数据流分析Data Flow Analysis

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
它也是一个 Definition-Use Path
在这里插入图片描述
在数据流分析和测试中,DU 集指的是程序或系统中的变量集,这些变量被定义并随后在程序执行中使用。

在数据流分析中,目标是跟踪程序中的数据流,以确定变量是如何定义的(赋值)以及这些定义的值稍后在程序中的使用方式。 集合 DU 获了变量定义及其用途之间的这种关系。
集合 DU 可以表示为变量对 (d, u) 的集合,其中 d 表示变量的定义,u 表示它在程序中的后续使用。 每对 (d, u) 表示在程序的某个点定义了一个变量,其值在稍后的点使用。
通过分析集合 DU,数据流分析技术可以识别与变量使用相关的潜在问题或异常,例如未初始化的变量、已定义但从未使用过的变量,或未事先定义就使用的变量。
在测试环境中,DU 集也可以用来指导测试用例的设计。 测试人员可以专注于创建测试用例,这些用例会执行程序中定义和使用变量的路径,确保所有相关数据流场景都得到充分测试。

总的来说,集合 DU 通过捕获变量定义和使用之间的关系,使分析和测试技术能够识别潜在问题并指导测试用例设计,在数据流分析和测试中起着至关重要的作用。

所有用途覆盖All Uses Coverage
每个定义到达每个使用同一个变量
在这里插入图片描述

所有Def-Use 路径覆盖
DU中的每条路径都需要执行
在这里插入图片描述
一个复杂的例子:

在这里插入图片描述

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

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

相关文章

为什么客服系统必备知识库?提高客服效率的秘密武器!

对任何想要成功的企业而言,客户服务是必不可少的。依据提供的客户支持质量,可建立或破坏一个品牌的声誉。为了提供高标准的客户服务,企业必须能够获得可靠的信息,并能够为用户提供快速有效的解决方案。下面,我们就详细…

matlab学习1--基础

文章目录 基本语法保存和加载数组/矩阵矩阵运算 输出多个值绘制向量图 基本语法 和弱语言一样,变量赋值不需要声明类型直接 a 1 2命名规则 以字母开头,并且仅包含字母、数字和下划线 (_) 区分大小写清除命令行窗口 clc保存和加载 保存 保存到xxx.…

python开发构建轻量级卷积神经网络模型实现手写甲骨文识别系统

手写汉字、手写数字、手写字母识别模型都已经做过很多了,但是手写甲骨文识别这个应该都是很少有听说过的吧,今天也是看到这个数据集就想着基于这批手写甲骨文数据集开发构建识别模型,首先来看下效果图: 接下来看下对应使用的数据集…

字典的学习笔记

列表 [] 单身什么是字典 {} 二人世界 python内置的数据结构之一,与列表一样是一个可变序列(可以增删改操作的) 以键值对的方式存储数据,字典是一个无序的序列 -> hash(key) 通过哈希函数来计算存储位置,key一定是不可变的字典的创建 使用花…

读论文-MHFormer

论文:Multi-hypothesis representation learning for transformer-based 3D human pose estimation 摘要 尽管取得了重大进展,但由于深度模糊和自遮挡,从单目视频中估计3D人体姿势仍然是一项具有挑战性的任务。大多数现有的作品都试图通过利用…

驱动程序接口和HAL层区别和联系

驱动程序接口(Device Driver Interface)和硬件抽象层(Hardware Abstraction Layer,HAL)是在软件系统中用于处理硬件的两个不同层次的概念。 驱动程序接口(Device Driver Interface):…

设计模式(二、三):创建型之工厂方法和抽象工厂模式

设计模式系列文章 设计模式(一):创建型之单例模式 设计模式(二、三):创建型之工厂方法和抽象工厂模式 设计模式(四):创建型之原型模式 设计模式(五):创建型之建造者模式 设计模式(六):结构型之代理模式 目录 一、…

校园综合能效平台建设的意义

摘 要:为响应国家绿色校园建设的号召,切实提高高校能源利用水平,促进学校能源资源合理配置,服务学校高质量发展大局,根据教育部印发的《关于开展节能减排学校行动的通知》《关于勤俭节约办教育建设节约型校园的通知》…

Linux内核超级装备eBPF技术详细研究

定义一(http://ebpf.io的定义) eBPF (which is no longer an acronym for anything) is a revolutionary technology with origins in the Linux kernel that can run sandboxed programs in a privileged context such as the operating system kernel.…

物联网通信之串口服务器,RS485/RS232双串口并行、远程虚拟串口调试

随着现代工业信息技术发展,串口服务器在工业应用中越来越常见,那么什么是串口服务器呢,今天智联物联小编就与大家分享一下物联网通信中的串口服务器。 为帮助大家理解,智联物联小编从串口服务器的接口为大家开始讲解,一…

高分子PEG:mPEG-Maleimide MW:3400,甲氧基-聚乙二醇—马来酰亚胺,常用作聚合物试剂

【产品描述】 陕西新研博美生物科技有限公司供应的​mPEG-Maleimide属于高分子PEG,马来酰亚胺和巯基的偶合是蛋白和多肽偶联中的一个非常有用的反应。mPEG-MAL被用来合成具有确定结构和生物活性的PEG-蛋白质偶合物。mPEG-MAL也常用作聚合物试剂来选择性诱捕含巯基的…

易基因:小檗碱通过介导m6A mRNA甲基化调控斑马鱼肝细胞氧化应激、凋亡和自噬|科研进展

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 中药小檗碱(Berberine,BBR,化学式C20H18NO4)是从几种药用植物中分离出的一种异喹啉季生物碱,包括小檗(Berberis ar…

让你不再好奇怎样同声传译

众所周知,同声传译技术在国际交流和商务领域发挥着重要的作用,它能够帮助人们跨越语言障碍,促进人们之间的有效沟通。那么,你知道如何同声传译吗?接下来我将教你三个方法,帮助你更好的进行同声传译操作。 方…

springboot+vue餐厅点餐系统在线点餐系统(含源码+数据库)

1.系统分析 系统用例图如下所示。 从用户、餐厅等方面进行需求分析如下。 1.用户需求:系统应该提供简单易用的用户界面,用户可以浏览餐厅菜单,选择菜品,下订单。此外,应该允许用户管理个人信息和查看历史订单。 2.餐…

SQL-多表查询-事务

SQL-多表查询-事务 多表查询顾名思义就是从多张表中一次性的查询出我们想要的数据 前期表准备 DROP TABLE IF EXISTS emp; DROP TABLE IF EXISTS dept;# 创建部门表CREATE TABLE dept(did INT PRIMARY KEY AUTO_INCREMENT,dname VARCHAR(20));# 创建员工表CREATE TABLE emp (i…

一文3000字从0到1用Python做安全测试攻击实战(建议收藏)

在本文中,我们将使用Python进行一次安全测试的实战演练,目标是找出并利用应用程序的安全漏洞。请注意,这个演练仅用于教育和研究目的,切勿将这些技术用于非法活动。 注意:未经授权的攻击是违法的。确保你在拥有明确权…

准实时刷新集群中各节点本地缓存的解决方案

目录 背景 Redis发布订阅 MQ广播消息 配置中心Nacos,Zookeeper监听 注册中心获取服务节点ip端口接口调用 本地定时任务兜底 背景 我们在系统开发过程中,为了减少数据库和redis缓存的查询以提升接口性能,有时候会把一些常用的、变动不是…

[数据结构 -- C语言] 堆实现Top-K问题,原来王者荣耀的排名是这样实现的,又涨知识了

目录 1、什么是Top-K问题? 1.1 Top-K基本思路 2、Top-K问题逻辑分析 2.1 建堆,大小为K的小堆 2.2 将剩余的N - K 个元素依次与堆顶元素比较,大于就替换 2.3 打印堆 3、TopK实现代码 4、Top-K问题完整代码 结果展示: TopK…

做IT运维的,哪有人不疯的

网飞最新的剧集《怒呛人生》大受欢迎的一大原因就是:发疯。 在2023年,发疯已经从一种人身攻击,拯救语言匮乏的恶评转移成一个中性词,在某些语境下,等同于冒犯、破罐子破摔。连快乐都不敢的东亚人,为啥发疯…

C++:智能指针

目录 一. 智能指针的概念及原理 1.1 什么是智能指针 1.2 智能指针的原理 二. 智能指针的拷贝问题 三. auto_ptr 3.1 auto_ptr的拷贝构造和赋值问题 3.2 auto_ptr的模拟实现 四. unique_ptr 五. shared_ptr 5.1 shared_ptr的常用接口 5.2 shared_ptr的拷贝构造和赋值…