【软件测试】软件测试方法之黑盒测试方法和白盒测试

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

白盒测试方法

一、概念
白盒测试也称结构测试逻辑驱动测试,是针对被测单元内部是如何进行工作的测试。它根据程序的控制结构设计测试用例,主要用于软件或程序验证。它可以形象得用下图表示:
在这里插入图片描述

二、白盒测试方法应该遵循的原则

  • 保证一个模块中的所有独立路径至少被测试一次。
  • 所有逻辑值均需测试真 (true) 和假 (false) 两种情况。
  • 检查程序的内部数据结构,保证其结构的有效性。
  • 在上下边界及可操作范围内运行所有循环。

白盒测试主要是检查程序内部的逻辑结构,也就是对所有逻辑路径进行测试,是一种穷举路径的测试方法。
三、测试用例设计方法
白盒测试常用的测试用例方法有:
1、逻辑覆盖
以程序的内部逻辑结构为基础,主要分为语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖。

  • 语句覆盖:语句覆盖法的基本思想是设计若干测试用例,运行被测程序,使程序中的每个可执行语句至少被执行一次。
  • 判定覆盖:判定覆盖法的基本思想是设计若干用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断真假值均曾被满足。
  • 条件覆盖:条件覆盖的基本思想是设计若干测试用例,执行被测程序以后,要使每个判断中每个条件的可能取值至少满足一次。
  • 判定-条件覆盖:判定-条件覆盖是判定和条件覆盖设计方法的交集,即设计足够的测试用例,使得判断条件中的所有条件可能取值至少执行一次,同时,所有判断的可能结果至少执行一次。
  • 条件组合覆盖:条件组合覆盖的基本思想是设计足够的测试用例,使得程序中每个判断的所有可能的条件取值组合都至少出现一次。

2、路径覆盖
它主要是再程序控制流程的基础上,分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例。
路径覆盖:路径覆盖就是设计所有的测试用例,来覆盖程序中的所有可能的执行路径。
路径覆盖这种测试方法可以对程序进行彻底的测试,比前面五种的覆盖面都广。
3、基本路径测试法
(1)在白盒测试中还有一种非常重要的测试方法就是基本路径测试法。
它的一般流程是:

  • 依据代码绘制流程图
  • 确定流程图的圈复杂度
  • 确定线性独立路径的基本集合
  • 设计测试用例覆盖每条基本路径

(2)下面简单介绍一下基本路径测试方法中的相关概念
控制流图
如下图所示:
在这里插入图片描述

其中(a)图示一个含有两个出口判断和循环的程序流程图,我们把它简化成(b)的形式,称这种简化了的程序流程图叫做控制流图。
圈复杂度(v(G))
圈复杂度:代码逻辑复杂度的度量,提供了被测代码的路径数量。复杂度越高,出错的概率越大。
在这里插入图片描述
它的计算方式一般有三种:

  • V(G) = 区域数量(由节点、连线包围的区域,包括图形外部区域)
  • V(G) = 连线数量 - 节点数量 + 2
  • V(G) =简单可预测节点数量 + 1

圈复杂度为几就有几条独立执行路径
四、举例说明各个测试方法的应用
1、逻辑覆盖
我们要进行设计测试用例的图如下:

在这里插入图片描述

(1)语句覆盖:
只需设计一个测试用例:
a=2,b=1,c=6;
(2)判定覆盖

  • a=2,b=1 ,c=6可覆盖判断M的Y分支和判断N的Y分支;
  • a=-2,b=-1 ,c=-3可覆盖判断M的N分支和判断N的N分支 。
    这两组测试用例可覆盖所有判定的真假分支。
    (3)判定覆盖
    判断M表达式:
    设条件 a>0
    取真记为 T1
    取假记为 F1
    条件 b>0
    取真 记为 T2
    取假 记为 F2
    判断Q表达式:
    设条件 a>1
    取真 记为 T3
    取假 记为 F3
    条件 c>1
    取真 记为 T4
    取假 记为 F4
    设计的测试用例如下表所示:

在这里插入图片描述
它覆盖了判定M的N分支和判断N的Y分支
(4)判定-条件覆盖
设计的测试用例如下表所示:
在这里插入图片描述
(5)条件组合覆盖
设计的测试用例如下表所示:
在这里插入图片描述

2、路径覆盖
设计的测试用例如下所示:
在这里插入图片描述

黑盒测试方法

