软件测试——白盒测试

article/2025/9/14 11:37:39

目录

1.什么是白盒测试

 1.1 白盒测试优缺点

2.白盒测试方法

2.1 静态

2.2 动态

2.2.1 语句覆盖

2.2.2 判断覆盖

2.2.3 条件覆盖

2.2.4 判定条件覆盖

2.2.5 条件组合覆盖

2.2.6 路径覆盖

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


1.什么是白盒测试

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

 1.1 白盒测试优缺点

优点:代码覆盖率高

缺点:覆盖所有代码路径难度大

           业务功能可能覆盖不全

           测试开销大

2.白盒测试方法

2.1 (先)静态

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

2.2 动态

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

下方都以这个案例为练习

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

2.2.1 语句覆盖

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

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

举个案例:

这个案例语句覆盖率是百分百的。

但是当把判断条件从if(x>0 && y>0)变成if(x>0 || y>0)时,

会发现这个数据同样适合逻辑覆盖标准,但显然,这样是不正确的。

2.2.2 判断覆盖

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

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

举个案例:

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

这个案例判断覆盖率是百分百的。

但是当把判断条件从if(x>0 && y>0)变成if(x>0 || y>0)时,

也会发现这个数据同样适合逻辑覆盖标准,但显然,这样也是不正确的。

2.2.3 条件覆盖

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

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

举个案例:

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

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

这个案例条件覆盖率是百分百的。

但是会发现,P1都是F、F,P1为真是没有被覆盖到的

所以条件覆盖不能保证判定覆盖

2.2.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)时,

也会发现这个数据同样适合逻辑覆盖标准,但显然,这样是不正确的。

2.2.5 条件组合覆盖

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

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

举个案例:

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

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

条件组合覆盖能够满足语句覆盖、判定覆盖、条件覆盖、判定条件覆盖

但是条件组合覆盖不能保证所有路径被执行。

2.2.6 路径覆盖

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

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

举个案例:

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

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

仔细看出C2为假是没有被覆盖的

路径覆盖可以对程序进行彻底的测试,比前面五种覆盖更广。

但是满足路径覆盖,并不一定能满足条件覆盖,也就不能满足条件组合覆盖

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

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


http://chatgpt.dhexx.cn/article/f1N6RuwV.shtml

相关文章

白盒测试中的几种覆盖方法

​ ​白盒测试用例设计的一个很重要的评估标准就是对代码的覆盖度。一说到覆盖&#xff0c;大家都感觉非常熟悉&#xff0c;但是常见的覆盖都有哪些&#xff1f;各自有什么优缺点&#xff1f;在白盒测试的用例设计中我们应该如何自如地运用呢&#xff1f;今天小编就为大家总…

「软件测试4」一文详解四大典型的白盒测试方法

软件测试——详解白盒测试基本概念&#xff0c;四种白盒测试方法 这是我参与更文挑战的第3天&#xff0c;活动详情查看&#xff1a;更文挑战 在上一篇文章中&#xff0c;我们讲到了黑盒测试。黑盒测试相较于白盒测试来说比较简单&#xff0c;不需要了解程序内部的代码&#x…

白盒测试方法 + 实战

定义 白盒测试又称结构测试,透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法&#xff0c;白盒指的是程序的内部结构和运作机制是可见的。    目的   通过检查软件内部的逻辑结构&#xff0c;对软件中的逻辑路径进行覆盖测试&#xff1b;在程序…

白盒测试的方法笔记

白盒测试的方法笔记 一、概述&#xff1a;二、方法2.1 语句覆盖&#xff1a;2.2 判定覆盖2.3 条件覆盖2.4 判定条件覆盖2.5 条件组合覆盖2.6 路径覆盖2.7、逻辑覆盖总结 一、概述&#xff1a; 白盒测试也称结构测试或逻辑驱动测试&#xff0c;是针对被测单元内部是如何进行工作…

白盒测试的概念、目的是什么?及主要方法有哪些?

目录 1 白盒测试的概念 2 白盒测试的主要目的 3 测试覆盖标准 4 白盒测试的主要方法 4.1 逻辑驱动测试 4.1.1 语句覆盖 4.1.2 判定覆盖&#xff08;分支覆盖&#xff09; 4.1.3 条件覆盖 4.1.4 判定/条件覆盖 4.1.5 条件组合覆盖 4.1.6 黑盒法补充测试用例 4.2 路径…

白盒测试方法

一、概述&#xff1a; 白盒测试也称结构测试或逻辑驱动测试&#xff0c;是针对被测单元内部是如何进行工作的测试。它根据程序的控制结构设计测试用例&#xff0c;主要用于软件或程序验证。 白盒测试法检查程序内部逻辑结构&#xff0c;对所有逻辑路径进行测试&#xff0c;是…

软件测试笔记(四):白盒测试

1 白盒测试 白盒测试是对软件的过程性细节做细致的检查&#xff0c;把测试对象看作是一个打开的盒子&#xff0c;允许测试人员利用程序内部的逻辑结构以及有关信息&#xff0c;设计或选择测试用例&#xff0c;对程序所有逻辑路径进行测试。通过在不同点检查程序状态&#xff0…

