灰盒测试是一种软件测试技术,在对应用程序内部结构有部分了解的情况下对软件产品或应用程序进行测试。灰盒测试的目的是搜索和识别由于不恰当的代码结构或不恰当的应用程序使用而导致的缺陷。
在这个过程中,通常会发现与web系统相关的特定于上下文的错误。它通过集中于任何复杂系统的所有层来增加测试覆盖率。
灰盒测试是一种软件测试方法,它是白盒测试和黑盒测试方法的结合。
- 在白盒测试中,内部结构(代码)是已知的
- 在黑盒测试内部结构(代码)是未知的
- 在灰盒测试中,内部结构(代码)是部分已知的
- 白盒测试+黑盒测试= 灰盒测试
在软件工程中,灰盒测试能够测试应用程序的两个方面,表现层和代码部分。它主要用于集成测试和渗透测试。
灰盒测试的例子:当测试网站的链接或单独链接时,如果测试人员遇到这些链接的任何问题,那么他可以直接在HTML代码中进行更改,并可以实时检查。
为什么要进行灰盒测试
执行灰盒测试的原因如下:
- 它同时提供了黑盒测试和白盒测试的好处
- 它结合了开发人员和测试人员的输入,提高了整体产品质量
- 它减少了测试函数式和非函数式类型的漫长过程的开销
- 它为开发人员提供了足够的空闲时间来修复缺陷
- 测试是从用户的角度而不是从设计师的角度进行的
灰盒测试策略
要执行灰盒测试,测试人员没有必要访问源代码。测试是基于算法、体系结构、内部状态或程序行为的其他高级描述来设计的。
执行灰盒测试-
- 它应用了一种直接的黑盒测试技术
- 它基于需求测试用例的生成,因此,它在通过断言方法测试程序之前预先设置了所有的条件。
用于灰盒测试的技术是-
- 矩阵测试:这种测试技术包括定义程序中存在的所有变量。
- 回归测试:检查前一个版本中的更改是否回归了新版本中程序的其他方面。这将通过测试策略来完成,如重新测试所有,重新测试风险用例,在防火墙内重新测试。
- 正交阵列测试(OAT):它以最小的测试用例提供最大的代码覆盖率。
- 模式测试:这种测试是在以前系统缺陷的历史数据上执行的。与黑盒测试不同,灰盒测试在代码中挖掘并确定失败发生的原因
通常,灰盒方法使用自动化软件测试工具来进行测试。存根和模块驱动程序的创建是为了帮助测试人员手动生成代码。
执行灰盒测试的步骤是:
- 步骤1:识别输入
- 步骤2:识别输出
- 步骤3:确定主要路径
- 步骤4:确定子函数
- 步骤5:为子函数开发输入
- 步骤6:为子函数开发输出
- 步骤7:执行子函数的测试用例
- 步骤8:验证Subfunctions的正确结果
- 步骤9:对其他子函数重复步骤4和8
- 步骤10:对其他子函数重复步骤7和8
灰盒测试的测试用例可能包括,GUI相关的,安全相关的,数据库相关的,浏览器相关的,操作系统相关的,等等。
灰盒测试挑战
- 当被测组件遇到某种类型的故障时,可能会导致正在进行的操作中止
- 当测试完全执行但结果内容不正确时。
总结:
- 通过灰盒测试可以降低系统缺陷的总体成本,并防止其进一步通过
- 灰盒测试更适合于GUI、功能测试、安全评估、web应用程序、web服务等。
- 用于灰盒测试的技术
- 矩阵测试
- 回归测试
- OAT或正交阵列测试
- 模式测试