一、概念
黑盒测试也称功能测试数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用。
在测试时,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性,,如下图所示:
在这里插入图片描述
二、黑盒测试的测试方法
1、等价类划分
等价类划分是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。该方法是一种重要的,常用的黑盒测试用例设计方法。等价类是某个输入域的子集,在该子集中每个输入数据的作用是等效的。
它主要分为:

  • 有效等价类: 是有意义的、合理的输入数据构成的集合。可检查程序是否实现了规格说明中所规定的功能和性能。
  • 无效等价类:与有效等价类的定义恰巧相反。

2、边界值分析法
(1)定义:边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。
(2)与等价划分的区别

  • 边界值分析不是从某等价类中随便挑一个作为代表,而是使这个等价类的每个边界都要作为测试条件。
  • 边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试情况。

(3)设计方法:

  • 确定边界情况(输入或输出等价类的边界)
  • 选取正好等于、刚刚大于或刚刚小于边界值作为测试数据

3、判定表方法
(1)定义:在实际应用中,许多输入是由多个因素构成,而不是单一因素,这时就需要多因素组合分析。对于多因素,有时可以直接对输入条件进行组合设计,不需要进行因果分析,即直接采用判定表方法。
一个判定表由“条件和活动”两部分组成,也就是列出了一个测试活动执行所需的条件组合,所有可能的条件组合定义了一系列的选择,而测试活动需要考虑每一个选择。
(2)判定表方法步骤

  • 列出所有的条件桩和动作桩;
  • 填入条件项;
  • 填入动作项,制定初始判定表;
  • 简化、合并相似规则或者相同动作

4、因果图法
(1)定义:多种输入条件的组合,产生多种结果设计测试用例。
(2)设计方法:

  • 分析软件规格说明文档描述的哪些是原因(输入条件),哪些是结果(输出条件),给每个原因和结果赋予一个标识符。
  • 找出原因与结果,原因与原因之间的对应关系,划出因果图
  • 在因果图上标上哪些不可能发生的因果关系,表明约束或限制条件
  • 根据因果图,创建判定表,将复杂的逻辑关系和多种条件组合很具体明确的表示出来
  • 把判定表的每一列作为依据设计测试用例。

条件与条件之间又存在以下约束关系
在这里插入图片描述

5、场景法
(1)定义:用例场景用来描述流经用例的路径,从用例开始到结束遍历这条路径上所有基本流和备选流。
(2)基本流和备选流如下图所示
在这里插入图片描述

直黑线表示基本流是经过用例的最简单的路径。
备选流用不同的彩色表示,一个备选流可能从基本流开始,在某个特定条件下执行,然后重新加入基本流中(如1和3);也可能起源于另一个备选流(如2),或者终止用例而不再重新加入到某个流(如2和4)。
6、正交实验法
7、功能图法
每个程序的功能通常由静态说明和动态说明组成:

  • 静态说明描述了输入条件和输出条件之间的对应关系
  • 动态说明描述了输入数据的次序或者转移的次序。

功能图法就是为了解决动态说明问题的一种测试用例的设计方法


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

相关文章

白盒测试及用例详解

目录 第一部分:概念理解 第二部分:上例题 第三部分:例题解答 附:纸质版解答过程 参考链接 第一部分:概念理解 在白盒测试中,逻辑覆盖测试是使用较多的方法。按照其对测试的有效程度,又将其…

白盒测试内容

白盒测试方法根据模块内部结构,基于程序内部逻辑结构,针对程序语句、路径、变量状态等来进行测试。 单元测试主要采用白盒测试方法,辅以黑盒测试方法。白盒测试方法应用于代码评审、单元程序之中,而黑盒测试方法则应用于模块、组件…

白盒测试

一、逻辑覆盖 逻辑覆盖法是最常用的白盒测试方法,它包括以下5种方法: ● 语句覆盖 ● 判定覆盖 ● 条件覆盖 ● 判定-条件覆盖 ● 条件组合覆盖 1.语句覆盖 语句覆盖(Statement Coverage)又称行覆盖、段覆盖、基本块覆盖,它是最常见的覆盖方式…

软件测试——白盒测试

目录 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.什么是白盒测试 白盒测试也称结构测试&…

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

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

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

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

白盒测试方法 + 实战

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

白盒测试的方法笔记

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

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

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

白盒测试方法

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

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

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

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

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

白盒测试的各种方法

文章目录 一、逻辑测试法设计测试用例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说起。假如我们的服务器跟数据库…