白盒测试(程序流程图)

2023-11-16

白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于 代码的测试。白盒测试是一种 测试用例设计方法,盒子指的是被测试的 软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。"白盒"法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。
白盒测试是一种典型的测试方法
•是一种按照程序内部逻辑结构和编码结构设计测试数据并完成测试的一种测试方法
•− 测试覆盖全部代码、分支、路径和条件
•− 它利用查看代码功能和实现方式得到的信息来确定哪些需要测试、哪些不需要、如何展开测试
•− 又称为结构测试或逻辑驱动测试
白盒测试特点主要有
•1. 可以构成测试数据使特定程序部分得到测试
•2. 有一定的充分性度量手段
•3. 可获得较多工具支持
•4. 通常只用于单元测试和集成测试(主要是单元测试)
白盒测试的基本测试内容
基本测试内容
•对程序模块的所有独立执行路径至少测试一次
•对所有的逻辑判定,取“真”与取“假”的两种情况都至少测试一次
•在循环的边界和运行的边界限内执行循环体
•测试内部数据结构的有效性
白盒测试所采用的测试方法是
•逻辑覆盖(包括语句覆盖、分支覆盖、条件覆盖、分支-条件覆盖、条件组合覆盖以及路径覆盖)
六种逻辑覆盖标准:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖发现错误的能力呈由弱至强的变化。
 语句覆盖要求:独立执行路径至少一次。每条语句至少执行一次。
·它对程序的逻辑覆盖很少,是很弱的逻辑覆盖标准
·为了更充分地测试程序,需要采用后边讲述的其他逻辑覆盖方法
·为了暴露程序中的错误,语句覆盖是最起码的测试要求,要求设计足够多的测试用例,使得每一条语句至少被执行一次
·语句覆盖的优点
• 检查所有语句
• 结构简单的代码的测试效果较好
• 容易实现自动测试
• 代码覆盖率高
• 如果是程序块覆盖,则不用考虑程序块中的源代码
语句覆盖不能检查出的错误有
• 条件语句错误、逻辑运算错误、循环语句错误
判定覆盖要求:逻辑判断至少一次。每个判定的每个分支至少执行一次。
要求设计做够多的测试用例,使得程序中的每一个分支至少通过一次
• 即每一条分支语句的“真”值和“假”值都至少执行一次
• while语句、switch语句、异常处理、跳转语句和三目运算符(a?b:c)等等同样可以使用分支覆盖来测试
• 对多分支语句,如C语言中的case语句,分支覆盖必须对每一个分支的每一种可能的结果都进行测试
判定覆盖要比语句覆盖查错能力强一些:
• 执行了分支覆盖,实际也就执行了语句覆盖
判定覆盖与语句覆盖存在同样的缺点
• 不能查出条件语句错误,不能查出逻辑运算错误,不能查出循环次数错误,不能查出循环条件错误
条件覆盖要求:每个判定的每个条件应取到各种可能的值。
不仅每一个语句至少执行一次,使得判定中的每个条件获得各种可能结果
判定覆盖只关心整个判定表达式的结果,条件覆盖关心的则是每个条件各种取值的结果
条件覆盖的利弊
•− 能够检查所有的条件错误
•− 不能实现对每个分支的检查
•− 用例数增加

判定/条件覆盖要求:同时满足判定覆盖条件覆盖。
设计足够多的测试用例,使得判定中每个条件的所有可能取值至少能够获取一次,同时每个判断的所有可能的判定结果至少执行一次
•− 用于解决条件覆盖不一定包括判定覆盖,判定覆盖也不一定包括条件覆盖的问题
分支-条件覆盖的利弊:
•− 既考虑了每一个条件,又考虑了每一个分支,发现错误能力强于分支覆盖和条件覆盖
•− 并不能全面覆盖所有路径
•− 用例数量的增加

