白盒测试、黑盒测试、灰盒测试

article/2025/9/28 13:30:21

根据被测对象的不同,软件测试可以分为白盒测试、黑盒测试、灰盒测试三种方式。那么,这三种测试测试方式具体是如何运行的?各有什么特点?下面,跟着小厚一起了解一下吧!

01

白盒测试

●概念:

➢ 白盒测试是依据被测软件分析程序内部构造,并根据内部构造设计用例,来对内部控制流程进行测试,可完全不顾程序的整体功能实现情况。

➢ 白盒测试是基于程序结构的逻辑驱动测试。

➢ 白盒测试又可以被称为玻璃盒测试、透明盒测试、开放盒测试、结构化测试、逻辑驱动测试。

●目的:

➢ 白盒测试一般在测试前期进行,通过达到一定的逻辑覆盖率指标,使得软件内部逻辑控制结构上的问题能基本得到消除。

➢ 白盒测试能保证内部逻辑结构达到一定的覆盖程度,能够给予软件代码质量更大的保证。

➢ 白盒测试发现问题后解决问题的成本较低。

●常用技术:

➢ 静态分析:包括控制流分析、数据流分析、信息流分析。

➢ 动态分析:逻辑覆盖测试(分支测试、路径测试等)、程序插装等。

• 逻辑覆盖测试根据覆盖的对象不同,可以分为:语句覆盖、判定(分支)覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。

• 程序插装指调试程序时,在程序中插入一些打印语句,程序执行时打印出我们关心的信息,通过这些信息了解执行过程中程序的一些动态行为。

●特点:

➢ 测试人员需要了解软件的实现,可以检测代码中的每条分支和路径,对代码的测试比较彻底。

➢ 揭示隐藏在代码中的错误,实现代码结构上的优化。

➢ 投入较大,成本高。

➢ 无法检测代码中遗漏的路径和数据敏感性错误。

➢ 不验证规格的正确性。

02

黑盒测试

●概念:

➢ 黑盒测试把被测对象看成一个黑盒,只考虑其整体特性,不考虑其内部具体实现。

➢ 黑盒测试针对的被测对象可以是一个系统、一个子系统、一个模块、一个子模块、一个函数等。

➢ 黑盒测试又可以被称为基于规格的测试。

常见的黑盒测试类型:

➢ 功能测试:一种是顺序测试每个程序特性或功能,另一种途径是一个模块一个模块的测试,即每个功能在其先调用的地方被测试。

➢ 容量测试:检测软件在处理海量数据时的局限性,能发现系统效率方面的问题。

➢ 负载测试:检测系统在一个很短时间内处理一个巨大的数据量或执行许多功能调用上的能力。

➢ 异常测试:主要保证系统在崩溃后能够恢复外部数据的能力。 

常用的黑盒测试方法:

➢ 等价类划分法、边界值分析法、因果图分析法、判定表法、状态迁移法等。

●特点:

➢ 对于更大的代码单元来说(子系统甚至系统级)比白盒测试效率要高。

➢ 测试人员不需要了解实现的细节,包括特定的编程语言。

➢ 从用户的视角进行测试,很容易被大家理解和接受。

➢ 有助于暴露任何规格不一致或有歧义的问题。

➢ 如果没有清晰的需求规格说明书,测试用例很难设计。

➢ 不能控制内部执行路径,会有很多内部程序路径没有被测试到。

03

灰盒测试

● 利用被测对象的整体特性信息,采用黑盒测试方法。

● 利用被测对象的内部具体实现信息,采用白盒测试方法。

● 如果既利用被测对象的整体特性信息,又利用被测对象的内部具体实现信息,采用的就是灰盒测试方法。两种信息占的比例不同,相应的灰度就不同。

● 完全是整体特性信息,就是黑盒测试,完全是内部具体实现信息,就是白盒测试。

● 灰盒测试多用于集成测试阶段,不仅关注输入、输出的正确性,同时也关注程序内部的情况。

【案例】PDA闹钟事件的测试

背景描述:闹钟是PDA(Personal Digital Assistant)上的一个应用程序,它的主要功能就是在用户设置的时间点到达时,进行响铃提醒。响铃时,无论用户当前在做什么操作,会弹出一个响铃提示界面。

