白盒测试之条件组合覆盖

news2024/10/6 20:35:16

白盒测试之条件组合覆盖(蓝桥课学习笔记)

实验介绍

使用分支-条件覆盖法设计白盒测试用例时可以使程序中所有判断语句中的条件取值为真、为假的情况和整个判断语句取真分支、假分支的情况都至少被执行过一次,但无法覆盖到所有路径,仍然会有一些逻辑运算等错误未被测试到。

条件组合覆盖又称为多条件覆盖,是指设计足够数据的测试用例,使每个判定语句中的所有判定条件的各种可能的组合都至少被执行一次。条件组合覆盖与分支-条件覆盖的不同之处在于:条件组合覆盖不是简单的要求每个条件为真、为假两种情况都至少被执行一次,而是要求让每个条件为真、为假情况所有可能的组合都至少被执行一次。例如,判断语句 if ( a == 0 or b > 2 ) 中有两个条件 a == 0 和 b > 2 ,使用条件组合覆盖法设计测试用例时,要求这两个条件的取真值和取假值的组合至少各执行一次,即 a == 0(真)与 b > 2 (真)、a == 0(真)与 b > 2 (假)、 a == 0(假)与 b > 2 (真)、 a == 0(假)与 b > 2 (假)这四种组合情况。

本实验主要通过实例介绍使用条件组合覆盖法设计白盒测试用例。

知识点
  • 条件组合覆盖法设计白盒测试用例

实验内容

为了方便作比较,本实验仍然使用如下的代码作为测试对象:

    public static int test(int a,int b,int c) {
1         int result = 0;
2         if(a == 0 or b > 2) {
3             result = b - a;
          }
4         if(a > 0 and c > 0) {
5             result = c * a;
        }
6        return result;
    }

使用条件组合覆盖法设计白盒测试用例的具体步骤如下:

第 1 步:分析待测试代码,画出程序的流程图。上述代码的参考流程图如下图所示:

图片描述

标识了路径的流程图如下:

图片描述

第 2 步:分析流程图。

由流程图可知:这段代码中有两个判断语句,分别是上图中标识为 ② 和 ③ 的语句,语句 ② 中有两个条件语句,分别为 a == 0 和 b > 2 ;语句 ③ 中也有两个条件,分别为 a > 0 和 c > 0 。为了使后续的分析过程更加清晰明了,我们先将条件语句进行相应的标识,具体如下:

条件取值标识
a == 0Y1
a == 0N1
b > 2Y2
b > 2N2
a > 0Y3
a > 0N3
c > 0Y4
c > 0N4

根据条件组合覆盖法的定义,我们需要设计一些测试用例分别使判断语句 ② 中两个条件的四种组合及判断语句 ③ 中两个条件的四种组合都至少执行一次,如下表所示:

组合编号判断语句条件组合
1a == 0 or b > 2Y1 + Y2
2a == 0 or b > 2Y1 + N2
3a == 0 or b > 2N1 + Y2
4a == 0 or b > 2N1 + N2
5a > 0 and c > 0Y3 + Y4
6a > 0 and c > 0Y3 + N4
7a > 0 and c > 0N3 + Y4
8a > 0 and c > 0N3 + N4

第 3 步:使用条件组合覆盖法编写测试用例。

分别设计测试用例覆盖上表中的各种组合,具体如下:

测试用例编号输入数据预期结果条件组合覆盖条件覆盖路径覆盖
testcase_01a = 0 , b = 3 , c = 1result = 3组合 1 、组合 7Y1、Y2、N3、Y4B - C
testcase_02a = 0 , b = 1 , c = 0result = 1组合 2 、组合 8Y1、N2、N3、N4B - C
testcase_03a = 1 , b = 5 , c = 3result = 3组合 3 、组合 5N1、Y2、Y3、Y4B - D
testcase_04a = 2 , b = 0 , c = -1result = 1组合 4 、组合 6N1、N2、Y3、N4A - C

