news 2026/8/31 6:49:24

测试分类篇 - 测试方法(黑盒测试、白盒测试、灰盒测试)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
测试分类篇 - 测试方法(黑盒测试、白盒测试、灰盒测试)

测试分类篇 - 测试方法(黑盒测试、白盒测试、灰盒测试)

文章目录

  • 测试分类篇 - 测试方法(黑盒测试、白盒测试、灰盒测试)
  • 1. 黑盒测试:
    • 1.1 黑盒测试的优点
    • 1.2 黑盒测试的缺点
    • 1.3 黑盒测试常用方法
  • 2. 白盒测试:
    • 2.1 白盒测试设计方法:
      • 1. 语句覆盖:
      • 2. 判定覆盖
      • 3. 条件覆盖:
      • 4. 条件判定覆盖:
      • 5. 条件组合覆盖:
      • 6. 路径覆盖(附带判定组合覆盖):
    • 2.2 总结:
  • 3. 灰盒测试
  • 4.常见面试题:你知道的测试方法有哪些?哪种用得比较多?(高频面试题)
  • 5. 结尾:

这篇博客,来源自这篇博客:
博客链接: 测试(8) - 测试分类篇

如果你是第一次点击这篇博客,推荐你先看上面这篇博客,上面这篇博客有这篇博客的跳转链接。
看到根据 测试方法 划分的时候,再点击链接过来看这这篇博客。

如果你只是想单独了解测试方法的话,也可以直接看这篇博客

1. 黑盒测试:

黑盒测试是在完全不考虑程序内部逻辑与结构的前提下,检查系统功能是否按照需求规格说明书(需求文档)正常实现能否正确接收输入数据并输出符合预期的结果,满足需求规范的测试方法。

由于只关注输入与输出的对应关系,黑盒测试也被称为数据驱动测试,测试重点聚焦于软件功能。

1.1 黑盒测试的优点

  • 无需了解程序内部代码与实现细节,不关注软件内部结构
  • 从用户视角设计测试用例,更容易把握用户常用功能与潜在问题,培养测试人员的产品思维
  • 基于软件需求文档设计用例,不易遗漏需求中规定的测试功能

1.2 黑盒测试的缺点

无法实现全量代码覆盖。

1.3 黑盒测试常用方法

等价类划分法、边界值分析法、因果图法、场景法、错误猜测法等。

也就是我们这篇博客:测试用例篇 - 设计测试用例的方法(等价类,边界值,场景法)
讲到的所有设计测试用例的方法,都属于是 黑盒测试。

2. 白盒测试:

白盒测试又称为结构测试逻辑测试,通过分析程序内部结构,针对程序逻辑结构设计测试用例并开展测试。

白盒测试的目的是:

  • 检查软件内部逻辑结构,对软件中的逻辑路径进行覆盖测试
  • 在程序不同位置设立检查点,监测程序运行状态,确保实际运行状态与预期状态一致。

黑盒测试:完全不考虑程序内部逻辑与结构
白盒测试:分析程序内部逻辑与结构

白盒测试主要分为静态测试动态测试两类。
静态测试常见方式包括:桌面检查、代码审查、代码走查、代码扫描工具检测等。
动态测试主要包含六种测试方法:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。

接下来,我们要介绍的是 白盒测试中,动态测试主要包含的六种测试方法:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖

2.1 白盒测试设计方法:

ifAandB// 语句1then action1// 语句2ifCorD// 语句3then action2// 语句4

A,B,C,D 分别是四个判定条件。并且,我会以 T 表示 true,F 表示 false

通过这段 伪代码,来讲解白盒测试设计方法。

1. 语句覆盖:

语句覆盖:每个语句至少执行一次

语句1 和 语句2 想要都执行:需满足 A 为真且 B 为真。(A 为 T并且 B 为 T)

语句1 和 语句2 想要都执行:需满足 C 为真或 D 为真。(C为 T或者 D 为 T)

由此得出测试用例:

用例 1:A 为T,B 为T,C 为T,D 为F。

通过这个测试用例,就能够让每个语句至少执行一次,这就是语句覆盖。

2. 判定覆盖

if语句,就是判定语句。

判定覆盖(分支覆盖):设计测试用例,使得程序中每一个判定的结果都至少取一次真、取一次假

ifAandB// 语句1ifCorD// 语句3

上述代码中,只有语句1 和 语句3 为if语句。

针对 语句1(if A and B),都为真,或者都为假 的情况:

if A and B
TA == T且B == T
FA == F 且 B == F,A == F 且 B == T,A == T 且 B == F

针对 语句2(if C or D),都为真,或者都为假 的情况:

