【测试方法】黑盒测试、灰盒测试、白盒测试这些你确定都会了吗?

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

根据利用的被测对象信息的不同,可以将软件测试方法分为:黑盒测试、灰盒测试、白盒测试。

1、白盒测试

1)概念:是依据被测软件分析程序内部构造,并根据内部构造分析用例,来对内部控制流程进行测试,可完全不顾程序的整体功能实现情况,即已知软件产品的内部实现过程,可以通过测试证明每种内部操作是否符合设计规格的要求,所有内部成分是否已经过检查。

2)思想:白盒测试又被称为玻璃盒测试、透明盒测试、开放盒测试、结构化测试、逻辑驱动测试、是基于程序结构的逻辑驱动测试。

3)测试对象: 函数、算法与数据结构

4)目的

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

(2)保证内部结构达到一定的覆盖程度,能够给予软件代码质量更大的保证;

(3)白盒测试发现问题后,解决问题的成本较低。

5)白盒测试的常用技术:

(1)静态分析:包括控制流分析、数据流分析、信息流分析

(2)动态分析:逻辑覆盖测试(分支测试、路径测试等)、程序插装等 ,逻辑覆盖测试根据覆盖的对象不同,可以分为:语句覆盖、判定(分支)覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。 程序插装指调试程序时,在程序中插入一些打印语句,程序执行时打印出我们关心的信息,通过这些信息了解执行过程中程序的一些动态行为。

6)白盒测试的特点:

(1)测试人员需要了解软件的实现;

(2)可以检测代码中的每条分支和路径;

(3)揭示隐藏在代码中的错误;

(4)对代码的测试比较彻底;

(5)实现代码结构上的优化;

(6)投入较大,成本高;

(7)无法检测代码中遗漏的路径和数据敏感性错误;

(8)不验证规格的正确性。

2、黑盒测试

1)定义:把测试对象看成是一个黑盒,只考虑其整体特性,不考虑其内部具体实现过程。即已知产品的需求规格,但不知其内部实现,可以进行测试证明每个需求是否实现。

2)思想:基于规格的测试,测试类型都来源于质量模型。

3)测试对象:系统、子系统、模块、子模块、函数等。

4)常用的黑盒测试方法:等价类划分法、边界值分析法、因果图分析法、判定表法、状态迁移法等。

5)目的:减少测试时的测试用例数,用尽量少的测试用例完成测试,发现更多的问题。

6)黑盒测试的特点

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

(2)测试人员不需要了解软件的实现细节,包括特定的编程语言;

(3)从用户的视角进行测试,很容易被理解和接受;

(4)有助于暴露任何规格不一致或有歧义的问题;

(5)没有清洗和简明的规格,测试用例很难设计;

(6)不能控制内部执行路径,会有很多内部程序路径没有被测试到;

(7)不能直接针对特定的程序段,这些程序可能非常复杂(因此可能隐藏更多的问题)

 

3、灰盒测试

利用被测对象的整体特性信息,采用黑盒测试方法;利用被测对象的内部具体实现信息,采用白盒测试方法;介于白盒和黑盒测试之间的测试方法测试方法称之为灰盒测试。

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

2)适用对象:一般集成测试采用灰盒测试方法。

按照被测试的软件系统是否运行,将测试分为静态测试和动态测试。

1、静态测试

1)定义:不运行被测试的软件系统,而是采用其他手段和技术对被测试软件进行检测的一种测试技术,例如:代码走读、文档评审、程序分析等。

2)常用技术:静态分析技术。

(1)定义:静态分析是一种不通过执行程序而分析程序的技术。

(2)功能:检查软件的表示和描述是否一致,没有冲突或者没有歧义

(3)目的:纠正软件系统在描述、表示和规格上的错误,因此是任何进一步测试的前提。

(4)静态分析技术主要有3种不同的程序测试可能性

  • 考虑程序是否满足编码规则,语法上是否具有一致性和完整性;
  • 考虑文档描述是否规范、准确、便于查阅;
  • 考虑程序和文档之间的一致性。

(5)静态分析技术有:控制流分析、数据流分析和信息流分析,下面一一介绍:

1、控制流分析

(控制流相关概念)

  • 程序元素:一个程序元素通常是一个条件,一个简单的语句或者一块语句(多个连续语句)。
  • 控制流关系:一个程序的控制流关系(Control Flow Relation)叙述了程序元素和他们执行的次序之间的关系。
  • 控制流图:对应于控制流关系的图被称为控制流图。
  • 控制流矩阵:有控制流图得到,反映相邻程序元素之间的先后顺序关系。

