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

article/2025/10/7 9:32:23

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

逻辑覆盖测试:

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

注: 上述逻辑覆盖测试的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://chatgpt.dhexx.cn/article/dlq4wbmY.shtml

相关文章

白盒测试技术——语句覆盖、判定覆盖、条件覆盖

结合一个例子说&#xff1a; 画出相应的程序流程图&#xff0c;更方便分析&#xff1a; 首先我们要明确一点&#xff1a;测试用例要尽可能少。 1、语句覆盖&#xff1a;被测程序中每个语句至少执行一次 路径&#xff1a;s->a->b->c->d->e A2&#xff0c;B0&a…

语句覆盖、分支覆盖、谓词测试和路径覆盖

目录 语句覆盖分支覆盖&#xff08;判定覆盖&#xff09;谓词测试原子谓词覆盖&#xff08;条件覆盖&#xff09;分支-谓词覆盖(判定条件覆盖或分支条件覆盖)复合谓词覆盖&#xff08;条件组合覆盖&#xff09; 路径覆盖包含关系 语句覆盖 “语句覆盖”是一个比较弱的测试标准…

白盒测试 | 用例设计方法之语句覆盖

语句覆盖&#xff0c;顾名思义就是针对代码语句的嘛。它的含义是我们设计出来的测试用例要保证程序中的每一个语句至少被执行一次。通常语句覆盖被认为是“最弱的覆盖”&#xff0c;原因是它仅仅考虑对代码中的执行语句进行覆盖而没有考虑各种条件和分支&#xff0c;因此在实际…

逻辑覆盖测试(一)语句覆盖

语句覆盖&#xff1a; 设计测试用例时保证程序的每条语句至少执行一次。 简单来说&#xff0c;就是每个语句都覆盖一遍。 例子&#xff1a; 流程图如下&#xff1a; 测试用例如下&#xff1a; x4,z9&#xff0c;第一个if语句执行到了&#xff1b; x4,y7,第二个if语句为true…

设计测试用例实现语句覆盖,判定覆盖,条件覆盖,判定/条件覆盖,条件组合覆盖,路径覆盖.

第一题&#xff1a; 设计测试用例实现语句覆盖,判定覆盖,条件覆盖&#xff0c;判定/条件覆盖,条件组合覆盖,路径覆盖. 【1】语句覆盖&#xff08;设计若干个测试用例&#xff0c;使程序中的每个可执行语句至少执行一次&#xff09; &#xff08;x>3&#xff09;&&&…

语句覆盖、条件覆盖、判定覆盖、条件-判定覆盖、组合覆盖、路径覆盖

文章目录 语句覆盖判定覆盖条件覆盖条件--判定覆盖组合覆盖路径覆盖 逻辑覆盖率&#xff1a;语句覆盖<条件覆盖<判定覆盖<条件-判定覆盖<组合覆盖<路径覆盖 语句覆盖 基本思想&#xff1a;设计用例&#xff0c;使程序中的每个可执行语句至少执行一次。 每个可执…

软件测试 白盒测试用例设计方法动态 逻辑覆盖(语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖)基本路径测试法

文章目录 1 静态2 动态2.1 逻辑覆盖2.1.1 语句覆盖2.1.2 判定覆盖2.1.3 条件覆盖2.1.4 判定条件覆盖2.1.5 条件组合覆盖2.1.6 路径覆盖 2.2 基本路径测试法&#xff08;重点&#xff09; 小结 白盒设计方法分为静态和动态。 1 静态 静态的白盒测试方法有桌面检查、代码审查、代…

软件测试——语句覆盖

语句覆盖 一、定义&#xff1a; 程序中每一个语句至少能被执行一次 二、特点&#xff1a; 1、程序中每一个语句执行一次 2、对程序执行逻辑的覆盖率低&#xff0c;属于最弱的覆盖方式 3、无需测试程序的分支情况 4、无需测试程序分支判断的输入值以及输入值的组合 5、无需测试…

软件测试语句覆盖,软件测试中的语句覆盖,分支覆盖,条件覆盖以及路径覆盖...

我举一个简单的例子来解释一下语句覆盖,分支覆盖,条件覆盖以及路径覆盖的相关知识,如果有不对的地方,恳请各位同行指正: 举例说明: if A=true and B=true then Action1 if C=true or D=true then Action2 这是一个很简单的例子,也就是,当A和B都为真的情况下,执行Actio…

