怎么做好白盒测试?


白盒测试

一、什么是白盒测试?

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

二、白盒测试特点

优点:

  • 代码覆盖率高

缺点:

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

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

三、白盒测试的设计方法

静态

  • 桌面检查:研发交叉检查
  • 代码审查:组织会议,由研发讲解自己的代码内容,为什么这么写。(开发、测试人员参加)
  • 代码走查:可以理解为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、测试设计方法------基本路径测试法




四、总结

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

相关推荐
-指短琴长-几秒前
ProtoBuf速成【基于C++讲解】
android·java·c++
Cx330❀9 分钟前
《C++ 搜索二叉树》深入理解 C++ 搜索二叉树:特性、实现与应用
java·开发语言·数据结构·c++·算法·面试
员大头硬花生11 分钟前
六、InnoDB引擎-架构-结构
数据库·mysql·oracle
爱吃烤鸡翅的酸菜鱼15 分钟前
深度解析《AI+Java编程入门》:一本为零基础重构的Java学习路径
java·人工智能·后端·ai
SimonKing20 分钟前
被卖的Hutool出AI模块了!它如何让Java调用大模型变得如此简单?
java·后端·程序员
不染尘.42 分钟前
2025_11_5_刷题
开发语言·c++·vscode·算法·贪心算法·动态规划
不穿格子的程序员43 分钟前
从零开始刷算法-栈-字符串解码
java·开发语言
你不是我我1 小时前
【Java 开发日记】设计模式了解吗,知道什么是饿汉式和懒汉式吗?
android·java·开发语言
2501_929177581 小时前
C++中的虚基类
开发语言·c++·算法
程序新视界1 小时前
在MySQL中,是否可以使用UUID作为主键?
数据库·后端·mysql