发表时间: 2024-03-21 21:14:29
作者: 北京青草莓科技有限公司
浏览:
黑盒模糊测试
主要基于模型变异,通过被测程序外部接口(比如网络接口,命令输入,文件输入等)进行测试,测试过程中不需要获取被测程序运行状态,主要属于系统阶段测试手段
灰白盒模糊测试
主要通过被测程序的函数调用进行测试,测试过程中需要动态获取被测程序运行状态进行样本进化已提高测试覆盖率,主要属于单元阶段测试手段
为何还要做黑盒模糊测试
1.一些测试场景不适合做灰白盒测试
一些公司的验证部门对产品进行安全验证,或者第三方公司的检测场合
一些嵌入式场景,运行系统不适合灰白盒模糊测试工具运行
2.一些测试目标灰白盒模糊测试效果不好,应该同时进行黑盒模糊测试
复杂协议多交互场景
复杂结构,字段之间相互关联,比如有checksum,md5等校验字段等场景
3.一些问题灰白盒发现不了
举个例子,比如内存释放后使用,有时候是一个线程分配内存,一个线程释放内存,一个线程使用内存,如果存在内存释放后使用的bug,这个错误的产生场景比较复杂,一般灰白盒测试用例很难构造
为何还要做灰白盒模糊测试
1.一些场景做灰白盒测试更适合
比如对外只提供函数接口
2.早期研发使用灰白盒模糊测试效率更高
早期单元测试,研发人员拥有被测源码,使用灰白盒测试,能够利用样本进化等功能测试早期发现更多的问题
3.一些逻辑功能问题灰白盒模糊测试发现起来成本更低
灰白盒模糊测试往往基于函数或简单调用上下文,针对函数返回值并控制变异输入,能辅助发现逻辑功能问题
而逻辑功能问题使用黑盒模糊测试手段发现成本很高
灰白盒模糊测试利用样本进化,一般写好被测程序的调用上下文就能进行测试,如果是研发人员进行,投入成本并不高,但是要追求高代码覆盖率,往往需要反复分析未覆盖代码,人工补充样本
黑盒模糊测试需要人工建模,一些复杂协议建模投入往往巨大,好的测试效果往往取决于模型的质量
一般来说,同一个被测目标,灰白盒模糊测试发现的问题更多,效率要更高些,但是黑盒模糊测试能发现一些灰白盒测试发现不了的问题,而且黑盒模糊测试是通过被测目标直接的外部接口进行测试,测试出来的问题平均价值更高
北京青草莓科技有限公司(模糊测试-解决方案提供商)
wanghao@cyan-strawberry.com
客服1