白盒测试内容

article/2025/9/14 11:48:59

        白盒测试方法根据模块内部结构,基于程序内部逻辑结构,针对程序语句、路径、变量状态等来进行测试。

        单元测试主要采用白盒测试方法,辅以黑盒测试方法。白盒测试方法应用于代码评审、单元程序之中,而黑盒测试方法则应用于模块、组件等大单元的功能测试之中。

白盒测试关注的对象

源代码

措施:阅读源代码,检验代码的规范性,并对照函数功能查找代码的逻辑缺陷、内存管理缺陷、数据定义和使用缺陷等。

程序结构

措施:使用与程序设计相关的图表,找到程序设计的缺陷,或评价程序的执行效率

白盒测试方法分类

白盒测试用例设计及应用

         测试用例:是指为了某个特定的测试目标而设计的一组测试输入、执行条件以及预期结果。测试用例的内容一般包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等。

        目标:用尽可能少的测试用例取得尽可能好的测试效果。

白盒测试用例设计及应用

逻辑覆盖法

        逻辑覆盖是通过对程序逻辑结构的遍历实现对程序的覆盖,它是一系列测试过程的总称,这组测试过程逐渐实现越来越完整的通路测试。逻辑覆盖标准包括以下不同的覆盖标准:语句覆盖、判定覆盖、条件覆盖、条件判定组合覆盖、多条件覆盖和修正条件判定覆盖。

语句覆盖

        语句覆盖,又称行覆盖、段覆盖、基本块覆盖,这是最常用也是最常见的一种覆盖方式。其基本思想是设计若干个测试用例,运行被测程序,使程序中每一条可执行语句至少应该执行一次。

语句覆盖-案例

        单元设计要求:设计一个方法,输入两个整型参数x,y,当x小于5或者y=5时将x和y的和作为结果返回;否则,将x和y的商作为结果返回。

单元实现

public class MyClass {

    public int computing(int x, int y)     {

        int result;

        if (x < 5 && y == 5) {

            result = x + y;

        } else {

            result= x / y;

        }

        return result;

    } }

序号

X

y

预期结果

X<5

Y==5

x < 5 && y == 5

路径

1

2

5

7

T

T

T

2

6

6

1

F

F

F

判定覆盖

        希望通过设计足够多的测试用例,使得程序中的每个判定至少都获得一次“真”值和“假”值, 也就是使程序中的每个取“真”分支和取“假”分支至少均经历一次,这种设计测试用例的方法称为判定覆盖,也称为“分支覆盖”。

判定覆盖-案例

修改后的单元实现:

public class MyClass {

    public int computing(int x, int y) {

        int result;

        if (x < 5 || y == 5) {

            result = x + y;

        } else {

            result= x /y;

        }

        return result;

    } }

序号

x

y

预期结果

x<5

y==5

x < 5 || y == 5

路径

1

2

6

8

T

F

T

2

6

6

1

F

F

F

条件覆盖

        通过设计足够多的测试用例,使得程序中每个判定包含的每个条件的可能取值(真/假)都至少出现一次。这种设计测试用例的方法称为条件覆盖。

序号

x

y

预期结果

x<5

y==5

x < 5 || y == 5

路径

1

2

1

3

T

F

T

2

6

5

1

F

T

T

这个测试用例集满足条件覆盖的要求,但是不满足判定覆盖的要求

判定/条件覆盖

        通过设计足够多的测试用例,使得程序中每个判定包含的每个条件的所有情况(真/假)至少出现一次,并且每个判定本身的判定结果(真/假)也至少出现一次。这种设计测试用例的方法称为判定/条件覆盖。

        满足判定/条件覆盖的测试用例集一定同时满足判定覆盖和条件覆盖。

序号

x

y

预期结果

x<5

y==5

x < 5 || y == 5

路径

1

2

1

3

T

F

T

2

6

5

1

F

T

T

3

6

1

1

F

F

F

组合覆盖

        通过设计足够多的测试用例,使得程序中每个判定的所有可能的条件取值组合都至少出现一次。这种设计测试用例的方法称为组合覆盖。

        满足组合覆盖的测试用例集一定满足判定覆盖、条件覆盖和判定/条件覆盖。

序号

x

y

预期结果

x<5

y==5

x < 5 || y == 5

路径

1

2

1

3

T

F

T

2

6

5

1

F

T

T

3

6

1

1

F

F

F

4

1

5

0

T

T

T

基本路径测试法

        通过设计足够多的测试用例,要求覆盖程序的基本路径集合中所有可能的路径。这种设计测试用例的方法称为基本路径覆盖。

程序的控制流图

控制流图的环路复杂性

        程序的环路复杂性即McCabe复杂性度量,在进行程序的基本路径测试时,从程序的环路复杂性可导出程序基本路径集合中的独立路径条数,这是确保程序中每个可执行语句至少执行一次所必须的测试用例数目的上界。

        独立路径是指包括一组以前没有处理过的语句或条件的一条路径。从控制流图来看,一条独立路径是至少包含有一条在其他独立路径中从未有过的边的路径。

 

(b)所示的控制流图中,一组独立的路径如下:

 pathl:1-11

path2:1-2-3-4-5-10-1-11

path3:1-2-3-6-8-9-10-1-11

path4:1-2-3-6-7-9-10-1-11

基本路径覆盖-测试用例设计

 

 计算环形复杂度:

V(G)=9-8+2=2+1=3 找出一组独立路径(基本路径集合):

路径1:1-2-3-4

路径2:1-2-3-5-6-8-2-3-4

路径3:1-2-3-5-7-8-2-3-4

根据基本路径设计测试用例,覆盖基本路径集合中的所有路径

将V(G)定义为: V(G)=e-n+2

这里,e是控制流图的边数,n是控制流图的节点数。我们还可以用如下两个方法计算环形复杂度: V(G)=区域数 V(G)=判定节点数+1

这里,区域是指由边包围起来的形状,图中没有被边包围的部分也算一个区域。判定节点是有多个边以它作为起点的节点。

 


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

相关文章

白盒测试

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

软件测试——白盒测试

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

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

​ ​白盒测试用例设计的一个很重要的评估标准就是对代码的覆盖度。一说到覆盖&#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…