什么是“灰盒测试”?
灰盒测试,是参照更为人所熟知的“白盒测试”和“黑盒测试”概念的一种通俗的说法,通常是指介于这两种测试之间的测试方法。灰盒测试多用于应用程序的集成测试阶段,不仅关注针对集成系统的输入、输出值的正确性,同时也对程序的内部执行逻辑进行分析、监测或者验证。
灰盒测试的常见方法就是在应用程序系统执行的过程中,利用插装、调试、日志或信号监测等多种技术对软件的内部执行过程进行分析、度量和验证,实现对软件内部缺陷的更全面的检测。对不同的应用程序,灰盒测试的目标也会有所差异。
对有高可靠性要求的嵌入式应用程序,灰盒测试的主要目标包括:
• 对软件内部执行路径的监测和验证
• 对任务、模块或函数的执行时间性能的检测和优化
• 对中间变量、进程、CPU占用率和输出信号等中间状态的跟踪和度量
• 对软件测试过程的覆盖率分析
对于上位机软件或Web应用程序,灰盒测试往往还会包含诸如安全漏洞检测、压力测试、软件成分分析等更广范围的目标。
为什么要做灰盒测试?
因为,
• 黑盒测试关注系统的输入输出接口的正确性,但无法对应用程序内部的错误进行分析和定位
• 白盒测试可以分别严格测试每个函数/模块,但是无法反映系统集成的缺陷,并且测试的效率太低
灰盒测试正好可以弥补二者的不足,兼顾了测试的效率又能洞悉系统内部执行过程。灰盒测试也许还没有达到像“白盒测试”和“黑盒测试”那样的普遍地、标准化地应用到常见的研发流程中,然而灰盒测试的思想和方法对多数软件研发人员来说可能并不陌生,如使用调试器的单步执行观察程序执行逻辑、手动插入print()获取执行日志等方法。要想将灰盒测试的方案推广到研发流程中,只需要一个集成化的、易用的和自动化的解决方案。
难点和挑战
手动灰盒测试效率太低,如单步调试或手动插装print()输出日志,且对系统资源损耗大,难以支持偶发的、不固定表现的bug的定位
日志方式对数据采集、分析和重复利用比较困难,对海量的数据缺乏有效、直观的分析手段
时间性能测试,主要依赖于示波器等仪器仪表,重复迭代太耗时耗力,且对软件内部模块的性能分析比较繁琐,也不易定位到问题根源
测试方法过于零散,无法将灰盒测试形成标准化的连续测试流程
解决方案
利用DT10灰盒测试和系统动态跟踪调试工具极简的插装算法,自动在软件内部插入测试点,用过对测试点的检测,实现对软件内部执行过程的跟踪。插装膨胀率低、效率高
对嵌入式系统,提供基于多种标准接口的数据传输方式,包括以太网口、串口、GPIO/SPI, 异步总线口,CAN总线等,系统资源消耗小
DT10支持进行长达一个月的不间断测试,适用于对有可靠性要求的软件系统的灰盒测试
基于DT10 Dynamic Tracer硬件采集的测试数据,提供丰富的分析、验证和报告功能,包括复杂缺陷回溯调试,性能测试、CPU负载分析、变量监控、内存分析、逻辑分析、硬件监测和覆盖率统计等常用灰盒测试功能
DT10的对硬件环境的适用范围广泛,支持对多核、多CPU环境的测试
不限软件开发编译器和目标操作系统,对嵌入式环境的适用性高
相关资源
白皮书
博客
如何开发高质量的软件_白皮书
点击下载
嵌入式设备的耗电量可视化实践_白皮书
点击下载
DT10专业技术访谈_白皮书
点击下载
DT10如何帮助用户有效达成灰盒测试目标_白皮书
点击下载
RELATED RESOURCES
下载申请