if C or D
TC == T 且 D == T,C == F 且 D == T,C == T 且 D == F
FC == F且 D == F

综合起来:

语句1 和 语句2 都为真的情况:

测试用例1:A == T,B == T,C ==T ,D == F

通过这个测试用例满足每个 if语句 都为真的情况

语句1 和 语句2 都为假的情况:

测试用例1:A == F,B == F,C == F,D == F

通过这个测试用例满足每个每一个判定的结果都至少取一次真、取一次假

3. 条件覆盖:

设计足够的测试用例,使得程序中每个判定包含的每个条件 的所有可能取值(真和假)都至少被执行一次

ifAandB// 语句1then action1// 语句2ifCorD// 语句3then action2// 语句4

A,B,C,D 分别是四个判定条件。

A,B,C,D 这四个判定条件,都为 T ,都为 F 的情况:

A:T F

B:T F

C:T F

D:T F

得出测试用例如下:

用例 1:A=T,B=T,C=T,D=T

用例 2:A=F,B=F,C=F,D=F

通过这两个测试用例,覆盖了A,B,C,D 这四个判定条件,都为 T ,都为 F 的情况。

4. 条件判定覆盖:

结合判定覆盖和条件覆盖,设计测试用例:都为T,都为F 的情况。

判定覆盖和条件覆盖 都为T 的情况,结合判定覆盖和条件覆盖:

判定覆盖:

针对 语句1(if A and B),都为真,或者都为假 的情况:

if A and B
TA == T且B == T
FA == F 且 B == F,A == F 且 B == T,A == T 且 B == F

针对 语句2(if C or D),都为真,或者都为假 的情况:

if C or D
TC == T 且 D == T,C == F 且 D == T,C == T 且 D == F
FC == F且 D == F

条件覆盖:A,B,C,D 这四个判定条件,都为 T 。
结合起来,得出测试用例1:A=T,B=T,C=T,D=T

判定覆盖和条件覆盖 都为F 的情况,结合判定覆盖和条件覆盖:
判定覆盖,和上述一样。
条件覆盖:A,B,C,D 这四个判定条件,都为 F 。
结合起来,得出测试用例2:A=F,B=F,C=F,D=F

总结:
测试用例1 和 测试用例2,既可以做到 判定覆盖,也可以做到 条件覆盖。
因此称之为:判定条件覆盖

5. 条件组合覆盖:

设计足够的测试用例,使得每个判定中所有条件 的各种可能组合都至少出现一次

ifAandB// 语句1then action1// 语句2ifCorD// 语句3then action2// 语句4

语句1,语句3,分别有4个条件:A,B,C,D

将这 4 个条件的各种T,F 情况结合起来,形成表格:

ABCD
TTTT
TFTT
FTTT
FFTT

每一行就可以是⼀个用例,⼀共四个用例。

条件组合覆盖,条件越多,条件的各种T,F 情况也就越多,测试用例也就越多。

6. 路径覆盖(附带判定组合覆盖):

路径覆盖,比较复杂,我们先给出一个示例:

将上述流程图,转化为代码:

if(x>0&&y>0){语句块1}else{语句块2}if(z<0){语句块3语句块4}else{语句块4}

判定条件定义如下:

  1. if(x>0 && y>0)判定,记为P1
  2. if(z<0)判定,记为P2
  3. x > 0记为C1
  4. y > 0记为C2
  5. z < 0记为C3

路径覆盖,需要按步骤进行设计,一共有三步:

  1. 判定组合覆盖
  2. 根据判定组合覆盖的结果,设计条件
  3. 根据条件,给出数据

接下来,我们根据这三步,一步一步设计:

  1. 判定组合覆盖

    if(x>0 && y>0)判定,记为P1

    if(z<0)判定,记为P2

​ 将 P1,P2 可能的结果,都列举出来,就像 条件组合覆盖 那样:

P1P2
TT
TF
FT
FF
  1. 根据判定组合覆盖的结果,设计条件

    P1 (if(x>0 && y>0))的两个条件:x > 0记为C1y > 0记为C2

    P2 (if(z<0))的条件:z < 0记为C3

x>0 (C1)y>0 (C2)z<0 (C3)P1 (x>0 && y>0)P2 (z<0)
TTTTT
FTTFT
TFTFT
FFTFT
TTFTF
FTFFF
TFFFF
FFFFF

为了方便大家观察,下面的步骤,就取其中 4 个例子就行:

