国内刊号:11-2560/TP
国际刊号:1000-9825
发布日期:
作者:谢肖飞,李晓红,陈翔,孟国柱,刘杨
单位:谢肖飞,天津市先进网络重点实验室(天津大学), 天津 30005011,李晓红,天津市先进网络重点实验室(天津大学), 天津 30005002,陈翔,南通大学 计算机科学与技术学院, 江苏 南通 22601903,孟国柱,信息安全国家重点研究室(中国科学院 信息工程研究所), 北京 10009304,刘杨,School of Computer Science and Engineering, Nanyang Technological University 639798, Singapore05
关键词:软件质量保障;模糊测试;符号执行;测试用例生成
基金:国家自然科学基金(61572349,61272106)
软件测试是保障软件质量的常用方法,如何获得高覆盖率是测试中十分重要且具有挑战性的研究问题.模糊测试与符号执行作为两大主流测试技术已被广泛研究并应用到学术界与工业界中,这两种技术都具有一定的优缺点:模糊测试随机变异生成测试用例并动态执行程序,可以执行并覆盖到较深的分支,但其很难通过变异的方法生成覆盖到复杂条件分支的测试用例.而符号执行依赖约束求解器,可以生成覆盖复杂条件分支的测试用例,但在符号化执行过程中往往会出现状态爆炸问题,因此很难覆盖到较深的分支.有工作已经证明,将符号执行与模糊测试相结合可以获得比单独使用模糊测试或者符号执行更好的效果.分析符号执行与模糊测试的优缺点,提出了一种基于分支覆盖将两种方法结合的混合测试方法——Afleer,结合双方优点从而可以生成具有更高分支覆盖率的测试用例.具体来说,模糊测试(例如AFL)为程序快速生成大量可以覆盖较深分支的测试用例,符号执行(例如KLEE)基于模糊测试的覆盖信息进行搜索,仅为未覆盖到的分支生成测试用例.为了验证Afleer的有效性,选取标准程序集LAVA-M以及实际项目oSIP作为评测对象,以漏洞检测能力以及覆盖能力作为评测指标.实验结果表明:(1)在漏洞检测能力上,Afleer总共可以发现755个漏洞,而AFL仅发现1个;(2)在覆盖能力上,Afleer在标准程序集上以及实际项目中都有不同程度的提升.其中,在oSIP中,Afleer比AFL在分支覆盖率上提高2.4倍,在路径覆盖率上提升6.1倍.除此之外,Afleer在oSIP中还检测出一个新的漏洞.
来源:2019年第10期
《软件学报》期刊编辑部