什么是灰盒测试?

简介: 什么是灰盒测试?

灰盒测试是一种软件测试技术,在对应用程序内部结构有部分了解的情况下对软件产品或应用程序进行测试。灰盒测试的目的是搜索和识别由于不恰当的代码结构或不恰当的应用程序使用而导致的缺陷。

在这个过程中,通常会发现与web系统相关的特定于上下文的错误。它通过集中于任何复杂系统的所有层来增加测试覆盖率。

灰盒测试是一种软件测试方法,它是白盒测试和黑盒测试方法的结合。

  • 在白盒测试中,内部结构(代码)是已知的
  • 在黑盒测试内部结构(代码)是未知的
  • 在灰盒测试中,内部结构(代码)是部分已知的

  • 白盒测试+黑盒测试= 灰盒测试

在软件工程中,灰盒测试能够测试应用程序的两个方面,表现层和代码部分。它主要用于集成测试和渗透测试。

灰盒测试的例子:当测试网站的链接或单独链接时,如果测试人员遇到这些链接的任何问题,那么他可以直接在HTML代码中进行更改,并可以实时检查。

为什么要进行灰盒测试


执行灰盒测试的原因如下:

  • 它同时提供了黑盒测试和白盒测试的好处
  • 它结合了开发人员和测试人员的输入,提高了整体产品质量
  • 它减少了测试函数式和非函数式类型的漫长过程的开销
  • 它为开发人员提供了足够的空闲时间来修复缺陷
  • 测试是从用户的角度而不是从设计师的角度进行的


灰盒测试策略


要执行灰盒测试,测试人员没有必要访问源代码。测试是基于算法、体系结构、内部状态或程序行为的其他高级描述来设计的。

执行灰盒测试-

  • 它应用了一种直接的黑盒测试技术
  • 它基于需求测试用例的生成,因此,它在通过断言方法测试程序之前预先设置了所有的条件。


用于灰盒测试的技术是-

  • 矩阵测试:这种测试技术包括定义程序中存在的所有变量。
  • 回归测试:检查前一个版本中的更改是否回归了新版本中程序的其他方面。这将通过测试策略来完成,如重新测试所有,重新测试风险用例,在防火墙内重新测试。
  • 正交阵列测试(OAT):它以最小的测试用例提供最大的代码覆盖率。
  • 模式测试:这种测试是在以前系统缺陷的历史数据上执行的。与黑盒测试不同,灰盒测试在代码中挖掘并确定失败发生的原因


通常,灰盒方法使用自动化软件测试工具来进行测试。存根和模块驱动程序的创建是为了帮助测试人员手动生成代码。

执行灰盒测试的步骤是:

  • 步骤1:识别输入
  • 步骤2:识别输出
  • 步骤3:确定主要路径
  • 步骤4:确定子函数
  • 步骤5:为子函数开发输入
  • 步骤6:为子函数开发输出
  • 步骤7:执行子函数的测试用例
  • 步骤8:验证Subfunctions的正确结果
  • 步骤9:对其他子函数重复步骤4和8
  • 步骤10:对其他子函数重复步骤7和8


灰盒测试的测试用例可能包括,GUI相关的,安全相关的,数据库相关的,浏览器相关的,操作系统相关的,等等。

灰盒测试挑战

  • 当被测组件遇到某种类型的故障时,可能会导致正在进行的操作中止
  • 当测试完全执行但结果内容不正确时。


总结:


  • 通过灰盒测试可以降低系统缺陷的总体成本,并防止其进一步通过
  • 灰盒测试更适合于GUI、功能测试、安全评估、web应用程序、web服务等。
  • 用于灰盒测试的技术
  • 矩阵测试
  • 回归测试
  • OAT或正交阵列测试
  • 模式测试
相关文章
|
4月前
|
前端开发
websocket的心跳机制
websocket的心跳机制
220 3
|
4月前
开发不认可你提交的bug怎么办?
开发不认可你提交的bug怎么办?
313 0
|
算法 计算机视觉 网络架构
YOLOv7 | 模型结构与正负样本分配解析
YOLOv7 | 模型结构与正负样本分配解析
1738 0
YOLOv7 | 模型结构与正负样本分配解析
|
SQL 开发框架 运维
Helm开发/调试的最佳实践
本文的目标不限于对Helm官方文档的翻译或解释,更在于帮助开发者能够快速编写出一个标准且合理的helm chart。 ## Helm简介 一句话描述:Helm是Kubernetes的包管理工具 ### Helm vs Operator Helm 和 Operator都可以实现在k8s上安装应用。但二者有着不同的适用场景。 Helm适用于: - 开发者群体 - 门槛低:熟悉k8s即可 -
1855 0
|
4月前
|
消息中间件 传感器 运维
软件体系结构 - 架构风格(7)事件驱动架构风格
【4月更文挑战第21天】软件体系结构 - 架构风格(7)事件驱动架构风格
166 0
|
4月前
|
机器学习/深度学习 分布式计算 并行计算
【MATLAB】史上最全的13种数据拟合算法全家桶
【MATLAB】史上最全的13种数据拟合算法全家桶
859 1
|
9月前
|
存储 API 分布式数据库
C/C++ 通过HTTP实现文件上传下载
WinInet(Windows Internet)是 Microsoft Windows 操作系统中的一个 API 集,用于提供对 Internet 相关功能的支持。它包括了一系列的函数,使得 Windows 应用程序能够进行网络通信、处理 HTTP 请求、FTP 操作等。WinInet 提供了一套完整的网络通信工具,使得开发者能够轻松地构建支持网络功能的应用程序,涵盖了从简单的 HTTP 请求到复杂的文件传输等多种网络操作。
192 1
C/C++ 通过HTTP实现文件上传下载
|
4月前
|
测试技术 数据库 UED
【白盒测试】单元测试的理论基础及用例设计技术(6种)详解
【白盒测试】单元测试的理论基础及用例设计技术(6种)详解
258 1
|
4月前
|
SQL 安全 Java
网络安全面试题及经验分享(第一期)
本文原文来自:i春秋,转载以供自己复习使用,下面题目都是来自2023年面试题目和答案解析,题目是学员们真实的面试经历分享,具有很高的参考价值。
|
运维 大数据 数据挖掘
大数据工程师体系职业路径全解
大数据工程师体系职业路径全解