怎么做好白盒测试?


白盒测试

一、什么是白盒测试?

白盒测试,又称结构测试或逻辑驱动测试,是一种软件测试方法,它基于对程序内部结构的理解来进行。在这个测试过程中,测试人员就像是有源代码的"盒子"里的操作员一样,关注的是代码的各个组件、算法、数据结构以及控制流程测试者会检查每一个逻辑路径、循环条件、分支判断等,验证输入是否按预期处理并得出正确的输出结果。白盒测试通常用于单元测试,能提供更深入的覆盖度,但无法揭示用户界面或外部接口的问题。

二、白盒测试特点

优点:

  • 代码覆盖率高

缺点:

  • 覆盖所有代码路径难度大
  • 业务功能测试覆盖不全
  • 测试开销大

黑盒测试:每个项目都需要测试
白盒测试:业务逻辑很复杂的模块进行白盒测试,保证路径尽可能的覆盖全面。

三、白盒测试的设计方法

静态

  • 桌面检查:研发交叉检查
  • 代码审查:组织会议,由研发讲解自己的代码内容,为什么这么写。(开发、测试人员参加)
  • 代码走查:可以理解为showcases(功能实现)
  • 代码扫描工具:不能完全替代上面的方法,只能检查代码规范问题。SonarQube

动态

  • 逻辑覆盖法
    • 语句覆盖
    • 判定覆盖
    • 条件覆盖
    • 判定条件覆盖
    • 条件组合覆盖
    • 路径覆盖
  • 基本路径测试法

1、逻辑覆盖法

是通过对程序逻辑结构的遍历实现程序的覆盖。


对逻辑代码转化为代码执行流程图

代码案例:

1、测试设计方法---语句覆盖

设计测试用例,使得程序中每条语句至少被执行一次。

a、用例设计如下:
b、语句覆盖的局限性

在六种逻辑覆盖标准中,语句覆盖标准最弱。

2、测试设计方法---判定覆盖

判定覆盖:也叫分支覆盖,设计测试用例,使得程序中的每个判断的"真"和"假"都至少被执行一次。即:程序中的每个分支至少执行一次。

a、测试用例如下:
b、判定覆盖的局限性

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

3、测试设计方法---条件覆盖

设计测试用例,使得判定中的每个条件至少有一次取真值,有一次取假值。

a、测试用例如下:
b、条件覆盖的局限性

条件覆盖并不能保证判定覆盖

4、测试设计方法---判定条件覆盖

设计测试用例,
1、使得被测程序中的每个判断本身的判定结果(真假)至少满足一次,同时;
2、每个逻辑条件的可能值(真假)也至少被满足一次。
即同时满足100%判定覆盖和100%条件覆盖的标准。

a、测试用例如下:
b、判定条件覆盖的局限性

满足判定-条件覆盖标准一定能够满足条件覆盖、判定覆盖和语句覆盖。

5、测试设计方法---条件组合覆盖

设计测试用例,使得被测试程序中的每个判定中条件结果的所有可能组合至少执行一次。

a、测试用例如下:
b、条件组合覆盖的局限性

条件组合覆盖能满足判定覆盖、条件覆盖、判定条件覆盖、也就包括了语句覆盖。

条件组合覆盖不能保证覆盖所有的路径

6、路径覆盖

设计测试用例,覆盖程序中所有可能的路径(从头到尾)

a、用例设计

根据路径设计测试用例,从头到尾只要有1小段路径不同,则为不同的路径。

b、路径覆盖局限性

2、基本路径测试法

在程序控制流图的基础上,通过分析程序的环路复杂性,导出基本可执行路径集合,从而设计测试用例。

a、测试设计方法------基本路径测试法




四、总结

主要应用于单元测试阶段
先静态、后动态
设计用例一般使用基本路径测试,重点模块使用多种覆盖率标准

相关推荐
lay_liu26 分钟前
springboot 文件下载
java·spring boot·后端
Flittly26 分钟前
【SpringAIAlibaba新手村系列】(11)Embedding 向量化与向量数据库
java·笔记·spring·ai·springboot
Darkwanderor28 分钟前
什么数据量适合用什么算法
c++·算法
入瘾1 小时前
etcd 显示连接失败
数据库·chrome·etcd
workflower1 小时前
AI制造-推荐初始步骤
java·开发语言·人工智能·软件工程·制造·需求分析·软件需求
zc.ovo1 小时前
河北师范大学2026校赛题解(A,E,I)
c++·算法
py有趣1 小时前
力扣热门100题之环形链表
算法·leetcode·链表
本体智能1 小时前
预制指标、宽表、SQL、本体ABC:真正决定长期成本的,是一次变更会波及多少层
数据库·sql·本体神经网络·uino数据智能引擎
长安11081 小时前
数据库基础知识----数据库大观
数据库·oracle
py有趣1 小时前
力扣热门100题之回文链表
算法·leetcode·链表