条件组合覆盖要求:每个判定中各条件的每一种组合至少出现一次。
要求设计足够多的测试用例,使得每个判定中条件的各种组合至少出现一次
满足条件组合覆盖标准的测试用例,也一定满足判定覆盖、条件覆盖和判定/条件覆盖标准
• 条件组合覆盖是前面几种覆盖标准中最强的
• 但是,满足条件组合覆盖要求的测试用例并不一定能使程序中的每条路径都执行到
路径覆盖要求:使程序中每一条可能的路径至少执行一次。 所有出入口测试。(全覆盖)
覆盖率:逻辑与功能覆盖 = 至少一次items/总item数
程序流程图的各个符号:
程序图
定义:给定一个采用命令式程序设计语言编写的程序,其程序图是一种有向图,其中:
•传统定义:
• 节点是程序语句,边表示控制流(从节点i到节点j有一条边,当且仅当对应节点j的语句可以立即在节点i对应的语句之后执行)。
•改进后的定义:
• 节点要么是整个语句,要么是语句的一部分,边表示控制流(从节点i到节点j有一条边,当且仅当对应节点j的语句或语句的一部分,可以立即在节点i对应的语句或语句的一部分之后执行)
DD-路径
结构性测试最著名的形式以叫做决策到决策路径(DD-路径)的结构为基础。
DD-路径指语句的一种序列,从决策语句的“出路”开始,到下一个决策语句的“入路”结束,在这种序列中没有内部分支。
DD-路径定义
定义:给定采用命令式语言编写的一段程序,其DD-路径图是有向图。其中,其节点表示其程序图的DD-路径,边表示连续DD-路径之间的控制流。
实际上,DD-路径图是一种压缩图,在这种压缩图中,2-连接组件被压缩DD-路径的单个节点。
提出DD-路径的目的,在于DD-路径能够非常精确地描述测试覆盖。
将上一个判断的出口与下一个判断的入口之间的程序图节点压缩成一个节点。
环形复杂度(McCabe度量法)是一种为程序逻辑复杂性提供定量测度的软件度量,将该度量用于计算程序的基本的独立路径数目,为确保所有语句至少执行一次的测度数量的上界。
环形复杂度取决于程序控制流的复杂程度,也即是取决于程序结构的复杂程度。它是对测试难度的一种定量度量,也能对软件最终的可靠性给出某种预测。
计算方法:
1、流图G的环形复杂度V(G)=区域数
2、流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。
3、流图G的环形复杂度V(G)=P+1,其中,P是流图中判定分支点的数目。
4、 流图G的环形复杂度V(G)=m-n+p。 (m为弧、n为节点数、p为强连通分量(出度为0的节点数加1))
有向图G中,如果两个顶点vi,vj间(vi>vj)有一条从vi到vj的有向路径,同时还有一条从vj到vi的有向路径,则称两个顶点强连通。有向图的极大强连通子图,称为强连通分量(strongly connected components)。
范例: 复杂度:6 复杂度:3
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

