首页 > 其他分享 >[超详细有案例]理解白盒测试的5种逻辑覆盖

[超详细有案例]理解白盒测试的5种逻辑覆盖

时间:2024-10-25 21:18:49浏览次数:6  
标签:语句 覆盖 白盒 路径 案例 判定 测试 OBDE

[超详细有案例]理解白盒测试的5种逻辑覆盖

       白盒测试是穷举路径测试,在逻辑覆盖中有6种,分别是语句覆盖,判定覆盖,条件覆盖,判定/条件覆盖,组合覆盖,路径覆盖,下面我将以每种覆盖的定义,实例讲解,优点,缺点了帮助大家理解。

(1)语句覆盖

        语句覆盖是最起码的结构覆盖要求,语句覆盖用覆盖率最强的测试用例,使得程序中每一条语句至少被执行一次

实例:

序号

输入数据

预期

覆盖语句

路径

1

x=1,y=7

X=8

X=x+y

OBCE

2

X=11,y=-3

X=14

X=x-y

OBDE

        由上可知,语句覆盖中第一个判定每次都会运行,如果第一次判定正确会直接结束本次运行,覆盖率不强,因此我们只需第一次错误的情况下跳到第二个测试去测试。

优点:不用细分每条判定表达式

缺点:只能针对程序逻辑中显示存在的语句,隐式逻辑分支无法测试,比如上面的例子加一个else

if,语句覆盖就不会考虑这种情况。

(2)判定覆盖

        判定覆盖也叫分支覆盖,它要求每次判定都要测试真或假。

序号

输入数据

预期输出

覆盖判定

路径

1

x=-1,y=1

X=0

Y1

OAE

2

x=1,y=7

X=8

N1Y2

OBCE

3

X=11,y=-3

X=14

N1N2

OBDE

        由上可知,每个真值或假值都至少执行一次

优点:判定覆盖具有和语句覆盖一样的简单性,无须细分,只要每个判定的T和F判定一次就行。

缺点:实际项目中,大部分判断语句都不会是简单的对与错,通常与多个语句相结合,如“case”,“else if”等。如果仅仅只测试最终结果,忽略每个条件的取值,肯定会有遗漏部分。

(3)条件覆盖

        条件覆盖的要求是判定中的每一个判定条件都获得一次结果,即每个条件至少有一次真值一次假值。

序号

输入数据

预期

条件取值

路径

1

x=1,y=7

X=8

T1T2T3T4

OBCE

2

X=11,y=-3

X=14

F1F2F3F4

OBDE

优点:比判定覆盖增加了对符合判定情况的测试,增加了测试路径。

缺点:需要足够多的测试用例,但条件覆盖不能保证判定覆盖,它只能保证每个条件至少有一次真值,考虑不了所有判定结果。

(4)判定/条件覆盖

        设计足够多的测试用例,使判定中每个条件结果可能至少出现一次,每个判定本身的所有可能结果也至少出现一次。

序号

输入数据

预期

条件取值

判定取值

路径

1

x=1,y=7

X=8

N1Y2

T1T2T3T4

OBCE

2

X=11,y=-3

X=14

N1N2

F1F2F3F4

OBDE

3

x=-1,y=1

X=0

Y1

T1T2

OAE

优点:是判定和条件的结合,弥补了两者的不足

缺点:没考虑条件的组合情况

(5)组合覆盖

        组合覆盖就是设计足够多的测试用例,让每个判定中的条件结果的所有组合可能至少出现一次

序号

输入数据

预期结果

条件取值

路径

1

X=-1,Y=9

X=0

T1T2T3T4

OAE

2

X=?,Y=?

?

T1T2T3F4

OAE

3

X=-1,Y=1

X=0

T1T2F3T4

OAE

4

X=?,Y=?

?

T1F2F3F4

OAE

5

X=?,Y=?

?

T1F2T3T4

OBCE

6

X=?,Y=?

?

T1F2T3F4

OBDE

7

X=-1,Y=-2

X=1

T1F2F3T4

OBDE

8

X=-1,Y=-3

X=2

T1F2F3F4

OBDE

9

X=10,Y=1

X=11

F1T2T3T4

OBCE

10

X=?,Y=?

?

F1T2T3F4

OBDE

11

X=?,Y=?

?

F1T2F3T4

OBDE

12

X=?,Y=?

?

F1T2F3F4

OBDE

13

X=10,Y=-1

X=9

F1F2T3T4

OBCE

14

X=11,Y=-3

X=14

F1F2T3F4

OBDE

15

X=10,Y=-3

X=13

F1F2F3T4

OBDE

16

X=9,Y=-3

X=12

F1F2F3F4

OBDE

优点:满足前面的判定覆盖、条件覆盖和判定/条件覆盖准则,判定每个条件所有可能都至少出现一次,覆盖率强。

缺点:线性的增加了测试用例的数量。

