什么是灰盒测试?


介绍

灰盒测试是一种软件测试方法,它仅对软件程序的底层工作原理有有限的了解。因为它包括访问内部代码以开发测试用例,就像白盒测试一样,并且测试方法是在功能级别执行的,就像黑盒测试一样,它是这两者的混合体。

灰盒测试通常用于识别 Web 应用程序中的特定于上下文的错误。例如,如果测试人员在测试期间发现错误,则他可以修改代码以修复错误,然后实时重新测试。它专注于任何复杂软件系统的各个级别,以提高测试覆盖率。它允许测试显示层和核心代码结构。它通常用于集成和渗透测试。

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

在白盒测试中,内部结构(代码)是已知的。

  • 黑盒测试的内部结构(代码)是不清楚的。

  • 灰盒测试的内部结构(代码)仅部分已知。

软件工程中的灰盒测试允许您测试应用程序的显示层和核心组件。它主要用于集成和渗透测试。

灰盒测试示例:在测试网站功能(如链接或孤立链接)时,如果测试人员发现这些链接存在任何问题,他可以立即修改 HTML 代码并在实时环境中进行测试。

示例

  • 1) 如果测试人员在测试网站时单击链接并遇到错误,则灰盒测试人员可以更改 HTML 代码以验证问题。在这种情况下,通过修改代码执行白盒测试,并且当测试人员在前端测试更改时,同时执行黑盒测试。通过将白盒与黑盒结合,产生了灰盒测试。

  • 2) 了解并可以访问错误代码数据库(包括每个错误代码的原因)的灰盒测试人员可以分析错误代码并更深入地探索原因。假设网页收到“内部服务器错误 500”的错误代码,并且该问题的原因在表中列为服务器错误。利用此信息,测试人员可以进一步调查问题并向开发人员提供详细信息,而不仅仅是向他们报告问题。

  • 3) 灰盒测试人员可以检查日志文件以确定问题的根本原因。灰盒测试人员可以轻松检查低性能、程序崩溃和其他问题。

灰盒测试的目的是什么?

以下是由灰盒测试的原因 −

  • 它结合了黑盒和白盒测试的优点。

  • 它同时结合了开发人员和测试人员的输入值,以提高产品的整体质量。

  • 它缩短了冗长的功能和非功能测试所需的时间。

  • 它为开发人员提供了足够的时间来修复任何产品缺陷。

  • 它包含用户的观点,而不是设计者或测试人员的观点。

  • 它涉及从用户的角度对需求和规范确定进行彻底的评估。

灰盒测试策略

测试人员无需访问源代码即可执行灰盒测试。使用有关算法、体系结构、内部状态以及程序行为的其他高级描述的信息来创建测试。

灰盒测试可以通过多种方式进行。它使用基本的黑盒测试方法。它基于开发所需的测试用例,因此,它在使用断言技术测试程序之前建立所有标准。

灰盒测试技术

矩阵测试

这种类型的测试称为灰盒测试。它列出了程序中使用的所有变量。变量是每个程序中的组件,允许值通过它移动。它应该根据需要进行定制;否则,程序的可读性和速度会受到影响。矩阵方法是一种通过检测已使用变量来从程序中删除不必要和未初始化变量的方法。

回归测试

回归测试用于确保对软件一个区域的更改不会对产品的另一部分产生意外或不良影响。在确认测试期间发现的任何缺陷都已得到纠正,并且该程序部分开始按计划工作;但是,修复的缺陷可能导致软件其他地方出现新问题。回归测试通过使用测试技术(例如重新测试危险用例、防火墙后面的重新测试、重新测试所有内容等)来解决这些类型的问题。

正交数组测试或 OAT

此测试的目的是用尽可能少的测试用例覆盖尽可能多的代码。测试用例的编写方式是为了用最少的测试用例覆盖最多的代码以及最多的 GUI 功能。

模式测试

模式测试适用于通过遵循与先前软件相同的模式创建的软件。这种软件可能会出现相同类型的缺陷。模式测试识别故障原因,以便可以在将来的软件中解决这些原因。

灰盒方法通常使用自动化的软件测试工具来执行测试过程。提供存根和模块驱动程序给测试人员,以减少手动代码开发的需要。

执行灰盒测试的步骤如下 −

  • 步骤 1 - 列出所有输入。

  • 步骤 2 - 确定结果

  • 步骤 3 - 列出关键路径。

  • 步骤 4 - 确定子功能

  • 步骤 5 - 创建子功能输入。

  • 步骤 6 - 开发子功能输出

  • 步骤 7 - 运行子功能测试用例。

  • 步骤 8 - 检查子功能结果是否有效。

  • 步骤 9 - 对每个其他子功能重复步骤 4-8。

  • 步骤 10 - 对剩余的子功能继续执行步骤 7 和 8。

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

灰盒测试的好处

  • 软件质量正在提高。

  • 此方法侧重于用户的感知。

  • 开发人员从灰盒测试中受益,因为他们有更多时间来解决错误。

  • 灰盒测试结合了黑盒和白盒测试,让您同时获得两者的优势。

  • 灰盒测试人员无需具备广泛的编程专业知识即可评估产品。

  • 集成测试从这种测试方法中受益。

  • 这种测试方法确保开发人员和测试人员在同一页面上。

  • 此方法可用于测试复杂的应用程序和情况。

  • 这种测试是非侵入性的。

灰盒测试的缺点

  • 灰盒测试不允许进行完整的白盒测试,因为无法访问源代码。

  • 这种测试方法使得更难以在分布式系统中关联问题。

  • 为灰盒测试创建测试用例很困难。

  • 由于访问权限有限,代码路径遍历的访问也受到限制。

灰盒测试困难

  • 当被测组件以某种方式失败时,可能会终止持续操作。

  • 当测试完全运行但结果的内容错误时。

总结

灰盒测试可以最大程度地降低系统故障的总体成本,并防止其进一步蔓延。

灰盒测试最适合 GUI、功能测试、安全评估、在线应用程序、Web 服务和其他类似应用程序。

灰盒测试方法 −

  • 矩阵测试

  • 回归测试

  • OAT 或正交数组测试

  • 模式测试

常见问题

问答 1) 在软件测试中,什么是灰盒测试?

回答 − 灰盒测试用于消除由应用程序内部结构问题引起的任何故障。此测试方法结合了黑盒和白盒测试技术。

问答 2) 提供一个灰盒测试的示例。

回答 − 灰盒测试包括黑盒和白盒测试。所有具体的文档和需求都提供给测试人员。例如,如果网站的链接不起作用,则可以立即检查和更新 HTML 并实时确认。

更新于: 2021 年 9 月 24 日

1K+ 浏览量

开启你的职业生涯

通过完成课程获得认证

开始学习
广告