原文链接:
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相关,安全相关,数据库相关,浏览器相关,操作系统相关等。
灰盒测试的挑战
- 当被测组件遇到某种故障时,可能会导致正在进行的操作中止
- 测试执行完毕,但结果内容不正确。