白盒测试(程序流程图) 的相关文章

  • 软件版本比较之——Java算法实现软件版本比较

    最近遇到一个开发中的小问题 软件版本比较 例如2 12 3和2 2 1这两个版本号 哪个更新 其实 客户端版本检测更新 检测后台是否有更新版本可更新 Java中最简单的一种方法便是获取当前客户端版本号 与服务端提供的最新版本号做equals
  • “自顶向下,逐步求精”的方法

    1 什么叫做 自顶向下 逐步求精 目前软件开发方法使用最广泛的 当属结构化的方法和面向对象的方法 而其中 结构化程序设计支持 自顶向下 逐步求精 的程序设计方法 自顶向下 的具体内涵是将复杂 大的问题划分为小问题 找出问题的关键 重点所在
  • 软件测试复习(5)----基本路径测试中的细节

    在做基本路径测试的题中又有了新的发现 希望大家可以注意 另外 如果你是第一次看 可以先看一下我之前讲的基本路径方法的步骤 先看一下题目 我们不讲如何做这道题 只是讲一下我通过这道题关于知识点新的理解 题目 答案 知识点 细节 逻辑与 逻辑或
  • Django 快速搭建博客 第三节(数据库表设计)

    上一节我们已经能在pycharm下新建了blog app了 这个时候 我们需要设计一下博客的数据库设计 关于数据库表的设计 作为新手的我们并不需要要求懂太多稍微的懂一些也就可以了 毕竟数据库也是需要有一定的功底的 这里我们依据博客学习 将博
  • 如何一次性批量打印PDF、Word、Excel、PPT和图片 - 文件批量打印工具

    一次性自动批量打印PDF WORD DOC DOCX Excel工作表XLS XLSX CSV PowerPoint PPTX PPT和JPG PNG TIF BMP图像 在日常工作生活中 我们时常需要通过打印机打印文件或照片 打印机都是逐
  • PDF Redactor - 涂黑屏蔽PDF文字让敏感内容不可读的软件工具

    PDF Redactor是一款Windows平台下的PDF小工具软件 旨在涂黑屏蔽或删除PDF文件中的敏感文本和图像以保护隐私 被屏蔽的内容不仅在PDF阅读器中无法查看 而且即使使用文本搜索功能也无法再找到这部分内容 这些内容将从PDF文件
  • Dev-c++怎么设置背景色

    我们在使用Dev c 这个软件的时候 遇到夜晚等的条件下 希望使用一种暗一点的颜色 而默认的是白色的背景十分亮眼 如何进行设置呢 在教程的开始先附上设置后的效果图 显然这种背景更加适合晚上开发 话不多说 直接开始设置步骤 设置步骤 1 菜单
  • muduo 架构解析

    muduo是一个基于Reactor模式的C 网络库 它采用非阻塞I O模型 基于事件驱动和回调 我们不仅可以通过muduo来学习linux服务端多线程编程 还可以通过它来学习C 11 Reactor是网络编程的一般范式 我们这里从react
  • 软件工程——第7章实现知识点整理

    本专栏是博主个人笔记 主要目的是利用碎片化的时间来记忆软工知识点 特此声明 文章目录 1 实现由哪两个部分组成
  • (zz)I/O PAD design

    http tw myblog yahoo com Calvin Horng article mid 1272 next 1257 l f fid 5 同事設計一塊電路板 不知道為什麼一通電 主要的IC開始發燙起來 我看了一看IC的Datas
  • wallpaper Engine 安装教程

    今天在网上看到了一个软件wallpaper Engine 效果太酷炫了 就买了个来试试 效果是很棒 但是缺点是无法和桌面管理工具兼容 例如Fences 如果要二者兼得 则必须要PS辅助 运行环境 Windows7 Wallpaper Eng
  • zigbee串口打印无法显示或乱码解决方法

    zigbee串口打印问题 在终端节点向协调器发数据时 在数据流中伴有该节点的网络地址 而有时通过PC端无法打印出来 1 可能是串口软件的问题 用过好几个串口软件 有时会出现停止 或乱码行为 在经过多次换用软件 发现 SecureCRT 这个
  • 软件项目管理

    目录 前言 项目管理概述 项目与软件项目 项目管理与软件项目管理 项目管理知识体系 过程管理与软件项目管理的关系 软件项目管理过程 项目初始 项目确立 项目立项 项目招投标 项目授权 敏捷开发总结 scrum模型 迭代式增量软件开发过程 术
  • 黑盒测试与白盒测试的定义与区别

    白盒测试 是指实际运行被测程序 通过程序的源代码进行测试而不使用用户界面 这种类型的测试需要从代码句法发现内部代码在算法 溢出 路径和条件等方面的缺点或者错误 进而加以修正 黑盒测试 又称功能测试 数据驱动测试或基于规格说明的测试 是通过使
  • APP、软件版本号的命名规范与原则

    APP 软件版本号的命名规范与原则 为了在软件产品生命周期中更好的沟通和标记 我们应该对APP 软件的版本号命名的规范和原则有一定的了解 1 APP 软件的版本阶段 Alpha版 也叫 版 此版本主要是以实现软件功能为主 通常只在软件开发者
  • 如何在figma中做交互设计

    近一年来 Figma它可以说是体验设计领域最受欢迎的工具 最近 我开始频繁地工作 Axure9 0和Figma切换使用 深刻感受到设计细节带来的体验差异化 今天 通过一些细节和亮点 总结了工具软件体验设计的几个原则 添加图片注释 不超过 1
  • 抖音视频怎么制作

    1 抖音拍摄制作 抖音短视频作为一款视频拍摄 分享软件 自身也带有一些功能可以实现抖音视频制作 做出的抖音视频也很好玩 步骤 1 首先安装好抖音并打开软件 点击软件正下方的 2 可以点击 视频 自动拍摄一段视频 或者点击 上传 将已经拍摄好
  • Photoshop、Illustrator、Sketch哪个更好

    以前在交流组经常能看到大家争论哪个设计软件好 到底是你的吗 Illustrator好还是我的CorelDRAW或者他的Photoshop强大 但是跟着UI流行的设计 Sketch软件也加入了争论 让我们和你分享一下这篇文章 让我们来看看平面
  • 非常优秀的网站设计案例,设计师必备

    厚积才能薄发 一个优秀的设计师的天性一定是想要获得更多网站设计灵感 擅于为新项目寻找创意切入点 搜索设计参考资源 最新的设计趋势 今天为大家带来了一组免费可商用的网站设计案例 通过这些网站设计案例 你可以获得 寻找不同风格的网站灵感 配色
  • Python - 字典3

    修改字典项 您可以通过引用其键名来更改特定项的值 示例 将 year 更改为 2018 thisdict brand Ford model Mustang year 1964 thisdict year 2018 更新字典 update 方

