白盒测试详解:如何进行代码级别的检测?

01、什么是白盒测试

白盒测试也称结构测试,透明盒测试。主要用于单元测试阶段,代码和逻辑的测试,重点复杂的测试,是一种测试用例设计方法,不同于黑盒测试,白盒测试是可以看到内部代码如何运作的,可通过测试来检测产品内部是否符合规定正常运行。

优点:

代码覆盖率高

缺点:

覆盖所有代码路径难度大

业务功能可能覆盖不全

测试开销大

02、白盒测试方法

(先)静态

桌面检查、代码审查、代码走查、代码扫描工具

动态

逻辑覆盖法:

通过对程序逻辑结构的遍历实现程序的覆盖

下方都以这个案例为练习

首先:要画出流程图,比较好理解

1、语句覆盖

语句覆盖:设计测试用例,使得程序中每条语句至少被执行一次

语句覆盖率 = 被执行过的语句数量/可执行的语句总数

举个案例:

这个案例语句覆盖率是百分百的。但是当把判断条件从if(x>0 && y>0)变成if(x>0 || y>0)时,会发现这个数据同样适合逻辑覆盖标准,但显然,这样是不正确的。

2、判断覆盖

判断覆盖:也叫分支覆盖,设计测试用例,使得程序中的每个判断的"真"和"假"都至少被执行一次

判断覆盖率 = 每个判定的真假值至少出现一次/判断结果的总数

举个案例:

将两个判定 if(x>0 && y>0)和if(magic<0) 分别定义为P1、P2

这个案例判断覆盖率是百分百的。但是当把判断条件从if(x>0 && y>0)变成if(x>0 || y>0)时,也会发现这个数据同样适合逻辑覆盖标准,但显然,这样也是不正确的。

3、条件覆盖

条件覆盖:设计测试用例,使得判定中的每个条件至少有一次取真值,有一次取假值

条件覆盖率 = 每个条件的真价值至少出现一次/条件结果的总数(条件结果 = 判断数 * 条件数)

举个案例:

将if(x>0 && y>0)和if(magic<0) 分别定义为P1、P2

将x>0、y>0、magic<0 分别定义为C1、C2、C3

这个案例条件覆盖率是百分百的。但是会发现,P1都是F、F,P1为真是没有被覆盖到的所以条件覆盖不能保证判定覆盖

4、判定条件覆盖

判定条件覆盖:

设计测试用例,使得被测程序中的每个判断本身的判定结果(真假)至少满足一次,每个逻辑条件的可能值也至少被满足一次。就是既满足判断覆盖,也满足条件覆盖。

判断条件覆盖率 =每个判断真假值和条件真假值至少出现一次/(判断结果的总数 + 条件结果的总数)

举个案例:

将if(x>0 && y>0)和if(magic<0) 分别定义为P1、P2

将x>0、y>0、magic<0 分别定义为C1、C2、C3

这个案例判断条件覆盖率是百分百的。但是当把判断条件从if(x>0 && y>0)变成if(x>0 || y>0)时,也会发现这个数据同样适合逻辑覆盖标准,但显然,这样是不正确的。

5、条件组合覆盖

条件组合覆盖:设计测试用例,使得被测程序中的每个判定中条件结果的所有可能组合至少执行一次

条件组合覆盖率 = 条件组合至少出现一次的数量/条件组合的总数

举个案例:

将if(x>0 && y>0)和if(magic<0) 分别定义为P1、P2

将x>0、y>0、magic<0 分别定义为C1、C2、C3

条件组合覆盖能够满足语句覆盖、判定覆盖、条件覆盖、判定条件覆盖,但是条件组合覆盖不能保证所有路径被执行。

6、路径覆盖

路径覆盖:设计测试用例,覆盖程序中所有可能的路径

路径覆盖率 = 至少被执行过一次的路径数/总的路径数

举个案例:

将if(x>0 && y>0)和if(magic<0) 分别定义为P1、P2

将x>0、y>0、magic<0 分别定义为C1、C2、C3

仔细看出C2为假是没有被覆盖的,路径覆盖可以对程序进行彻底的测试,比前面五种覆盖更广。但是满足路径覆盖,并不一定能满足条件覆盖,也就不能满足条件组合覆盖

7、基本路径测试法(最常使用)

基本路径测试法:

在程序控制流图的基础上,通过分析程序的环路复杂性,导出基本可执行路径集合,从而设计测试用例

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

软件测试面试小程序

被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!

涵盖以下这些面试题板块:

1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux

6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

相关推荐
HPC_fac1305206781620 分钟前
科研深度学习:如何精选GPU以优化服务器性能
服务器·人工智能·深度学习·神经网络·机器学习·数据挖掘·gpu算力
sun0077007 小时前
ubuntu dpkg 删除安装包
运维·服务器·ubuntu
oi777 小时前
使用itextpdf进行pdf模版填充中文文本时部分字不显示问题
java·服务器
吃肉不能购9 小时前
Label-studio-ml-backend 和YOLOV8 YOLO11自动化标注,目标检测,实例分割,图像分类,关键点估计,视频跟踪
运维·yolo·自动化
学Linux的语莫9 小时前
Ansible使用简介和基础使用
linux·运维·服务器·nginx·云计算·ansible
qq_312920119 小时前
docker 部署 kvm 图形化管理工具 WebVirtMgr
运维·docker·容器
Onlooker1299 小时前
云服务器部署WebSocket项目
服务器
学Linux的语莫9 小时前
搭建服务器VPN,Linux客户端连接WireGuard,Windows客户端连接WireGuard
linux·运维·服务器
legend_jz9 小时前
【Linux】线程控制
linux·服务器·开发语言·c++·笔记·学习·学习方法