提出问题:一天,负责测试此模块的工程师小叶提出一个问题“闹铃事件优先级高,在所有应用程序界面、对话框或提示框上面都会弹出,黑盒测试需要进入所有情况的用户界面,然后等待闹钟事件的发生,才能全面验证到各种情况的用户使用场景。”但这样穷举测试,需耗的时间太多,效果也并不一定好。

分析问题:关于闹钟的应用,实际上该模块只提供了一个接口。如能从代码角度分析到所有其他模块调用的是同一个闹铃接口函数(对于响铃及停止响铃后对原界面的恢复,都是统一一个接口处理的),那么再通过黑盒功能测试,在某一个用户界面进行此响铃功能的验证,即可证明代码的实现是符合需求的,这正是灰盒测试的方法。

解决问题:后来,对于闹铃功能点的系统验证,采用了灰盒测试的方法,做了代码正向、逆向分析,结合功能性用户场景进行验证,节省了近2/3的测试时间。


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

相关文章

一直没搞懂灰盒测试的我,收藏了这篇文章

在本文中,我们将了解什么是灰盒测试以及为什么要使用它,以及它的优缺点。 在软件测试中,灰盒测试是一种有用的技术,可以确保发布的软件是高性能的、安全的并满足预期用户的需求。这是一种从外部测试应用程序同时跟踪其内部操作的…

拉普拉斯变换学习笔记

目录 1.为什么引入拉普拉斯变换? 2.双边拉普拉斯的定义 3.双边拉普拉斯变换的收敛域 4.单边拉普拉斯变换的定义 5.单边拉普拉斯变换和傅立叶变换的关系 6.常见信号的拉式变换 7.拉普拉斯变换的性质 7.1.线性、尺度变换性质 7.2.时移、复频移特性 7.3.时域、…

MATLAB之拉氏变换

