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