(6)路径覆盖

        路径覆盖是设计足够的测试用例,覆盖程序中的所有可能的路径

序号

输入数据

预期输出

路径

1

X=-1,Y=1

X=0

OAE

2

X=-1,Y=-2

X=1

OBDE

3

X=10,Y=1

X=11

OBCE

优点:可以对程序进行彻底的测试,比以上5种的覆盖面都广。

缺点:因为要对所以可能的路径都进行测试,那么会使的工作量指数级增长,有些情况下一些执行路径是无法执行的,比如:

if(!A)B++;
    else D--;

这两个语句只包括两条执行路径(A为真或假对B和D的处理)。真或假不可能都不可能存在,路径覆盖则认为包含了真或假的4条执行路径,这样很大程度上降低了测试效率,大量的测试结果累计也为排错带来了麻烦。

标签:语句,覆盖,白盒,路径,案例,判定,测试,OBDE
From: https://blog.csdn.net/weixin_75003151/article/details/143243837

相关文章

  • 软件开发与测试模型
    软件开发模型软件开发生命周期模型是软件产品从最初构思到退役的过程。常见的软件开发模型大爆炸模型直接开发(有想法直接编程无计划性)。边写边改模型变对需求进行分析边对软件进行编程。先简单的设计来回编程来回测试来回修改直至觉得足够才发布产品。无计划与文档可......
  • 搭建YOLOv8实现裂缝缺陷识别全流程教程:从源码下载到模型测试
    教程目的:yolov8的安装配置到训练模型,并完成使用模型进行识别前提注意:yolov8要求Python需要版本必需大于等于3.10,我用的Python3.12.3,这里分享下Python3.12.3的安装器=>夸克网盘分享以及教程中用到的yolov8源码、权重文件、GPU配套版本的Torch=> 夸克网盘分享大致步骤1.......
  • 高效集成:聚水潭采购入库数据导入MySQL案例
    聚水潭数据集成到MySQL的技术案例分享在企业数据管理中,如何高效、准确地将业务系统的数据集成到分析平台是一个关键问题。本篇文章将聚焦于一个具体的系统对接集成案例:将聚水潭的采购入库单数据集成到MySQL数据库中,以便在BI勤威平台上进行进一步的数据分析和处理。案例背景本......
  • CATIA许可分配管理实践案例
    在全球工程设计领域,CATIA软件以其强大的功能和广泛的应用而备受赞誉。然而,对于许多企业来说,如何有效地管理和分配CATIA软件许可,以确保资源的最大化利用和设计团队的高效协作,一直是一个具有挑战性的任务。本文将介绍一个成功的CATIA许可分配管理实践案例,以展示如何通过优化资源利用......
  • 雷池WAF自动化实现安全运营实操案例终极篇
    免责声明本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停止本文章阅读。背景作为一个小型网站的站长,往往面临资源有限(没有RMB)......
  • python-show_delta案例
    show_delta使用setenvmmcroot"/dev/mmcblk1p2rootwaitrwinitcall_debugprintk.time=1"dmesg>kerneltimescripts/bootgraph.plkerneltime>boot.svg#printk.time=1orCONFIG_PRINTK_TIME=yscripts/show_deltakerneltime>deltatimebootgr......
  • Robot Framework接口自动化测试案例
    本文我们一起看一个接口自动化测试的案例,带大家了解一下RobotFramework在接口自动化测试中的应用。接口自动化步骤:1、发送请求通过RequestsLibrary类库中的postrequest关键字发起HTTP请求,如下图所示2、解析结果通过解析接口返回的状态码或者其他字段3、验证结果通......
  • bypass waf测试_rce
    前言以下验证绕过效果都使用开源雷池waf知己知彼百战百胜,想bypasswaf还是得先了解wafwaf是什么WAF(WebApplicationFirewall,WEB应用防火墙)会过滤和监测Web应用程序与互联网之间的HTTP/HTTPS流量,以此来保护Web应用程序安全。它通常会保护Web应用程序免受各种形式的攻击,......
  • Java中循环结构中的for循环和练习案例
    文章目录前言循环结构for循环练习1(输出)练习2(求和)练习3(求偶数和)练习4(求水仙花数)练习5(求水仙花数且统计个数)练习6(求回文数)前言我是一名来自延边大学人工智能专业的热爱街舞的大四学生,目前在学习Java,我会根据我的学习路线给大家分享学习经验,这章我们学习Java中的控制结......
  • 数据无缝对接:金蝶云星空与旺店通集成案例
    金蝶云星空与旺店通·企业奇门的系统对接集成案例分享:组装-委外仓父项入库在企业信息化管理中,数据的高效流动和准确处理是确保业务顺畅运行的关键。本文将聚焦于一个具体的系统对接集成案例——金蝶云星空的数据集成到旺店通·企业奇门,方案名称为“组装-委外仓父项入库”。在这......