一、复数和复变函数 1、复数的三种表现形式: 坐标形式: 三角形式: 指数形式: 2、复变函数: 复数集E内的每一个复数zab*i,都有(唯一确定的/无穷多个/有限个)复数与之对应,可以确定(单…

【拉普拉斯变换】2. 拉普拉斯变换的性质

文章目录 【 1. 线性 】【 2. 时域尺度变换 】【 3. 时移 】【 4. S域平移(复频移) 】【 5. 时域的微分(微分定理) 】【 6. 时域的积分(积分定理) 】【 7. 卷积定理 】【 8. S域微分、积分 】【 9. 初值定理、终值定理 】 【 1. 线性 】 例: 注意ROC的变化 &#xf…

【高数+复变函数】Laplace变换的性质

文章目录 【高数复变函数】Laplace变换的性质一、性质1. 线性性质2. 微分性质3. 像函数的微分性质4. 积分性质5. 象函数的积分性质6. 位移性质7. 延迟性质8. 相似性质 【高数复变函数】Laplace变换的性质 通过上一节【高数复变函数】Laplace变换的学习,我们知道了L…

图像变换 -拉普拉斯变换(cvLaplace)

拉普拉斯变换(Laplace Transform),是工程数学中常用的一种积分变换。 拉普拉斯变换也可以用作边缘检测,用二次导数的形式定义。函数 cvLaplace 计算输入图像的 Laplacian变换,方法是先用 sobel 算子计算二阶x和y差分,…

逆Laplace数值逆变换

01拉普拉斯变换定义 1.变换公式 2. 常见函数的Laplace变换 02 Laplace数值逆变换 根据拉普拉斯逆变换的公式,可以看到,f(t)可以变成如下的公式。 #!/usr/local/bin/python # -*- coding: gbk -*- # # TEST1.PY -- by Dr. ZhuoQing…

Laplace变换

众人推荐的 MIT公开课——拉普拉斯变换简介 用级数来理解 拉普拉斯变换比傅里叶变换多了一个衰减因子,使得不满足绝对可积的信号也能转化为频域信号。 两者都能描述幅值信息和相位信息。 --------------------------------------------------------------------…

信号与系统(Python) 学习笔记 (6) 拉普拉斯变换 Laplace Transform

【总目录】 (1) 简介 Intro(2) 傅里叶 Fourier 常用函数的傅里叶变换汇总 (3) LTI 系统 与 滤波器 二次抑制载波振幅调制接收系统 Python (4) 取样 Sampling(5) 离散傅里叶 Discrete Fourier(6) 拉普拉斯变换 Laplace Transform 文章目录 6. 拉普拉斯变换6.1. 拉普拉斯变换 L…

实验八、拉普拉斯变换

实验八、连续系统的复频域分析 一、实验目的二、实验器材三、实验原理1、用MATLAB进行Laplace正、反变换例1:分别用Laplace和ilaplace函数求 2、用MATLAB进行部分分式展开3、用MATLAB分析LTI系统的特性 三、实验内容1、验证实验原理中所述的相关程序;2、…

Laplace变换笔记(2)

对实域内f(t)的Laplace变换函数如下 对s域 Laplace变换收敛域(边界条件): 拉普拉斯变换乘以衰减因子以后要保证衰减和可积,这样的衰减因子所满足的条件则为收敛域 Laplace变换逆变换: 定义式 线性性质拆分&#xff1…

MATLAB——拉氏变换及反其变换、Z变换及其反变换

一、拉式正反变换 1、拉式变换 【时域转s域】 laplace(F) 2、拉式反变换 【s域转时域】 ilaplace(L) 二、Z正反变换 1、Z变换 【ztrans 时域转Z域】 ztrans(f); ztrans(f,w); ztrans(f,k,w); 2、Z反变换 【iztrans Z域转时域】 iztrans(f); iztrans(f,w); iztrans(f…

【高数+复变函数】Laplace变换

文章目录 【高数复变函数】Laplace变换1. 问题引入及定义2. 存在定理3. 常见Laplace变换 【高数复变函数】Laplace变换 1. 问题引入及定义 上一节:【高数复变函数】傅里叶积分 回顾之前我们讲的傅里叶变换要满足的条件有(也就是傅里叶积分要满足的条件…

[Matlab-5]Laplace变换

[Matlab-5]Laplace变换 Laplace 变换(数学)Laplace 变换和逆变换Laplace 变换与Fourier变换的关系极点(pole)与零点(zero)作3D曲面图(surface plot)标题会用到的函数颜色挑选栗子 给定微分方程求Laplace变换…

拉氏变换

拉氏变换 拉氏变换的理解 一个函数f(t)的Laplace变换定义为 这个式子说的是一件这样的事情:F(s)是实空间函数f(t)在复空间中以为基底的投影。 解释 首先,定义复空间上两个函数f,g的内积为 很容易知道是复空间中的一组正交基。那么根据内积的意义——…

【模拟电路建模与控制系统分析】01Laplace变换

0.若没有拉氏变换会怎样? 根据上述微分方程,求输入输出关系,即求解微分方程。 以上为一个卷积关系,求解设计卷积、微分方程,求解困难。而拉氏变换将微分方程变成代数方程,得出系统传递函数,卷积…

信息与通信的数学基础——Laplace变换

文章目录 1. Laplace变换的概念1.1 Laplace变换的引入1.2 Laplace变换的定义1.2.1 常见的Laplace变换 2. Laplace变换的性质2.1 线性性质与相似性质[1]2.2 延迟性质与位移性质2.2.3 利用延迟性质求逆变换[2] 2.3 微分性质2.3.1 复合性质的Laplace变换[3] 2.4 积分性质 3. Lapla…

Eclipse配置JDK、Maven

一、配置JDK 1.1、打开电脑eclipse,进入到eclipse的主页面,点击【window】–【preferences】选项,进入eclipse的首选项管理 1.2、进入【preferences】设置后,在左上角的搜索栏中输入【jdk】关键,就可以搜索出jdk的相…

MAC上配置jdk

如何在MAC上配置jdk 相信每个拿到MAC的小伙伴都是很欣喜的,但是由于MAC系统与WIN系统有着极大的不同,所以使用起来会有一些小困扰。这是我个人的第一篇博客,我目前应该完全算是个小菜鸡;我会在这里分享使用MAC的心得和做一些技术…

Eclipse配置JDK,Tomcat

配置JDK 选择“Window→Preferences→在搜索框中输入 jre→Java →Installed JREs 并双击→Add→Standard VM→Next→在‘JRE home’ 栏浏览选择 JRE 安装目录→Finish→勾选 jre1.8.0_121 项→Apply and Close”,设置 Eclipse 所关联的 JRE。若只安装有一个版本的 …