什么是“灰盒测试”?

灰盒测试,是参照更为人所熟知的“白盒测试”和“黑盒测试”概念的一种通俗的说法,通常是指介于这两种测试之间的测试方法。灰盒测试多用于应用程序的集成测试阶段,不仅关注针对集成系统的输入、输出值的正确性,同时也对程序的内部执行逻辑进行分析、监测或者验证。

灰盒测试-1

灰盒测试的常见方法就是在应用程序系统执行的过程中,利用插装、调试、日志或信号监测等多种技术对软件的内部执行过程进行分析、度量和验证,实现对软件内部缺陷的更全面的检测。对不同的应用程序,灰盒测试的目标也会有所差异。

对有高可靠性要求的嵌入式应用程序,灰盒测试的主要目标包括:

    • 对软件内部执行路径的监测和验证
    • 对任务、模块或函数的执行时间性能的检测和优化
    • 对中间变量、进程、CPU占用率和输出信号等中间状态的跟踪和度量
    • 对软件测试过程的覆盖率分析

对于上位机软件或Web应用程序,灰盒测试往往还会包含诸如安全漏洞检测、压力测试、软件成分分析等更广范围的目标。

为什么要做灰盒测试? 

因为,

    • 黑盒测试关注系统的输入输出接口的正确性,但无法对应用程序内部的错误进行分析和定位
    • 白盒测试可以分别严格测试每个函数/模块,但是无法反映系统集成的缺陷,并且测试的效率太低

灰盒测试正好可以弥补二者的不足,兼顾了测试的效率又能洞悉系统内部执行过程。灰盒测试也许还没有达到像“白盒测试”和“黑盒测试”那样的普遍地、标准化地应用到常见的研发流程中,然而灰盒测试的思想和方法对多数软件研发人员来说可能并不陌生,如使用调试器的单步执行观察程序执行逻辑、手动插入print()获取执行日志等方法。要想将灰盒测试的方案推广到研发流程中,只需要一个集成化的、易用的和自动化的解决方案。

难点和挑战

  • 手动灰盒测试效率太低,如单步调试或手动插装print()输出日志,且对系统资源损耗大,难以支持偶发的、不固定表现的bug的定位

  • 日志方式对数据采集、分析和重复利用比较困难,对海量的数据缺乏有效、直观的分析手段

  • 时间性能测试,主要依赖于示波器等仪器仪表,重复迭代太耗时耗力,且对软件内部模块的性能分析比较繁琐,也不易定位到问题根源

  • 测试方法过于零散,无法将灰盒测试形成标准化的连续测试流程

解决方案

  • 利用DT10灰盒测试和系统动态跟踪调试工具极简的插装算法,自动在软件内部插入测试点,用过对测试点的检测,实现对软件内部执行过程的跟踪。插装膨胀率低、效率高

  • 对嵌入式系统,提供基于多种标准接口的数据传输方式,包括以太网口、串口、GPIO/SPI, 异步总线口,CAN总线等,系统资源消耗小

  • DT10支持进行长达一个月的不间断测试,适用于对有可靠性要求的软件系统的灰盒测试

  • 基于DT10 Dynamic Tracer硬件采集的测试数据,提供丰富的分析、验证和报告功能,包括复杂缺陷回溯调试,性能测试、CPU负载分析、变量监控、内存分析、逻辑分析、硬件监测和覆盖率统计等常用灰盒测试功能

  • DT10的对硬件环境的适用范围广泛,支持对多核、多CPU环境的测试

  • 不限软件开发编译器和目标操作系统,对嵌入式环境的适用性高

相关资源

  • 白皮书

  • 博客

RELATED RESOURCES

下载申请

是否需要技术支持

验证码

温馨提示:

我们将通过电子邮件向您发送下载地址,请核对您填写的工作邮箱是否正确。

提 交