白盒测试的逻辑覆盖辨析(语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖)

白盒测试逻辑覆盖(语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖)

逻辑覆盖测试:

  • 语句覆盖:每条语句至少执行一次
  • 判定覆盖:每一判定的每个分支至少执行一次
  • 条件覆盖:每一判定中的每个条件,分别按真、假至少各执行一次
  • 判定/条件覆盖:同时满足判定覆盖和条件覆盖的要求
  • 条件组合覆盖:求出判定中所有条件的各种可能组合值,每一可能的条件组合至少执行一次

注: 上述逻辑覆盖测试的5种标准从上至下发现错误的能力由弱变强
表1 逻辑覆盖测试的5种标准
在这里插入图片描述

接下来详细介绍每一种覆盖的条件

一、语句覆盖:

在这里插入图片描述
只需要遍历路径ace,便将程序中的所有语句便都执行了一次。生成的用例及其遍历路径如下:

A=2,B=0,X=4 ace

缺点:语句覆盖是“最弱的覆盖”,它难以发现程序中的错误。①程序中存在一条x的值未发生改变的路径abd没有测试。②它无法发现判定的错误,比如第一个判定条件也许应该是“或”,而不是“与”。③无法发现条件的错误,比如第二个判断中的条件X>1,也许事实上应该是X>0。

二、判定覆盖

在这里插入图片描述

只需要涵盖路径ace和abd,或涵盖路径acd和abe,就可以使得两个判定为“真”和为“假”的分支都执行一次。如果选择后一种情况,生成的用例及其遍历的路径如下:

A=3,B=0,X=3 acd
A=2,B=1,X=1 abe

我们仅有50%的可能性遍历到X值未发生改变的路径,即,只有我们选择涵盖路径ace和abd的情况,而不是涵盖路径acd和abe时。对应的测试用例如下:

A=2,B=0,X=2 ace
A=3,B=1,X=1 abd

缺点:这两组测试用例都存在同一个问题:当判定由多个条件组合构成时,它未必能发现每个条件的错误。如果第二个判定把条件X>1错误的写成了X<1,我们设计的测试用例仍然无法找出这个错误。

三、条件覆盖

在这里插入图片描述

第一个判断的所有条件的可能取值情况是A>1或A≤1,B=0或B≠0。第二个判断的所有条件可能的取值情况为A=2或A≠2,X>1或X≤1。生成的用例及其遍历的路径如下所示:

A=1,B=0,X=3 abe
A=2,B=1,X=1 abe

缺点:条件覆盖并不一定总能覆盖全部分支。测试用例虽然满足了条件覆盖准则,但是只涵盖了程序的路径abe。但是,条件覆盖还是要比判定覆盖强一些,因为条件覆盖可能会使判断中各个条件的结果都取“真”或着取“假”,而判定覆盖却做不到这一点。

四、判定/条件覆盖

判定/条件覆盖
在这里插入图片描述

判定/条件覆盖,既要考虑到单个判定中每个条件的可能情况(A>1或A≤1,B=0或B≠0,A=2或A≠2,X>1或X≤1),也要考虑到每个判定的可能情况(路径ace和abd,或路径acd和abe)。用例及其遍历的路径如下所示:

A=2,B=0,X=4 ace
A=1,B=1,X=1 abd

缺点:条件覆盖和判定/条件覆盖不一定会发现逻辑表达式中的错误。尽管看上去所有条件的所有结果似乎都执行到了,但由于有些条件会屏蔽掉后面的条件,并不一定能全部执行得到。例如,上述测试用例①满足了条件A=2后,就不再执行对条件X>1的判断;测试用例②中不满足条件A>1后,就不再执行对条件B=0的判断。

五、条件组合覆盖

在这里插入图片描述

满足多重条件覆盖准则的测试用例,必须覆盖以下8种组合:
第一个判定的取值情况 第二个判定的取值情况

  1. A>1,B=0 5. A=2,X>1
  2. A>1,B≠0 6. A=2,X≤1
  3. A≤1,B=0 7. A≠2,X>1
  4. A≤1,B≠0 8. A≠2,X≤1

生成的测试用例,以及它们遍历的路径和覆盖的组合如下:

A=2,B=0,X=4 ace 覆盖组合15
A=2,B=1,X=1 abe 覆盖组合26
A=1,B=0,X=2 abe 覆盖组合37
A=1,B=1,X=1 abd 覆盖组合48