x>0 (C1)y>0 (C2)z<0 (C3)P1 (x>0 && y>0)P2 (z<0)
TTTTT
FTTFT
TTFTF
FTFFF
  1. 根据条件,给出数据
    数据x>0 (C1)y>0 (C2)z<0 (C3)P1 (x>0 && y>0)P2 (z<0)路径
    {x=3,y=3,z=-2}TTTTTa-b-d-f
    {x=-3,y=3,z=-2}FTTFTa-c-d-f
    {x=3,y=3,z=2}TTFTFa-b-e-f
    {x=-3,y=15,z=2}FTFFFa-c-e-f

这就是根据 路径覆盖 设计出来的 4 个测试用例。

2.2 总结:

  • 白盒测试主要适用于单元测试阶段
  • 测试用例设计遵循先静态、后动态的原则。
  • 通常以路径测试法为主,对重点模块可额外采用逻辑覆盖法进行补充。

3. 灰盒测试

灰盒测试是介于白盒测试与黑盒测试之间的一种测试方法,多用于集成测试阶段

它不仅关注输入与输出的正确性,同时也会关注程序内部的实现情况。

但灰盒测试的细致度与完整性不如白盒测试,而黑盒测试是覆盖产品范围最广的测试方式

因此,灰盒测试基本无法替代黑盒测试,若强行替代,会带来极高的成本,需要设计大量测试用例。

4.常见面试题:你知道的测试方法有哪些?哪种用得比较多?(高频面试题)

常见的测试方法有黑盒测试、白盒测试和灰盒测试。

开发人员主要使用白盒测试与灰盒测试,测试人员主要使用黑盒测试与灰盒测试

对测试人员而言,相比白盒测试,黑盒测试的应用更为广泛。

5. 结尾:

回到上一篇博客:测试(8) - 测试分类篇

最后,如果这篇博客能帮到你的,请你点点赞,有写错了,写的不好的,欢迎评论指出,谢谢!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/31 6:47:55

ESP32-S3驱动3.97寸AXS15260屏的LVGL9完整开发指南

这次我们来看一个嵌入式 UI 工程&#xff1a;esp32s31_3.97寸axs15260_lvgl9。项目命名非常直白&#xff0c;对应的是 ESP32-S3 主控、3.97 寸 AXS15260 驱动芯片的 LCD 模组&#xff0c;再配合 LVGL 9 图形库做界面渲染。这套组合在小型 HMI、桌面摆件、智能家居控制面板里很常…

作者头像 李华
网站建设 2026/8/31 6:47:15

基于MATLAB的无人机城市物流仿真系统设计与实现

简介&#xff1a;本资源是一套基于MATLAB开发的无人机城市物流配送仿真系统&#xff0c;面向本科毕业设计、课程设计及科研入门者&#xff0c;聚焦城市环境下无人机路径规划、枢纽选址、任务调度与风险评估等核心问题。压缩包共59个文件&#xff0c;含30个MATLAB源码&#xff0…

作者头像 李华
网站建设 2026/8/31 6:47:04

Android手机变身行车记录仪:Camera2+MediaRecorder完整方案

简介&#xff1a;本资源是一个基于Android平台的行车记录仪系统完整实现方案&#xff0c;面向移动开发初学者与Android应用实践者&#xff0c;解决普通用户利用闲置智能手机替代专用硬件实现行车视频录制与管理的需求。项目采用Java语言开发&#xff0c;基于ADT环境构建&#x…

作者头像 李华
网站建设 2026/8/31 6:46:35

本科不考研选嵌入式:就业前景、技术栈与学习路线全解析

本科工科生不考研直接就业&#xff0c;嵌入式方向到底是不是最优赛道&#xff1f;这个问题没有统一答案&#xff0c;但可以给一个明确判断标准&#xff1a;如果你动手能力强、喜欢看寄存器手册和波形图、对“代码控制硬件”这件事有正反馈&#xff0c;嵌入式是目前工科本科生就…

作者头像 李华
网站建设 2026/8/31 6:44:59

TVA-World驱动的具身智能仿真技术突破

前沿技术探索&#xff1a;TVA智能体&#xff08;简称TVA&#xff09;TVA智能体&#xff08;亦称“AI智能体视觉”或“TVA视觉智能体”&#xff09;是依托Transformer架构与“因式智能体”理论构建的通用视觉技术体系。它有机融合深度强化学习&#xff08;DRL&#xff09;、卷积…

作者头像 李华
网站建设 2026/8/31 6:42:42

TCN-BiGRU实现风电功率预测:MATLAB完整方案与代码

简介&#xff1a;本资源是一套面向计算机、电子信息工程及数学等专业本科生的风电功率预测实践方案&#xff0c;聚焦于利用多变量输入实现单步短期功率预测&#xff0c;解决风能并网中因间歇性带来的调度与稳定性难题。资源提供完整的Matlab实现代码&#xff08;适配2014a/2019…

作者头像 李华