近年来,人工智能的飞速发展为模糊测试技术的创新提供了助力,使模糊测试各维度的能力得到显著提升。
以安般科技易恒智能模糊测试系统为例,易恒使用定制的编译器对程序进行插桩,通过插桩反馈结合AI模型自动变异测试用例,实现对缺陷的快速发现和精准定位,从而加快开发效率,提升程序的安全性和稳定性。
此前,我们对“模糊测试”部分热门问题进行了解答(点击回顾第一期),有不少朋友留言提出了延伸问题,并对安般科技模糊测试产品有很大的兴趣,于是我们进行了问题搜集,再次对模糊测试技术进行更深入地阐述,并着重对安般科技模糊测试技术、产品方面的问题进行了解答。
- 衡量模糊测试技术/产品能力有哪些核心指标?
衡量模糊测试技术/产品能力的核心指标包括:生成用例数、覆盖率、挖掘Bug的数量、测试用时等。
在安般科技进行的智能模糊测试与传统人工测试对比实验中,可以发现智能模糊测试在用例生成、覆盖率、挖掘能力、测试效率等方面,指标显著提升。
- 安般科技的测试工具可以获取覆盖率吗?是如何提升覆盖率的?
安般科技的测试工具支持获取覆盖率数据,通过插桩技术,在动态测试的过程中可以执行路径信息,进而计算测试覆盖率。
覆盖率包括(但不限于)语句覆盖率、分支覆盖率、函数覆盖率,安般科技易恒通过优化遗传算法、引导机制、调度策略等核心技术,选取更有价值的种子探索更深更广的程序覆盖,以提高测试覆盖率。
- 模糊测试技术是否对程序输出结果做判断?能否检查到功能性的问题?
模糊测试技术是自动化的软件负面测试技术,通过向动态运行的被测目标发送非预期限制的输入,而检测软件自身的健壮性。模糊测试技术理论上擅长发现那些引起系统运行异常的缺陷,同时它也特别适合发现未知/0-day漏洞,但无法查找软件逻辑上的缺陷例如功能性问题。
不过模糊测试技术通过定制消毒器也可以实现对功能输出的判断,但需要根据不同的被测程序分别定制。
- 功能测试和模糊测试有什么区别?
功能测试是正面测试的典型应用,模糊测试是负面测试的典型应用,二者相辅相成。
从目前软件行业来看,大多数公司更注重的是正面测试,负面测试极为不充分,因此模糊测试技术作为自动化负面测试工具,在提高测试效率的同时也有助于提升软件产品的质量。
- 面对几万行甚至更多的复杂程序,如何来进行测试?
易恒智能模糊测试系统对上万行的程序也可以直接测试,但是测试效率可能会略低,建议挑选拆分后的、比较关注的核心模块进行模糊测试。
- 安般科技易恒是怎么生成测试用例的?是自动化生成的吗?
安般科技易恒是基于灰盒模糊测试理论,通过改造过的编译器,在编译的过程中对被测代码进行插桩,以便在动态测试过程中获得被测程序的执行路径信息,并根据路径反馈的信息结合遗传算法自动生成及优化测试用例,通过这种机器自主学习的机制使生成的测试用例能够覆盖程序更深更广的分支,可以触发程序深层次的缺陷。测试用例是全自动化生成的,平均每秒可以进行上百次有效测试。
- 安般科技易恒生成测试用例是根据不同的系统生成的吗?
安般科技易恒基于用户提供的一个或多个初始测试用例以及程序路径反馈信息,自动生成海量测试用例,根据不同的被测程序生成不同的测试用例,测试过程无需人工干预,可做到全流程自动化测试。
- 可以解释一下之前所提到的“插桩”吗?插桩后程序性能是否有损耗?
插桩,是在保证被测程序原有逻辑完整性的基础上在程序中插入一些探针代码,这些代码本质上就是进行信息动态采集的代码片段。通过探针的执行并反馈程序运行的特征数据,对这些数据分析可以获得程序的逻辑覆盖等动态信息,从而实现测试目的。
插桩后程序性能会有损耗,但损耗非常小,影响不大。
- 插桩完成的二进制文件,可以反编译出源码吗?
目前技术很难完全还原出编译型语言,不必担心二进制文件造成源代码泄露,插桩过程不影响被测模块本身的逻辑功能。
“你问我答”第二期到这里就结束了!
如果你对模糊测试或我们的产品有疑惑,欢迎识别下方二维码填写问卷告诉我们!