怎么做好白盒测试?


白盒测试

一、什么是白盒测试?

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

二、白盒测试特点

优点:

  • 代码覆盖率高

缺点:

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

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

三、白盒测试的设计方法

静态

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




四、总结

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

相关推荐
Y编程小白38 分钟前
PostgreSQL在Linux中的部署和安装教程
数据库·postgresql
未来之窗软件服务1 小时前
自己写算法(九)网页数字动画函数——东方仙盟化神期
前端·javascript·算法·仙盟创梦ide·东方仙盟·东方仙盟算法
程序员小凯1 小时前
Spring Boot测试框架详解
java·spring boot·后端
豐儀麟阁贵1 小时前
基本数据类型
java·算法
_extraordinary_2 小时前
Java SpringMVC(二) --- 响应,综合性练习
java·开发语言
程序员 Harry2 小时前
深度解析:使用ZIP流式读取大型PPTX文件的最佳实践
java
TiAmo zhang3 小时前
SQL Server 2019实验 │ 数据库和表的创建、修改与删除
数据库·oracle
wxweven3 小时前
校招面试官揭秘:我们到底在寻找什么样的技术人才?
java·面试·校招
乐迪信息3 小时前
乐迪信息:基于AI算法的煤矿作业人员安全规范智能监测与预警系统
大数据·人工智能·算法·安全·视觉检测·推荐算法
闲人编程3 小时前
从多个数据源(CSV, Excel, SQL)自动整合数据
python·mysql·数据分析·csv·存储·数据源·codecapsule