通过对上表的分析我们可以发现 :条件组合覆盖可以使程序判断断语句中的条件组合都至少被执行一次,但是,满足了条件组合覆盖也不能保证所有的路径都已经得到覆盖,在本例中,四个测试用例实现了条件组合的 100% 覆盖,但是仍有路径 A - D 未被覆盖到。如果要将路径全部覆盖,需要再增加一个覆盖路径 A - D 的测试用例,即使用条件组合 + 分支覆盖的全部测试用例如下:

测试用例编号输入数据预期结果条件组合覆盖条件覆盖路径覆盖
testcase_01a = 0 , b = 3 , c = 1result = 3组合 1 、组合 7Y1、Y2、N3、Y4B - C
testcase_02a = 0 , b = 1 , c = 0result = 1组合 2 、组合 8Y1、N2、N3、N4B - C
testcase_03a = 1 , b = 5 , c = 3result = 3组合 3 、组合 5N1、Y2、Y3、Y4B - D
testcase_04a = 2 , b = 0 , c = -1result = 0组合 4 、组合 6N1、N2、Y3、N4A - C
testcase_05a = 2 , b = 0 , c = 5result = 10组合 4 、组合 5N1、N2、Y3、Y4A - D

实验总结

条件组合覆盖可以使程序所有判断语句中的条件组合都被覆盖,但是仍然不能保证覆盖所有路径,需要再补充用例进行路径覆盖。另外,如果程序中的条件和分支比较多,需要设计的测试用例数量会很庞大。

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

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

相关文章

c++-----继承

01:继承是什么 定义 继承 (inheritance) 机制是面向对象程序设计 使代码可以复用 的最重要的手段,它允许程序员在 保 持原有类特性的基础上进行扩展 ,增加功能,这样产生新的类,称派生类。继承 呈现了面向对象 程序设计…

Java springboot使用EasyExcel读Excel文件,映射不到属性值,对象属性值都是null

如果你的类上有这个注解,去掉火或注释掉就可以了 Accessors(chain true)解决方法

常用日期组件封装

date.js // 获取近期日期数组 例:["2024-04-04 00:00:00", "2024-04-05 23:59:59"] const getDateRange (num 1) > {const time1 new Date()const diff new Date().getTime() - 86400000 * (num)const time2 new Date(diff)const year…

Canvas使用详细教学:从基础绘图到进阶动画再到实战(海报生成、Flappy Bird 小游戏等),掌握绘图与动画的秘诀

一、Canvas基础 1. Canvas简介 Canvas是HTML5引入的一种基于矢量图形的绘图技术,它是一个嵌入HTML文档中的矩形区域,允许开发者使用JavaScript直接操作其内容进行图形绘制。Canvas元素不包含任何内在的绘图能力,而是提供了一个空白的画布&a…

LLM-01 大模型 本地部署运行 ChatGLM2-6B-INT4(6GB) 简单上手 环境配置 单机单卡多卡 2070Super8GBx2 打怪升级!

写在前面 其他显卡环境也可以!但是最少要有8GB的显存,不然很容易爆。 如果有多显卡的话,单机多卡也是很好的方案!!! 背景介绍 目前借到一台算法组的服务器,我们可以查看一下目前显卡的情况 …

一篇出色的答辩状,需要在“答”与“辩”两方面下功夫,你做到了吗?

一篇出色的答辩状,需要在“答”与“辩”两方面下功夫,你做到了吗? 在法律诉讼中,答辩状的重要性不言而喻。它不仅是你回应对方指控的主要手段,也是展示你立场和观点的关键平台。在#李秘书讲写作#看来,一篇…

5.HC-05蓝牙模块

配置蓝牙模块 注意需要将蓝牙模块接5v,实测接3.3v好像不太好使的样子 首先需要把蓝牙模块通过TTL串口模块接到我们的电脑,然后打开我们的串口助手 注意,我们现在是配置蓝牙模块,所以需要进入AT模式,需要按着蓝牙模块上的黑色小按钮再上电,这时候模块上的LED灯以一秒慢闪一次…

Adobe AE(After Effects)2024下载地址及安装教程

