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

article/2025/9/14 4:13:21

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

一、摘要
白盒测试是测试人员常用的一种测试方法,越来越受到测试工程师的重视。白盒测试并不是简单的按照代码测试用例而走,需要根据不同的测试需求,结合不同的测试对象,使用适合的方法进行测试。本文介绍六种白盒测试方法:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。

二、概述
白盒测试也称结构测试或逻辑驱动测试, 它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明 书的规定正常进行,检验程序中的每条通路是 否都能按预定要求正确工作。这一方法是把测试对象看作一个打开的盒子,测试人员依据 程序内部逻辑结构相关信息,设计或选择测试用例,对程序所有逻辑路径进行测试,通过在不同点检查程序的状态,确定实际的状态是否 与预期的状态一致。常崩的软件测试方法有两大类:静态测试方法和动态测试方法。其中 软件的静态测试不要求在计算机上实际执行 所测程序,主要以一些人工的模拟技术对软件 进行分析和测试-而软件的动态测试是通过输入一组预先按照一定的测试准则构造的实例数据来动态运行程序,而达到发现程序错误的 过程。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何 运作的。

三、白盒的测试用例需要做到

  1. 保证一个模块中的所有独立路径至少被使用一次
  2. 对所有逻辑值均需测试Lrue和false
  3. 在上下边界及可操作范围内运行所有循环
  4. 检查内部数据结构以确保其有效性

四、白盒测试的目标
通过检查软件内部的逻辑结构,对软件中的逻辑路径进行覆盖测试,在程序不同地方设立检查点,检查程序的状态,以确定实际运行 状态与预期状态是否一致。
下面这些规则也可以看作是测试的目标或定义:

  1. 测试是为了发现程序中的错误而执行 程序的过程,
  2. 好的测试方案是极可能发现迄今为止 尚未发现的错误的测试方案;
  3. 成功的测试是发现了至今为止尚未发 现的错误的损4试。

五、白盒测试的特点
依据软件设计说明书进行测试、对程序内部细节的严密检验、针对特定条件设计测 试用例、对软件的逻辑路径进行覆盖测试。是把测试对象看作一个打开的盒子,测试人员依据程序内部逻辑结构相关信息,设计或选择测 试用例,对程序所有逻辑路径进行测试,通过 在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。

六、白盒测试的实施步骤

  1. 测试计划阶段:根据需求说明书,制定测试进度;
  2. 测试设计阶段:依据程序设计说明书,按照一定规范化的方法进行软件结构划分和设计测试用例;
  3. 测试执行阶段:输入测试用例,得到测试结果;
  4. 测试总结阶段:对比测试的结果和代码的预期结果,分析错误原因,找到并解决错误。

七、白盒测试的方法
总体上分为静态方法和动态方法两大类。

静态分析是一种不通过执行程序而进行测试的技术。静态分析的关键功能是检查软件的表示和描述是否一致,没有冲突或者没有歧义。

动态分析的主要特点是当软件系统在模拟的或真实的环境中执行之前、之中和之后.,对软件系统行为的分析。动态分析包含了程 序在受控的环境下使用特定的期望结果进行正式的运行。它显示了一个系统在检查状态 下是正确还是不正确。在动态分析技术中,最 重要的技术是路径和分支测试。下面要介绍的六种覆盖测试方法属于动态分析方法。

八、白盒测试的优缺点
优点:使得测试人员去仔细思考软件的实现。可以检测代码中的每条分支和路径,能尽量揭示隐藏在代码中的错误,对代码的测试比较彻底。

缺点:昂贵、费时,很难检测代码中遗漏的路径和数据。

九、白盒测试的六种方法比较分析
在这里插入图片描述
1、语句覆盖
(1)主要特点
语句覆盖是最基本的结构覆盖要求,语句覆盖要求设计足够多的测试用 例,使得程序中每条语句至少被执行一次。

(2)用例设计
如果此时将A路径上的隐式语句l—Print去掉,那么用例如下👇

XY路径
15035OBDE
210040OBCE

(3)优点
可以很直观地从源代码得到测试用例,无须细分每条判定表达式。

(4)缺点
由于这种测试方法仅仅针对程序逻辑中显式存在的语句,但对于隐藏的条件和可能到达的隐式逻辑分支,是无法测试的。在本例中去掉了语句1一Print去掉,那么就少 了一条测试路径。在if结构中若源代码没有给出else后面的执行分支。那么语句覆盖测试就不会考虑这种情况。但是我们不能排除这种以外的分支不会被执行,而往往这种错误会经常出现。再如,在Do-While结构中,语句覆 盖执行其中某一个条件分支。那么显然,语句覆盖对于多分支的逻辑运算是无法全面反映 的,它只在乎运行一次,而不考虑其他情况。

2、判定覆盖
(1)主要特点
又称分支覆盖,设计若干个测试用例,运行所测程序,使程序中每个判断的取真分支和取假分支至少执行一次。即:程序中的每个分支至少执行一次。每个判断的取真、取假至少执行一次。

(2)用例设计

XY路径
1120120OAE
25035OBDE
310040OBCE

(3)优点
判定覆盖比语句覆盖要多几乎一倍的测试路径,当然也就具有比语句覆盖更强的测试能力。同样判定覆盖也具有和语句覆盖一样的简单性,无须细分每个判定就可以得到测试用例。
(4)缺点
往往大部分的判定语句是由多个逻辑条件组合而成(如:判定语句中包含AND、 OR、CASE)。若仅仅判断其整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径。

