news 2026/2/16 22:01:45

白盒测试知识详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
白盒测试知识详解

🍅点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快

白盒测试

白盒测试(White Box Testing)又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试只测试软件产品的内部结构和处理过程,而不测试软件产品的功能,用于纠正软件系统在描述、表示和规格上的错误,是进一步测试的前提。

白盒测试遵循的四大原则:

  1. 保证一个模块中所有路径至少被测试一次;
  2. 所有逻辑值都要测试真(true)和假(false)两种情况
  3. 检查程序的内部数据结构是否有效;
  4. 检查上、下边界及可操作范围内运行所有循环

静态白盒测试

白盒测试分静态和动态两种,静态测试是指不运行程序,通过人工对程序和文档进行分析与检查。下面是静态白盒测试检查的故障模式。

  1. 内存泄漏的故障(Memory Leak Fault, MLF)
  2. 数组越界故障的故障(Out of Bounds Array Access Fault OBAF)
  3. 使用未初始化变量故障(Uninitialized Variable Fault,UVF)
  4. 空指针使用故障(NULL Pointer Dereference Fault NPDF)
  5. 非法计算类故障(Illegal Computing Fault ILCF)
  6. 死循环结构(Dead Loop Fault DLF)
  7. 资源泄漏(RLF)
  8. 并发故障 (Concurrency Fault)
  9. 安全漏洞故障
  10. 疑问代码故障
  11. 简单来说,静态白盒测试就是看代码找bug

动态白盒测试

白盒测试分静态和动态两种,动态测试是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率和健壮性等性能。

动态白盒测试流程:

  1. 选取定义域有效值,或定义域外无效值;(等价类划分思想)
  2. 已选取值决定预期的结果;
  3. 用选取值执行程序;
  4. 执行结果与对已选取值决定预期的结果对比,不吻合程序有错

逻辑覆盖测试

为了满足白盒测试的四大原则,需要使用逻辑覆盖测试法来设计测试用例。逻辑覆盖测试是以程序内部的逻辑结构为基础设计测试用例的方法,首先需要就行代码的结构分析,绘制流程图。

代码如图所示:

对应结构图如下:

注意:圆圈中的数字代表代码的行数

之后进行逻辑覆盖,由于覆盖测试的目标不同,逻辑覆盖又可分为:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。


从表中的介绍可知,从上到下,该方法覆盖的路径越多。其他方法覆盖的路径不全面,那为什么不直接使用路径覆盖?这是由于如果程序中出现了多个判断和多个循环,可能的路径数目将会急剧增长,以至实现路径覆盖不可能。

为了解决上面的问题,出现了基本路径覆盖,它在程序控制流图的基础上,通过分析程序控制流图的环路复杂性,导出基本可执行路径(独立路径)的集合,然后据此设计测试用例。

各个覆盖方法的优缺点:

在实际测试中,即使对于路径数很有限的程序已经做到路径覆盖,仍然不能保证被测试程序的正确性,还需要采用其他测试方法进行补充。

数据流测试

数据流测试分析常常集中于定义/引用异常的缺陷,用于如下三方面测试。

  1. 变量被定义,但是从来没有使用(引用)
  2. 所使用的变量没有被定义
  3. 变量在使用之前被定义两次

早期的数据流测试主要用于检测程序编写时出现的一些警告信息,如“所定义的变量未被使用等”问题,这些问题光靠简单的语法分析器或者是语义分析器是无法检测出来的。

程序插桩

在程序的特定部位插入记录动态特性的语句,最终是为了把程序执行过程中发生的一些重要的历史事件记录下来。例如,记录在程序执行过程中某些变量值的变化情况,变化的范围等。这些插入的语句常常被称为“探测器”或者“探测点”。

总结

白盒测试方法基于被测程序的源代码开发测试用例。常见的白盒测试方法有逻辑覆盖、数据流测试、路径分析以及程序插装等。

逻辑覆盖以程序内部的逻辑结构为基础设计测试用例,要求对被测程序的结构作到一定程度的覆盖,如语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖及路径覆盖。路径覆盖是最强的逻辑覆盖准则,实际上我们只能有选择地测试程序中某些有代表的性路径。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

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

个性化定制:根据用户特征调整AI Agent

个性化定制:根据用户特征调整AI Agent 关键词:个性化定制、用户特征、AI Agent、特征分析、调整策略 摘要:本文围绕如何根据用户特征对AI Agent进行个性化定制展开深入探讨。首先介绍了相关背景知识,包括目的范围、预期读者等内容。接着阐述了核心概念与联系,给出了清晰的…

作者头像 李华
网站建设 2026/2/16 2:12:05

闲鱼商品详情API接口基础架构解析

闲鱼商品详情 API 接口,是面向开发者或合作方提供闲鱼平台商品详情数据的标准化接口,其架构设计围绕数据安全、权限管控、高并发支撑、数据标准化四大核心目标展开,整体遵循分层架构设计思路,同时适配闲鱼 C2C(个人对个…

作者头像 李华
网站建设 2026/2/8 4:01:56

软件测试要学习的基础知识——白盒测试

白 盒 测 试白盒测试是通过检查软件内部的逻辑结构,对软件中的逻辑路径进行覆盖测试,以确定实际运行状态与预期状态是否一致。白盒测试又被称为:透明盒测试结构化测试逻辑驱动测试基于代码的测试白盒测试的常用技术分类一、静态分析&#xff…

作者头像 李华
网站建设 2026/2/16 14:07:37

教育创新篇:构建面向AI搜索时代的GEO人才培养新体系

引言:教育转型的紧迫性——当传统课程遭遇技术革命随着地理空间智能与AI搜索技术的深度融合,传统的地理信息科学(GIS)教育体系正面临着前所未有的挑战。据行业调查显示,超过60%的GIS专业毕业生在就业后需要额外投入6-1…

作者头像 李华
网站建设 2026/2/13 18:55:26

论文降重工具该如何选择?针对知网AIGC检测高AI率的终极指南

"## 在高校写论文的过程中,面对知网及其他AIGC检测平台对论文AI率的严格把控,许多同学感受到论文降重的巨大压力。本文基于真实体验分享,详细介绍论文降AI率的难题与解决方案,重点评测了两款优质降AI工具——【嘎嘎降AI】和…

作者头像 李华
网站建设 2026/2/12 4:26:55

网络安全从入门到精通:体系化梳理核心基础与技术原理脉络

什么是网络安全 采取必要措施,来防范对网络的攻击,侵入,干扰,破坏和非法使用,以及防范一些意外事故,使得网络处于稳定可靠运行的状态,保障网络数据的完整性、保密性、可用性的能力(CIA)。 举例…

作者头像 李华