白盒测试方法|白盒测试的六种方法比较分析

白盒测试的六种方法比较分析 一、摘要 白盒测试是测试人员常用的一种测试方法&#xff0c;越来越受到测试工程师的重视。白盒测试并不是简单的按照代码测试用例而走&#xff0c;需要根据不同的测试需求&#xff0c;结合不同的测试对象&#xff0c;使用适合的方法进行测试。本文…

白盒测试的各种方法

文章目录 一、逻辑测试法设计测试用例1.1语句覆盖1.2判定覆盖1.3条件覆盖1.4判断、条件覆盖&#xff08;CDC&#xff09;1.5条件组合覆盖&#xff08;MCC&#xff09; 二、基本路径测试法2.1定义&#xff1a;2.2程序控制流图 白盒测试又叫架构测试 语句覆盖<条件覆盖<判定…

白盒测试怎么做?

目录 前言 一、什么是白盒测试 二、白盒测试的分类 三、白盒测试的设计方法 四、白盒测试静态方法 五、白盒测试动态方法 六、白盒测试的特点 七、总结 前言 在企业内部&#xff0c;软件测试工程师基本处于“双高”地位&#xff0c;即地位高、待遇高。可以说他们的职业…

SpringBoot 默认数据库连接池 HikariCP

目录 引言 1、问题描述 2、SpringBoot默认的数据库连接池 3、HikariCP是什么 4、测试依赖 5、配置文件 5.1、数据库连接参数 5.2、连接池数据基本参数 5.3、连接检查参数 5.4、事务相关参数 5.5、JMX参数 6、HikariCP源码浅析 6.1、HikariConfig--连接池配置的加载…

HikariCP配置手册

必须配置 1、dataSourceClassName或者jdbcUrl &#xff08;二选一&#xff09; 在Springboot 自动装配&#xff0c;或使用Mysql DataSource 情况下 请使用jdbcUrl。其他情况&#xff0c;HikariCP建议使用DataSourceClassName dataSourceClassName &#xff1a;意思是JDBC驱动…

HikariCP 创建连接

PoolEntry PoolEntry 是 HikariCP 中对数据库物理连接的封装。 那我们现在探索问题的关键点就是&#xff1a; PoolEntry.connection 是如何创建的&#xff1b;连接是何时创建的&#xff1b; 我们先看下 HikariCP 中数据源、连接、连接池之间的关系。 创建连接 连接池的初…

hikaricp mysql_配置HikariCP连接池

配置HikariCP连接池 数据库配置 spring.datasource.driver-class-namecom.mysql.jdbc.Driver 指定 spring 连接数据源驱动 spring.datasource.typecom.zaxxer.hikari.HikariDataSource 指定 spring 连接数据源类型 spring.datasource.urljdbc:mysql:///dbgoods?serverTimezone…

HikariCP连接池

背景 自己在写点代码的时候之前pom文件的内容都是从前一个项目中复制的&#xff0c;并没有认真分析一下各种依赖的关系&#xff0c;有时候重复的问题会出现好多次&#xff0c;比如说连接数据库报错&#xff0c;有时候配置没有问题&#xff0c;可能是依赖的jar包的问题&#xf…

HikariCP数据库连接池详解

HikariCP数据库连接池详解 1. 数据库连接池概述2. 为什么需要连接池3. HikariCP概述4. HikariCP特点5. HikariCP配置6. HikariCP案例验证 1. 数据库连接池概述 连接池是一种常用的技术&#xff0c;为什么需要连接池呢&#xff1f; 这个需要从TCP说起。假如我们的服务器跟数据库…

hikaricp mysql_HikariCP数据库连接池

摘要: 原创出处 hacpai.com/article/1582096971127 「jianzh5」欢迎转载&#xff0c;保留摘要&#xff0c;谢谢&#xff01; 什么是数据库连接池&#xff1a; 连接池是一种常用的技术&#xff0c;为什么需要连接池呢&#xff1f;这个需要从TCP说起。假如我们的服务器跟数据库没…

hikaricp使用

hikaricp数据库连接池是目前很流行的数据源 1.需要引入mysql的驱动、hikaricp依赖 <properties><java.version>1.8</java.version><hikari.version>2.7.9</hikari.version><mysql.version>8.0.13</mysql.version></properties&g…

自定义HikariCP连接池

文章目录 一、简介1、概述2、地址 二、配置参数1、Hikari原生参数2、Springboot中参数 三、springboot中使用四、自定义数据源1、各模块2、完整代码3、多数据源 五、多数据源dynamic中使用1、简介2、引入依赖3、参数配置 六、XMind整理 一、简介 1、概述 官方解释&#xff1a…

HikariCP源码分析

文章目录 1. 基本用法1.1 添加依赖1.2 创建DataSource1.3 获取连接 2. 源码分析2.1 API2.2 Pool2.2.1 获取连接2.2.2 添加连接2.2.3 维护连接 2.3 metrics2.3.1 dropwizard2.3.2 prometheus 3. 最佳实践 HikariCP是一个快速&#xff0c;简单可靠的JDBC连接池&#xff0c;Spring…