3、条件覆盖
(1)主要特点
条件覆盖要隶设计足够多的测试用例,使得判定中的每个条件获得各种可能的结果,即每个条件至少有一次为真值,有一次为假值。

(2)用例设计

XY路径
110040OBCE
25035OBDE

(3)优点
显然条件覆盖比判定覆盖,增加了对符合判定情况的测试,增加了测试路径。

(3)缺点
要达到条件覆盖,需要足够多的测试用例,但条件覆盖并不能保证判定覆盖。条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。

4、判定/条件覆盖
(1)主要特点:设计足够多的测试用例,使得判定中每个条件的所有可能结果至少出现一次,每个判定本身所有可能结果也至少出现一次。

(2)用例设计

XY路径
1120120OAE
25035OBDE
310040OBCE
47090OBCE

(3)优点
判定/条件覆盖满足判定覆盖准则和条件覆盖准则,弥补了二者的不足。

(4)缺点
判定/条件覆盖准则的缺点是未考虑条件的组合情况。

5、组合覆盖
(1)主要特点
要求设计足够多的测试用例,使得每个判定种条件结果的所有可能组合至少出现一次。

(2)用例测试

XY路径
1120120OAE
210040OBCE
35035OBDE
47090OBCE
53590OBDE
67075OBDE
76060OBDE

(3)优点
多重条件覆盖准则满足判定覆盖、条件覆盖和判定/条件覆盖准则。更改的判定/条件覆盖要求设计足够多的测试用例,使得判定中每个条件的所有可能结果至少出现一次。每个判定本身的所有可能结果也至少出现一次,并且每个条件都显示能单独影响判定结呆。

(4)缺点
线性地增加了测试用例的数量。

6、路径覆盖
(1)主要特点
设计足够的测试用例,覆盖程序中所有可能的路径。

(2)用例设计

XY路径
1120120OAE
25050OBDE
310040OBCE
440100OBCE

(3)优点
这种测试方法可以对程序进行彻底的测试,比前面五种的覆盖面都广。

(4)缺点
由于路径覆盖需要对所有可能的路径进行测试(包括循环,条件组合.分支 选择等).那么需要设计大量、复杂的测试用例,使得工作量呈指数级增长。而在有些情况下,一些执行路是不可能被执行的,如:
If(!flag)x++;
If(!flag)y–;
这两个语句实际只包括了2条执行路径,即flag为真或假时候对x和y的处理,真或假不可能都存在,而路径覆盖测试认为是包含了真与假的4条执行路径。这样不仅降低了测试效率,而且大量的测试结果的累积,也为排错带来麻烦。


http://chatgpt.dhexx.cn/article/0v63pR3b.shtml

相关文章

白盒测试的各种方法

文章目录 一、逻辑测试法设计测试用例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…

hikaricp mysql_HikariCP

软件简介 HikariCP 是一个高性能的 JDBC 连接池组件。下图是性能的比较测试结果&#xff1a; 使用方法&#xff1a; HikariConfig config new HikariConfig(); config.setMaximumPoolSize(100); config.setDataSourceClassName("com.mysql.jdbc.jdbc2.optional.MysqlData…

数据库连接池HikariCP

HikariCP 现在已经有很多公司在使用HikariCP了&#xff0c;HikariCP还成为了SpringBoot默认的连接池&#xff0c;伴随着SpringBoot和微服务&#xff0c;HikariCP 必将迎来广泛的普及。 下面带大家从源码角度分析一下HikariCP为什么能够被Spring Boot 青睐&#xff0c;文章目录…

HikariCP 了解一下

作者 | 黄永灿 后端开发攻城狮&#xff0c;关注服务端技术与性能优化。 前言 在我们的工作中&#xff0c;免不了要和数据库打交道&#xff0c;而要想和数据库打好交道&#xff0c;选择一款合适的数据库连接池就至关重要&#xff0c;目前业界广为人知的数据库连接池有 Tomcat JD…

离线数仓-03-数仓系统搭建(ODS,DIM,DWD,DWS,ADS)

文章目录 数仓分层为什么要分层数据运营层&#xff1a;ODS&#xff08;Operational Data Store&#xff09;数据仓库层&#xff1a;DW&#xff08;Data Warehouse&#xff09;维表层&#xff1a;DIM&#xff08;Dimension&#xff09;数据明细层&#xff1a;DWD&#xff08;Dat…

数仓数据分层(ODS DWD DWS ADS)换个角度看

数仓数据分层简介 1. 背景 数仓是什么, 其实就是存储数据,体现历史变化的一个数据仓库. 因为互联网时代到来,基于数据量的大小,分为了传统数仓和现代数仓.传统数仓,使用传统的关系型数据库进行数据存储,因为关系型数据库本身可以使用SQL以及函数等做数据分析.所以把数据存储和…

湖仓一体电商项目(十):业务实现之编写写入DWD层业务代码

文章目录 业务实现之编写写入DWD层业务代码 一、代码编写

【实时数仓】CDC简介、实现DWD层业务数据的处理(主要任务、接收kafka数据、动态分流*****)

文章目录 一 CDC简介1 什么是CDC2 CDC的种类3 Flink-CDC 二 准备业务数据-DWD层1 主要任务&#xff08;1&#xff09;接收Kafka数据&#xff0c;过滤空值数据&#xff08;2&#xff09;实现动态分流功能&#xff08;3&#xff09;把分好的流保存到对应表、主题中 2 接收Kafka数…