Adobe After Effects是一款专业级别的视觉效果和动态图形处理软件,由Adobe Systems开发。它被广泛用于电影、电视节目、广告和其他多媒体项目的制作。 After Effects提供了强大的合成和特效功能,可以让用户创建出令人惊艳的动态图形和视觉效果。用户可以…

Python 物联网入门指南(七)

原文:zh.annas-archive.org/md5/4fe4273add75ed738e70f3d05e428b06 译者:飞龙 协议:CC BY-NC-SA 4.0 第二十四章:基本开关 到目前为止一定是一段史诗般的旅程!回想一下你开始阅读这本书的时候,你是否曾想象…

【产品介绍】安科瑞Acrel-2000T无线测温解决方案

ARTM-Pn 无线测温采集装置,可用于3~35kV 户内开关柜,包括中置柜、手车柜、固定柜、环网柜等多种开关柜,也可用于 0.4kV 低压柜,包括固定柜,抽屉柜等。无线温度传感器可安装于柜内任何发热点上,利用无线数据…

跨境物流系统解决方案:构建全球化供应链的关键步骤

随着全球化的发展,跨境物流已成为国际贸易中不可或缺的重要环节。然而,由于各国之间的政治、法律、文化和语言差异,跨境物流常常面临诸多挑战,如货物清关、运输安全、物流跟踪等问题。因此,构建一个高效、可靠的跨境物…

Windows如何下载Bun并在前端Vue或React项目上替代Yarn或Npm

Bun Bun网站 Bun 在 Windows 上下载并安装 Bun 非常简单。你可以使用以下命令在 Windows 10 或更高版本上安装 Bun powershell -c "irm bun.sh/install.ps1 | iex"“powershell”不是内部或外部命令,也不是可运行的程序或批处理文件 PowerShell 命令解决…

嵌入式第四天:(C语言入门)

目录 什么是数组? 数组: 数组的使用: 数组的初始化: 数组名: 数组案例: 一维数组的最大值: 一维数组的逆置: 数组和指针: 通过指针操作数组元素: …

UART自适应任意(典型)波特率原理以及FPGA实现

文章目录 前言一、特征值自适应原理二、整体结构框图三、接收模块四、发送模块五、编写仿真测试文件以及结果分析六、上板测试参考 前言 在上一篇文章《详解UART通信协议以及FPGA实现》我们实现了UART的通信,我们知道UART通信需要双方约定好波特率,如果想…

Hadoop大数据处理技术-配置连接篇

​2024/4/17 Hadoop学习前的准备 3)连接虚拟机 上一节配置完成了基础的虚拟机配置及网络配置 下面我们开始建立连接 我们为什么要与虚拟机建立链接呢? 连接虚拟机就好像跟亲友联系一样 总得找个便捷又好用的工具才行 Secure CRT就像是一把能打开通向…

材料物理 笔记-6

原内容请参考哈尔滨工业大学何飞教授:https://www.bilibili.com/video/BV18b4y1Y7wd/?p12&spm_id_frompageDriver&vd_source61654d4a6e8d7941436149dd99026962 或《材料物理性能及其在材料研究中的应用》(哈尔滨工业大学出版社) 文…

手写spring IOC底层源码来模拟spring如何利用多级缓存解决循环依赖的问题

在文章开始之前,先来看一张spring IOC加载过程的脑图吧 Spring IOC的加载过程 首先,当我们去new了一个applicationContext,它底层呢就会把我们配置的bean进行扫描,然后创建成一个一个的beanDefinition放在我们的beanDefinitionMap中,此时就有了一切创造bean的原料信…

k-means聚类算法的MATLAB实现及可视化

K-means算法是一种无监督学习算法,主要用于数据聚类。其工作原理基于迭代优化,将数据点划分为K个集群,使得每个数据点都属于最近的集群,并且每个集群的中心(质心)是所有属于该集群的数据点的平均值。以下是…

「GO基础」文件名规范、关键字与标识符

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

【数据结构与算法】最大公约数与最小公倍数

最大公因数(英语:highest common factor,hcf)也称最大公约数(英语:greatest common divisor,gcd)是数学词汇,指能够整除多个非零整数的最大正整数。例如8和12的最大公因数…