什么是灰盒测试?理论与实例

1,017 阅读4分钟

原文链接:

What is Grey Box Testing? Techniques, Example by Thomas Hamilton

灰盒测试

灰盒测试是一种软件测试技术,该技术的应用依赖一定的背景信息,即:了解软件产品或应用程序中部分内部结构。灰盒测试的目的在于搜索和识别缺陷,而这些缺陷通常是由于代码结构不当或应用程序使用不当而引发的。

在灰盒测试的过程中,通常会识别出与系统(如 Web系统)相关的特定上下文错误。专注于覆盖复杂系统的每一层,是灰盒测试中提升测试覆盖率的方式。

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

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

灰盒测试

在软件工程中,对于被测应用程序,灰盒测试提供了测试表示层(presentation layer)代码(code)两部分的能力。它主要用于集成测试渗透测试

灰盒测试示例: 当测试网站中的链接或孤立链接等特性时,如果测试人员遇到这些链接的任何问题,TA可以直接在 HTML 代码中进行更改,并可以实时检查。

为什么要进行灰盒测试

执行灰盒测试具有以下优势:

  • 具有黑盒测试和白盒测试的综合优势
  • 结合了开发人员和测试人员的意见,提高了整体产品质量
  • 缩减了测试功能和非功能类型的特性时的漫长过程开销
  • 为开发人员提供了足够的空闲时间来修复缺陷
  • 测试是从用户的角度而不是设计者的角度进行的

灰盒测试策略

要执行灰盒测试,测试人员不必访问源代码。测试设计可以基于算法、体系结构、内部状态、其他程序行为的上层描述等信息。

执行灰盒测试:
  • 应用一种简单的黑盒测试技术
  • 测试用例是基于需求而生成的,例如,在程序通过断言方法进行测试之前,需要预先设定了所有条件。
用于灰盒测试的技术:
  • 矩阵测试: 这种测试技术涉及定义程序中存在的所有变量。
  • 回归测试:检查先前版本的变化是否使新版本中程序的其他方面回归。这将通过测试策略来完成,例如重新测试所有用例、重新测试有风险的用例、在防火墙内重新测试。
  • 正交阵列测试或 OAT:它以最少的测试用例提供最大的代码覆盖率。
  • 模式测试: 这种测试是对以前系统缺陷的历史数据进行的。与黑盒测试不同,灰盒测试深入代码并确定失败原因

通常,灰盒方法使用自动化软件测试工具来进行测试。测试桩和模块驱动程序可以用于减轻测试人员手动生成代码的负担。

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

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

灰盒测试的挑战

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

总结

  • 通过灰盒测试可以降低发现系统缺陷的总体成本,并阻止其流入下一环节

  • 灰盒测试更适合 GUI、功能测试、安全评估、Web 应用程序、Web 服务等。

  • 用于灰盒测试的技术

    • 矩阵测试
    • 回归测试
    • OAT 或正交阵列测试
    • 模式测试