(控制流分析能发现的问题 )

通过对控制流信息进行分析,确保写出的程序不应包含:转向并不存在的标号;没用的语句标号;从程序入口进入后无法达到的语句;不能达到停机语句的语句。

2、数据流分析

(数据流相关概念 )

数据流分析最初是随着编译系统要生成有效的目标码而出现的,这类方法主要用于代码优化(代码优化主要包含:结构优化即可读性、时间效率和空间效率优化、可移植性优化)。数据流分析法关键是数据的引用和定义。 数据的定义:如果程序中某一语句执行时能改变某程序变量V的值,则称V是被该语句定义的。

数据的引用:如果程序中一语句的执行引用了内存中变量V的值,则称V是被该语句引用的。

(数据流分析步骤 )

  • 根据代码得到数据流表
  • 分析数据流表找到以下两种错误:变量未定义但被引用
  • 变量定义但未被引用

2、动态测试

1)定义:按照预先设计的数据和步骤去运行被测软件系统,从而对被测试软件进行检测的一种测试技术。

2)特点:主要分析软件系统在模拟或是真实的环境中执行之前、之中、之后的动态行为。

3)常用技术:动态分析技术

(1)定义:对软件系统运行行为进行分析,包含程序在受控的环境下使用特定的输入进行正式的运行,和期望的结果比较以检查系统运行是正确还是不正确。

(2)常用动态分析技术:

  • 路径测试
  • 分支测试
  • 性能测试

(3)常用动态分析工具及功能

  • 测试覆盖率分析:用于测试对代码的检测范围;
  • 跟踪:跟踪程序执行期间的所有路径
  • 调整:度量程序执行过程中所有的资源
  • 模拟:模拟系统的部分

3、所有测试方法都可以归类为手工测试和自动化测试。

1、手工测试

1)定义:手工测试是传统的测试方法,由测试人员手工编写测试用例,执行,观察结果。

2)缺点:测试工作量大,重复多,回归测试难以实现

2、自动化测试

1)定义:自动化测试指利用软件测试工具自动实现全部或者部分测试工作:管理、设计、执行和报告,自动化测试节省大量的测试开销,并能够完成一些手工测试无法实现的测试。

2)自动化测试的意义

(1)对程序新版本运行前一版本执行的测试,提高回归测试效率

(2)可以运行更多更频繁的测试

(3)可以执行手工测试困难或不可能做到的测试,比如大量的重复操作或者集成测试

(4)更好的利用资源,比如测试仪器或者被测对象

(5)测试具有一致性和可重复性,及自动化测试的步骤和结果完全一样的测试的复用性,及自动化测试甲苯可以拆分开给其他测试脚本使用

(6)可以更快地将软件推向市场,软件发布前进行高效的回归测试,减少软件发布的时间

(7)增加软件的信任度,通过自动化测试提高了测试效率,可以吧节约的时间拿出来做更多的测试

3)自动化测试的限制

(1)不能取代手工测试,自动化测试只能提高测试效率,不能提高测试有效性,即不可能发现更多缺陷更多

(2)对测试设计依赖性极大,测试设计的不好会遗漏问题

(3)自动化测试对软件开发具有很大的依赖性,开发出现变更可能导致前面的自动化测试完全失效

(4)工具本身并不具备想象力,工具不具有智能

4)自动化测试的误区

(1)不现实的期望,希望自动化能取代手工测试

(2)缺乏测试实践经验,手工测试都做不好,或者经验积累不够,就尝试自动化,很难成功

(3)期望自动化测试发现大量新缺陷,自动化只能保证测试执行效率,确保已有的问题不会再发生,发现新缺陷不是其目的

(4)安全性错觉,认为进行了自动化测试的软件就是安全的、质量有保证的只有手工测试做好了,明确了测试的观察点,才能把自动化测试做好,所以手工测试是自动化测试的一个基础


技能提升

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….


http://chatgpt.dhexx.cn/article/53vCgiTT.shtml

相关文章

黑盒测试、白盒测试、灰盒测试的区别

1. 黑盒测试 黑盒测试也称功能测试、数据驱动测试或基于规格说明书的测试,它是通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测…

黑盒测试、白盒测试与灰盒测试方法

测试奇谭,BUG不见。 大家好,我是谭叔。 对于黑盒、白盒与灰盒测试方法的理解,几年前我在某乎做过一个概念性的回答,当时提问者询问:如何跟非技术人员解释黑盒、白盒、灰盒测试的区别? 我的回答原文如下&…

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

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

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

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

拉普拉斯变换学习笔记

目录 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…