语句覆盖

一、定义 程序中每一个语句至少能被执行一次 二、特点 1、程序中每一个语句执行一次 2、对程序执行逻辑的覆盖率低&#xff0c;属于最弱的覆盖方式 3、无需测试程序的分支情况 4、无需测试程序分支判断的输入值以及输入值的组合 5、无需测试程序执行的不同路径 三、程序流程…

白盒测试的几种覆盖方法:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖详解

文章转自&#xff1a;https://blog.csdn.net/LOVEYSUXIN/article/details/82592588?utm_mediumdistribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_sourcedistribute.pc_relevant.none-task-blog-BlogCommendFromMachineLear…

白盒测试用例设计方法(语句覆盖、判定覆盖、条件覆盖)

六种覆盖标准发现错误的能力呈由弱到强的变化 语句覆盖&#xff1a;每条语句至少执行一次。 判定覆盖&#xff1a;每个判定的每个分支至少执行一次。 &#xff08;包含语句覆盖&#xff0c;每个判断T、F各一次&#xff09;条件覆盖&#xff1a;每个判定的每个条件应取到各种可…

语句覆盖(Statement coverage)

一、语句覆盖(Statement coverage) “语句覆盖”是一个比较弱的测试标准&#xff0c;它的含义是&#xff1a;选择足够的测试用例&#xff0c;使得程序中每个语句至少都能被执行一次。 图6.4是一个被测试的程序&#xff0c;它的源程序…

语句覆盖法

语句覆盖法 文章目录 语句覆盖法一、什么是语句覆盖二、要执行的语句代码三、设计测试用例&#xff0c;1.测试用例数据2.执行测试用例 四、 语句覆盖缺点 一、什么是语句覆盖 语句覆盖&#xff1a;就是设计若干个测试用例 &#xff0c;运行被测程序&#xff0c;使得每一可执行…

语句覆盖、条件覆盖、判定覆盖、条件-判定覆盖、路径覆盖

白盒测试的测试用例在大二学习软件工程的时候也是一个重点模块&#xff0c;但是上课没有太多时间做太多的测试用例&#xff0c;然后许久不用会搞乱&#xff0c;所以这里简单复盘一下。 白盒测试是结构测试&#xff0c;主要对代码的逻辑进行验证。 逻辑覆盖率&#xff1a;语句覆…

卷积码和维特比译码

卷积码 基本概念 卷积码常记为(n, k, N)&#xff1a; n n n为模2和相加器的个数 N N N为输入移位寄存器的段数&#xff08;称为约束长度&#xff09; k k k表示每段有 k k k级 编码效率为 R c k n R_c \frac{k}{n} Rc​nk​ 距离特性 纠错能力的度量&#xff1a;最大的最…

如何通俗地理解卷积?

从数学上讲&#xff0c;卷积就是一种运算。 某种运算&#xff0c;能被定义出来&#xff0c;至少有以下特征&#xff1a; 首先是抽象的、符号化的 其次&#xff0c;在生活、科研中&#xff0c;有着广泛的作用 比如加法&#xff1a; &#xff0c;是抽象的&#xff0c;本身只是…

【信道编码/Channel Coding】卷积码和Viterbi译码及其MATLAB实现

简介&#xff1a; 这是本专栏信道编码/Channel Coding的最后一站&#xff0c;想对信道编码有一个系统性的认识可以看本专栏的 信道编码的整体框架 一文。而在本篇文章中&#xff0c;将介绍卷积码的基本原理和Viterbi译码的过程&#xff0c;以及其MATLAB实现。为什么是最后一站呢…

不同卷积方法一览(+部分代码)

关键词 卷积方法&#xff1a;2D / 3D / 1x1 /转置/扩张&#xff08;Atrous&#xff09;/空间可分/深度可分/平展/分组/混洗分组/逐点分组卷积 卷积网络&#xff1a;全卷积FCN&#xff08;Fully Convolutional Network&#xff09;&#xff0c;可变形卷积&#xff08;Deformab…

卷积代码实现

卷积在pytorch中有两种方式&#xff0c;一种是torch.Conv2d(),一种是torch.nn.functional.conv2d&#xff08;&#xff09;&#xff0c;这两种形式本质都是使用一个卷积操作&#xff0c;下面举例来说明一下这两种卷积方式 import numpy as np import torch from torch import …