缺点:多重条件覆盖不一定能覆盖到每条路径,路径acd就被遗漏掉了。

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

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

相关文章

03 CSS听课笔记

CSS&#xff1a;页面美化和布局控制 1. 概念&#xff1a; Cascading Style Sheets 层叠样式表层叠&#xff1a;多个样式可以作用在同一个html的元素上&#xff0c;同时生效 2. 好处&#xff1a;(1)功能强大(2)将内容展示和样式控制分离   * 降低耦合度。解耦   * 让分工协作…

安装MySQL时出现“服务没有响应控制功能。请键入 NET HELPMSG 2186 以获得更多的帮助。”的问题解决

安装MySQL时出现“服务没有响应控制功能”的问题解决第一步&#xff1a;设置环境变量第二步&#xff1a;初始化my.ini第三步&#xff1a;添加文件第一步&#xff1a;设置环境变量 安装MySQL时&#xff0c;运行“net start mysql”时出现“服务没有响应控制功能。请键入 NET HE…

时间序列模型——ARIMA模型实现预测

ARIMA模型和因子预测 文章目录ARIMA模型和因子预测一、ARIMA模型&#xff08;整个周期&#xff09;1.数据预处理2.展示时序图2.数据建模&#xff08;1&#xff09;差分d&#xff08;2&#xff09;p和q&#xff08;3&#xff09;选择模型&#xff08;4&#xff09;检验残差序列&…

线段树 离散化

题目一&#xff1a;E. Infinite Inversions 这个题目没什么思维量&#xff0c;还比较简单&#xff0c;就是离散化要加上每一个值的后面一个值&#xff0c;然后每一个值放进去的不是1 &#xff0c;而是这个值与下一个点的差值。 因为这个数代表了一堆数&#xff0c;然后每一次的…

时序模型——如何用Python进行时序模型预测的baseline预测(简单规则)

时序模型——如何用Python进行时序模型预测的baseline预测&#xff08;简单规则&#xff09; 在对时间序列问题进行建模预测之前&#xff0c;通常可以通过一些简单的规则对结果进行提前的预测&#xff0c;可以作为baseline&#xff0c;供之后的模型进行参考。很多数据分析的比…

简单关联规则算法例题-9个顾客的编号为(T1,T2,T3,T4,T5,T6,T7,T8,T9),每一个顾客购买的商品记录{{I1,I2,I5}...},并使用python实现简单关联规则

题目&#xff1a; 简单关联规则算法例题-9个顾客的编号为&#xff08;T1,T2,T3,T4,T5,T6,T7,T8,T9&#xff09;,每一个顾客购买的商品记录{{I1,I2,I5},{I2,I4},{I2,I3},{I1,I2,I4},{I1,I3},{I2,I3},{I1,I3},{I1,I2,I3,I5},{I1,I2,I3}}&#xff0c;求频繁项集&#xff1b;并用py…

ASP.NET AJAX (Atlas) 拖放(Drag Drop)功能6种实现方法总结

在Ajax程序中实现传统桌面程序中异常简单的拖放功能却并不是件容易的事情。然而Web上的拖放功能又如此的让人痴迷&#xff0c;所以几乎每个成熟的Ajax类库都提供了自己的一套实现拖放的封装&#xff0c;ASP.NET AJAX (Atlas) 自然也不例外。本文将总结并简要分析ASP.NET AJAX (…

python实现决策树-数据集如下图所示,根据我们对决策树的理解,设计一棵决策树,并输入{Age:36,Salary:H,STU:No,Credit:OK} 测试数据,是否与预期结果一致?

题目&#xff1a;数据集如下图所示&#xff0c;根据我们对决策树的理解&#xff0c;设计一棵决策树&#xff0c;并输入{Age:36,Salary:H,STU:No,Credit:OK} 测试数据&#xff0c;是否与预期结果一致&#xff1f;注意&#xff0c;不允许直接调用Sklearn提供的决策树方法 决策树算…

047 一维数据的格式化和处理

目录 一、概述二、数据组织的维度2.1 从一个数据到一组数据2.2 维度&#xff1a;一组数据的组织形式2.3 一维数据2.4 二维数据2.5 多维数据2.6 高维数据2.7 数据的操作周期三、一维数据的表示3.1 如果数据间有序&#xff1a;使用列表类型3.2 如果数据间无序&#xff1a;使用集合…

