白盒测试详细知识点,简单案例,全部搞懂

本文详细介绍了白盒测试的概念、特点和不同类型的逻辑覆盖方法,如语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖和条件组合覆盖。此外,还探讨了基本路径测试,强调了各种覆盖标准的优缺点及其在实际测试中的应用。通过具体的测试用例设计,展示了如何确保程序中的关键逻辑和路径得到有效验证。
摘要由CSDN通过智能技术生成

白盒测试

1、白盒测试的概念即特点

代码逻辑的测试

  • 白盒测试,又称结构测试、逻辑驱动测试或基于程序代码内部构成的测试。此时,测试工程师需深入考察程序代码的内部结构、逻辑设计等。
  • 对于白盒测试工程师来说,软件产品内部构成是透明的。

把程序看成装在一个透明的盒子里,测试者完全知道程序的结构和处理算法,按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按预定要求正确工作。

白盒测试主要应用于单元测试阶段。

白盒测试特点

  • 优点:代码覆盖率高
  • 缺点:
    • 覆盖所有代码路径难度大
    • 业务功可能覆盖不全
    • 测试开销大

白盒测试设计方法

  • 静态
    • 桌面检查
    • 代码审查
    • 代码走查
    • 代码扫描工具
  • 动态
    • 逻辑覆盖法
    • 基本路径测试法

2、逻辑覆盖

逻辑覆盖:是通多对程序逻辑结构的遍历实现程序的覆盖,分为语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖等。

逻辑覆盖总结
语句覆盖每个可执行语句至少执行一次
判定覆盖每个判定至少都获得一次“真”值和“假”值
条件覆盖每个判定包含的每个条件的可能取值(真/假)都至少满足一次
判定/条件覆盖每个判定包含的每个条件的所有情况(真/假)至少出现一次,并且每个判定本身的判定结果(真/假)也至少出现一次
条件组合覆盖每个判定的所有可能的条件取值组合都至少出现一次
路径覆盖要求覆盖程序中所有可能的路径

2.1、语句覆盖

语句覆盖法的基本思想是设计若干测试用例,运行被测程序,使程序中的每个可执行语句至少被执行一次

  • 如果是顺序结构,就是让测试从头执行到尾

  • 如果有分支、条件和循环,需要利用下面的方法,执行足够的测试覆盖全部语句

image-20211108192232859

测试用例设计:

数据覆盖的语句
a=2,b=1,c=61,2,3,4,5

语句覆盖缺点 :

  • 语句覆盖是最弱的逻辑覆盖。语句覆盖不能准确的判断运算中的逻辑关系错误。

  • a>0&&b>0 替换成 a>0||b>0 时,在上述实例中,无法发现

2.2、判定覆盖

不仅每个语句必须至少执行一次,而且每个判定的真假值都应该至少执行一次。

image-20211108192232859

测试用例设计:

数据判定一判定二
a=2,b=1 ,c=6TT
a=-2,b=-1 ,c=-3FF

或者:

数据判定一判定二
a=1,b=1 ,c=-3TF
a=1,b=-2 ,c=3FT

只要满足判定覆盖标准就一定满足语句覆盖标准。

判定覆盖缺点:

  • a>0&&b>0 替换成 a>0||b>0 时,同样无法发现

2.3、条件覆盖

不仅每个语句至少执行一次,而且使判定表达式中的每个条件都取到真假值。条件覆盖通常比判定覆盖强,因为它使每个条件都取到了两个不同的结果,判定覆盖却只关心整个判定表达式的值。但也有反例,总之,判定覆盖不一定包含条件覆盖,条件覆盖也不一定包含判定覆盖

image-20211108192232859

测试用例设计:

测试用例a>0b>0a>1c>1路径
a=2,b=-1,c=-2TFTF1-3-4
a=-1,b=2,c=3FTFT1-3-4

判定一满足条件覆盖但不满足判定覆盖。

2.4、判定-条件覆盖

使得判定表达式中的每个条件都取到真假值,每个判定表达式也都取到真假值。

即同时满足100%判定覆盖和100%条件覆盖。

image-20211108192232859

测试用例设计:

测试用例a>0b>0a>1c>1判定一判定二路径
输入:a=2,b=1,c=6 输出:a=2,b=1,c=5TTTTTT1-2-4
输入:a=-1,b=-2,c=-3 输出:a=-1,b=-2,c=-5FFFFFF1-3-5

判定条件覆盖缺点:

  • a>0&&b>0 替换成 a>0||b>0 时,同样无法发现

2.5、条件组合覆盖

要求选取足够多的测试数据,使得每个判定表达式中条件的各种可能组合都至少出现一次。

条件组合覆盖是前述几种覆盖标准中最强的。

满足条件组合覆盖标准的测试数据,也一定满足判定覆盖、条件覆盖和判定/条件覆盖标准。但是,条件组合覆盖标准的测试数据并不一定能使程序中的每条路径都执行到,是从对程序路径的覆盖程度分析的逻辑覆盖标准。

image-20211108192232859

条件组合:

组合编号a>0b>0a>1c>1判定1判定2
1TTTTTT
2TFTFFT
3FTFTFT
4FFFFFF

测试用例设计:

测试用例a>0b>0a>1c>1判定1判定2路径
a=2,b=1,c=6TTTTTT1-2-4
a=2,b= -1,c= -2TFTFFT1-3-4
a=-1,b=2,c=3FTFTFT1-3-4
a= -1,b= -2,c= -3FFFFFF1-3-5

条件组合覆盖缺点:

  • 覆盖了所有组合,但覆盖路径有限,1-2-5 没被覆盖
  • 线性地增加了测试用例的数量

2.6、基本路径覆盖

选取足够多测试数据,使程序的每条可能路径都至少执行一次(如果程序图中有环,则要求每个环至少经过一次。

image-20211108192232859

找出所有路径:

测试用例路径判定1判定2
a=2,b=1,c=61-2-4TT
a=2,b= -1,c= -21-2-5FT
a=-1,b=2,c=31-3-4FT
a= -1,b= -2,c= -31-3-5FF

路径覆盖特点

  • 满足路径覆盖一定满足判定覆盖,不一定满足条件覆盖。

  • 优点:这种测试方法可以对程序进行彻底的测试,比前面五种的覆盖面都广。

  • 缺点 :需要设计大量、复杂的测试用例,使得工作量呈指数级增长,不见得把所有的条件组合都覆盖。

3、基本路径测试

基本路径测试是Tom McCabe提出的一种白盒测试技术。

基本路径测试步骤:

  • 依据代码绘制流程图

  • 计算流程图的环路复杂度

  • 导出可执行路径

  • 设计测试用例覆盖每条基本路径

image-20211108205504782
  • Path1: 1-2-3-6-7-9-10-1-11

  • Path2: 1-2-3-6-8-9-10-1-11

  • Path3: 1-2-3-4-5-10-1-11

  • Path4: 1-11

基本路径测试并不是测试所有路径的组合,仅仅保证每条基本路径被执行一次

  • 11
    点赞
  • 104
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Baucc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值