怎么做好白盒测试?


白盒测试

一、什么是白盒测试?

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

二、白盒测试特点

优点:

  • 代码覆盖率高

缺点:

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

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

三、白盒测试的设计方法

静态

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




四、总结

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

相关推荐
SimonKing5 分钟前
你的IDEA还缺什么?我离不开的这两款效率插件推荐
java·后端·程序员
better_liang12 分钟前
每日Java面试场景题知识点之-数据库连接池配置优化
java·性能优化·面试题·hikaricp·数据库连接池·企业级开发
Wpa.wk18 分钟前
自动化测试环境配置-java+python
java·开发语言·python·测试工具·自动化
w***42424 分钟前
springboot使用logback自定义日志
java·spring boot·logback
带刺的坐椅25 分钟前
AI 应用工作流:LangGraph 和 Solon AI Flow,我该选谁?
java·python·ai·solon·flow·langgraph
北郭guo27 分钟前
MyBatis框架讲解,工作原理、核心内容、如何实现【从浅入深】让你看完这篇文档对于MyBatis的理解更加深入
java·数据库·mybatis
庄宿正28 分钟前
【Vue2+SpringBoot+SM2】Vue2 + Spring Boot 实现 SM2 双向非对称加密完整实战
java·spring boot·后端
Predestination王瀞潞32 分钟前
Java EE开发技术(第七章:JSTL标签库)
java·java-ee
信仰_27399324336 分钟前
Java面试题
java·开发语言