jupyter中中文显示不正常_jupyter画图中文显示乱码问题解决办法

问题&#xff1a;为什么Jumpy中运行图片无法正常显示中文字体&#xff1f; 在使用jumpy运行可视化代码时&#xff0c;发现图片无法正常显示中文符号&#xff0c;在尝试网上诸多方法后&#xff0c;发现只需加一行代码即可解决 解决方法&#xff1a; 可以查看一下代码中是否存…

如何合理的定义用户流失——流失多少天算流失

关于流失用户&#xff0c;我们首先想到的是选择怎样的时间跨度才能准确定义玩家为一个流失用户。通常在游戏中&#xff0c;会有对流失玩家召回活动&#xff0c;假如流失玩家的流失期限定义太短&#xff0c;比如3天未登录游戏&#xff0c;即算流失&#xff1b;这样虽然能够覆盖更…

如何使jupyter notebook自动补全代码和生成不同级别的标题

在我们使用jupyter notenook去编写程序时&#xff0c;在这个交互式的笔记本上使用python语言去进行数据分析&#xff0c;十分方便。但当分析的内容有点多时&#xff0c;我们能清楚的看清该步内容处于第几级目录下&#xff0c;使分析的逻辑清晰明了。因此接下来&#xff0c;我们…

K近邻法(KNN)原理小结

K近邻法(k-nearest neighbors,KNN)是一种很基本的机器学习方法了&#xff0c;在我们平常的生活中也会不自主的应用。比如&#xff0c;我们判断一个人的人品&#xff0c;只需要观察他来往最密切的几个人的人品好坏就可以得出了。这里就运用了KNN的思想。KNN方法既可以做分类&…

python 解决print数组/矩阵无法完整输出的问题

问题描述&#xff1a; 当数组/矩阵过大则只会显示其中一部分&#xff0c;中间则会自动用省略号代替&#xff0c;而我们想要去查看数组/矩阵的具体内容时&#xff0c;则需要将省略号代替的部分展示出来&#xff1a; 解决方法&#xff1a; 直接在import numpy 加上下面一句代码即…

SpringBoot学习笔记2

九&#xff1a;创建父工程 注意&#xff1a;打包方式选择为pom 将创建SpringBoot常用的依赖和插件放在父工程的pom.xml,如下&#xff1a; 1 <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" …

Windows下更改默认的python环境

Windows下更改默认的python环境1.查找python所在的路径2.高级系统设置3.编辑path变量1.查找python所在的路径 打开电脑中的cmd&#xff0c;输入where python&#xff0c;得到电脑中所有python环境的路径 2.高级系统设置 此电脑——>属性——>高级系统设置——>环境…

理解Silverlight的路径填充规则

这个可以扩展到矢量图中路径的填充规则&#xff0c;因为所有矢量图都采用这个规则来填充封闭路径的内部&#xff0c;在这里只以Silverlight为例。 在网上找了很久关于填充规则的介绍&#xff0c;经过了几天的阅读和自己理解还有亲自尝试&#xff0c;现在终于能说出过所以然来了…

Jquery复习(七)之尺寸

jQuery 尺寸 方法 jQuery 提供多个处理尺寸的重要方法&#xff1a; width() height() innerWidth() innerHeight() outerWidth() outerHeight() jQuery 尺寸 jQuery width() 和 height() 方法 width() 方法设置或返回元素的宽度&#xff08;不包括内边距、边框或外边距&am…

更改默认安装位置到其他盘

1 同时按住Win R键&#xff0c;出现如下界面&#xff0c;在输入框中输入regedit&#xff0c;点击确定。 2 此时会进入到注册表编辑器界面&#xff0c;按如下路径选择&#xff1a;计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion 将所有默认路径&#xf…

如何启用SQL Server 2008的FILESTREAM特性

如何启用SQL Server 2008的FILESTREAM特性 今天安装SQL Server 2008的时候没有注意&#xff0c;忘记了启用FILESTREAM特性&#xff0c;因为默认情况下FILESTREAM是禁用的。安装完成后&#xff0c;再导入一个.bak的备份数据库时提示FILESTREAM feature is disabled&#xff0c;到…