白盒测试怎么做?

article/2025/9/14 12:15:34

目录

前言

一、什么是白盒测试

二、白盒测试的分类

三、白盒测试的设计方法

四、白盒测试静态方法

五、白盒测试动态方法

六、白盒测试的特点

 七、总结


前言

在企业内部,软件测试工程师基本处于“双高”地位,即地位高、待遇高。可以说他们的职业前景非常广阔,从近期的企业人才需求和薪金水平来看,
软件测试工程师的年工资有逐年上升的明显迹象。测试工程师这个职位必将成为IT就业的新亮点。

一、什么是白盒测试

白盒测试又称结构测试逻辑驱动测试基于代码的测试

白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,即清楚盒子内部的东西以及里面是如何运作的。

"白盒"法需要测试者了解程序内部逻辑结构,对所有逻辑路径进行测试,也就是说,"白盒"法是“穷举路径测试”。

二、白盒测试的分类

总体上分为静态分析动态分析两大类。

静态分析:不需要执行程序,就可以进行的测试,例如:代码审查、代码扫描

动态分析:需要执行程序,才可以进行的测试,例如:单元测试覆盖测试

三、白盒测试的设计方法

四、白盒测试静态方法

静态方法关注代码是否符合已制定的编码规范、发现潜在的bug或漏洞,更强调开发人员的参与。或者直接交给自动化代码检查工具去做,如SonarQube等

如何开展静态方法。

五、白盒测试动态方法

动态方法是白盒测试人员主要参与的环节。

1、逻辑覆盖法

原则:以程序内部的逻辑结构为基础设计测试用例。

逻辑覆盖包括语句覆盖判定覆盖条件覆盖、判定/条件覆盖条件组合覆盖路径覆盖。

以上六种覆盖标准发现错误的能力呈由弱到强变化:

  1. 语句覆盖每条语句至少执行一次。
  2. 判定覆盖每个判定的每个分支至少执行一次。
  3. 条件覆盖每个判定的每个条件应取到各种可能的值。
  4. 判定条件覆盖同时满足判定覆盖条件覆盖。
  5. 条件组合覆盖每个判定中各条件的每一种组合至少出现一次。
  6. 路径覆盖使程序中每一条可能的路径至少执行一次。

之所以六种覆盖标准发现错误的能力有差异,是因为使用每种覆盖标准所设计的测试用例对程序内部逻辑的覆盖率不同。

覆盖率是什么?

覆盖率是用来度量测试完整性的一个指标。

以下图的示例代码为例,分别说明每种覆盖标准的测试覆盖率。

1.1、语句覆盖(SC)

语句覆盖:设计足够多的测试用例,使得运行这些测试用例时,被测程序的每一个语句至少执行一次,其覆盖标准无法发现运算中的逻辑关系错误

示例代码中共有4条可执行语句

设计测试用例执行了3条,语句覆盖率为3/4=75%

1.2、判定覆盖(DC)

判定覆盖:设计足够多的测试用例,使得程序中的每一个判断至少获得一次“真”和一次“假”,即使得程序流程图中的每一个真假分支至少被执行一次

但若程序中的判定是有几个条件联合构成时,未必能发现每个条件的错误。

1.3、条件覆盖(CC)

条件覆盖:设计足够多的测试用例,使得运行这些测试用例时,使得判定中的每个条件至少有一次取真值,有一次取假值

但未必能覆盖全部分支。

案例代码中有判定2个,条件3个,条件结果6个

设计测试用例执行了5个条件结果,条件覆盖率为5/6=83%

1.4、判定/条件覆盖(DCC)

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

即同时满足100%判定覆盖100%条件覆盖的标准。

示例代码中有判定2个,条件3个,判定结果4个,条件结果6个

设计测试用例执行了3个判定结果,5个条件结果,判定条件覆盖率为:(3+5)/(4+6)=80%

1.5、条件组合覆盖(BCCC)

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