随机推荐

  • Qt学习之路(48): 自定义委托

    好久没有来写文章了 由于家里面宽带断了 所以一直没能更新 今天现在写上一篇 还是继续前面的内容 前面我们分三次把自定义model说完了 其实主要还是那三个实例 在 model view 架构中 与model同等重要的就是 view 我们知道
  • 【数据结构】多叉树的深度优先遍历DFS和广度优先遍历BFS(含C++递归和非递归方式实现)

    文章目录 前言 1 深度优先遍历 1 2 先序遍历 1 2 1 C 递归实现 1 2 2 C 非递归实现 1 2 后序遍历 1 2 1 C 递归实现 1 2 2 C 非递归实现 2 广度优先遍历 2 1 C 递归实现 2 2 C 非递归实现
  • Ubuntu安装Eigen3

    从官网下载 http eigen tuxfamily org index php title Main Page 比如在cd git clone https gitlab com libeigen eigen git cd Eigen mk
  • 【Python】cryptography和pycryptodome库使用

    题目 1 使用cryptography模块 编写完整的AES CBC加解密函数 函数接口为 def encrypt CBC key plaintext iv def decrypt CBC key ciphertext iv 2 使用pyc
  • Java多线程程序:多线程模拟抢票

    public class BuyTicket extends Thread public static int tickets 20 Override public void run while sale synchronized publ
  • 【精华】经典的图像数据集介绍

    目录 1 经典的数据集介绍 1 1 ImageNet 1 2 PASCAL VOC 1 3 Labelme 1 4 COCO 1 5 SUN 1 6 Caltech 1 7 Corel5k 1 8 CIFAR Canada Institud
  • angular学习之路(一)开山篇

    1 ng app 定义angularJS的使用范围 2 ng init 变量 值 变量 值 初始化变量的值 有多个变量时 中间用分号隔开 3 ng model 变量 定义变量名 4 ng bind 变量 绑定变量名 获取该变量的数据 这里的
  • underlay和overlay? & 传统网络和数据中心网络 ?

    underlay和overlay 百度 Underlay 和 Overlay 是网络架构中两个常用的概念 用于描述不同层次或视角下的网络结构和通信方式 1 Underlay 底层网络 Underlay 是指基础网络层 即物理网络或基础网络架
  • B站马士兵python入门基础版详细笔记(5)

    前言 这是这篇文章是B站学习python入门基础班的视频的第五章内容 主要讲述的是循环结构 主要包括while语句和for in语句 一 range函数 这个函数生成的是一个整数序列 他的返回值是一个迭代器对象 所以直接print它是没有用
  • java gc 次数_JVM的分区+查看GC对象是否存活+3种GC算法+7种垃圾收集器+如何减少GC次数...

    一 JVM的分区 1 程序计数器 私有 程序计数器是一块较小的内存分区 你可以把它看做当前线程所执行的字节码的指示器 在虚拟机的概念模型里 字节码解释器工作时 就是通过改变计数器的值来选择下一条需要执行的字节码指令 程序技术器为线程私有 每
  • UNet3+详解

    目录 1 UNet3 解决的问题 1 UNet 2 UNet 2 UNet3 的创新点 3 UNet3 的结构体 1 编码层 2 解码层 a 跳跃连接 b 分类引导模块 CGM c 特征聚合机制 d 深监督 e 混合损失函数 4 UNet3
  • Supervisor使用备忘

    为什么要用Supervisor 从这里说起 服务器端要将程序以daemon运行 其目的是摆脱控制终端的信号影响 以免进程退出 Daemon化流程 int daemonize pid t pid fork if pid 0 exit 0 if
  • 更改Ansys Workbench的语言的方法

    如果没有学过日文 安装Ansys Workbench后出现如下界面 一定会感到很无助 如何把它改为英文界面呢 按下面步骤来 1 点击第三个菜单 2 再点击下拉菜单中的最后一个菜单 如下 3 在弹出对话框中 点击左边的第三项 图中红色矩形框框
  • 零基础学Java,最开始应该学什么?

    Java的知识面太广了 这里整理了一个思维导图 不是很全面 但足够硬核 先学最重要的 从浅到深 能够让你快速地学好Java 一 两个学习阶段 在介绍如何学好Java前 我们先把学习路线定一下 我把这个过程分成两个阶段 第一阶段 打好基础 先
  • MarkDown 高级操作

    目录 1 图片处理 2 插入音乐 3 插入视频 4 在页面内跳转 5 插入跳转链接 用新的窗口打开 6 设置不同的字体颜色 7 设置不同类型的字体 8 使用标准字体 9 添加背景色 10 多种矩阵形式输入 10 1 不带括号的 10 2 带
  • ue4中Pak文件中挂载的资源名称获取

    在pak文件中 会挂接很多资源 api也在变化 废话不多说 上代码 FPakPlatformFile GetPakPlatformFile FPakPlatformFile pakPlatformFile nullptr auto plat
  • 概念学习—机器学习

    概念学习 介绍 概念学习 假设的一般到特殊序 Find S 寻找极大特殊假设 变型空间和候选消除算法 表示 更简明的表示 关于变型空间和候选消除的说明 候选消除算法是否会收敛到正确的假设 归纳偏置 介绍 定义 概念学习是指从有关某个布尔函数
  • H.264的Slice及Slice类型

    一 基本概念 一个视频图像可编码成一个或更多个条带 每个条带包含整数个宏块 MB 即每个条带至少一个MB 最多时每个条带包含整个图像的宏块 总之 一幅图像中每个条带的宏块数不一定固定 设条带的目的是为了限制误码的扩散和传输 应使编码条带相互
  • 网络安全渗透测试之pingtunnel使用实验

    目录 一 实验环境准备 二 安装pingtunnel 一 在192 168 101 105 web服务器上安装pingtunnel 三 建立ICMP隧道 一 在web服务器上启动pingtunnel 二 在kali上设置转发 三 隧道渗透演
  • 白盒测试(程序流程图)

    白盒测试又称结构测试 透明盒测试 逻辑驱动测试或基于 代码的测试 白盒测试是一种 测试用例设计方法 盒子指的是被测试的 软件 白盒指的是盒子是可视的 你清楚盒子内部的东西以及里面是如何运作的 白盒 法全面了解程序内部逻辑结构 对所有逻辑路径