显然,满足“条件组合覆盖”的测试用例是一定满足“判定覆盖”、“条件覆盖”和“判定/条件覆盖”的。

示例代码中有判定2个,条件3个(判定1有2个条件,判定2有1个条件),判定1的条件组合为4个,判定2的条件组合为2个

设计测试用例执行了5个条件组合,条件组合覆盖率为:5/(4+2)=83%

 

1.6、路径覆盖

路径覆盖:设计足够多的测试用例,覆盖被测试程序中的所有可能路径,是最强的覆盖准则。

案例代码中共有4条路径

设计测试用例执行了3条路径,路径覆盖率为3/4=75%

2、基本路径测试法

理想情况下,路径覆盖需要覆盖程序中所有可能的路径。但在路径数目很大时,真正做到完全覆盖是很困难的,

必须把覆盖路径数目压缩到一定限度。例如程序中的循环体只执行一次

所以,基本路径测试法可以理解为压缩后的路径覆盖。

基本路径测试法如何操作?

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

程序的控制流图:描述程序控制流的一种图示方法

程序环路复杂度:McCabe复杂性度量。从程序的环路复杂性可导出程序基本路径集合中的独立路径条数。

导出测试用例:根据圈复杂度和程序结构设计用例数据输入和预期结果。

准备测试用例:确保基本路径集中的每一条路径的执行。

六、白盒测试的特点

1. 优点

  • 可以检测代码中的每条分支和路径
  • 揭示隐藏在代码中的错误
  • 对代码的测试比较彻底
  • 让软件最优化

2. 缺点

  • 投入成本高昂
  • 覆盖所有代码路径难度大
  • 不能替代集成测试 

 七、总结


希望所有看到这里的小伙伴都能再坚持坚持,至于压力,一般来自三个方面:行业变化带来的职业危机压力;公司团队带来的工作任务压力;自身成长带俩的能力恐慌压力。而能力成长带来的压力是始终存在的。任何工作都是一样,干一行爱一行,既然选择了你就应该去努力提升自己的实力来把压力值降到最低。

衷心感谢每一个认真阅读我文章的人


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

相关文章

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 (二选一) 在Springboot 自动装配,或使用Mysql DataSource 情况下 请使用jdbcUrl。其他情况,HikariCP建议使用DataSourceClassName dataSourceClassName :意思是JDBC驱动…

HikariCP 创建连接

PoolEntry PoolEntry 是 HikariCP 中对数据库物理连接的封装。 那我们现在探索问题的关键点就是: PoolEntry.connection 是如何创建的;连接是何时创建的; 我们先看下 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文件的内容都是从前一个项目中复制的,并没有认真分析一下各种依赖的关系,有时候重复的问题会出现好多次,比如说连接数据库报错,有时候配置没有问题,可能是依赖的jar包的问题&#xf…

HikariCP数据库连接池详解

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

hikaricp mysql_HikariCP数据库连接池

摘要: 原创出处 hacpai.com/article/1582096971127 「jianzh5」欢迎转载,保留摘要,谢谢! 什么是数据库连接池: 连接池是一种常用的技术,为什么需要连接池呢?这个需要从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数…

数仓开发之DWD层(二)

目录 三&#xff1a;流量域用户跳出事务事实表 3.1 主要任务 3.2 思路分析 3.3 图解 3.4 代码 四&#xff1a;交易域加购事务事实表 4.1 主要任务 4.2 思路分析 4.3 图解 4.4 代码 三&#xff1a;流量域用户跳出事务事实表 3.1 主要任务 过滤用户跳出明细数据。 3.2 思…

电商数仓(dwd 层)

一、dwd 层介绍 1、对用户行为数据解析。 2、对核心数据进行判空过滤。 3、对业务数据采用维度模型重新建模&#xff0c;即维度退化。 二、dwd 层用户行为数据 2.1 用户行为启动表 dwd_start_log 1、数据来源 ods_start_log -> dwd_start_log 2、表的创建 drop table…