"打印-SP19_SAVIOR1:SAVIOR研究:基于错误驱动的混合测试方法"

需积分: 0 0 下载量 122 浏览量 更新于2024-01-16 收藏 1.42MB PDF 举报
打印 - SP19_SAVIOR1 是一篇关于软件测试方法的论文。该方法名为SAVIOR,是一种结合了模糊测试和共同符号执行的混合测试方法。在该方法中,模糊测试用于测试易于访问的代码区域,共同符号执行用于探索由复杂分支条件保护的代码块。通过这样的结合,SAVIOR能够更加深入地测试程序的状态空间。 在传统的软件测试中,模糊测试常用于随机生成输入并观察程序对输入的反应。然而,模糊测试仅仅测试了程序中易于访问的代码路径,无法深入到复杂的代码逻辑中。共同符号执行是一种静态和符号执行的结合体,它通过对程序进行符号执行来获得路径约束,再通过约束求解器来寻找新的输入测试用例。但共同符号执行的缺点是路径爆炸问题,即当程序的控制流图非常复杂时,共同符号执行的执行路径数量会急剧增加。 SAVIOR提出了一种将模糊测试和共同符号执行相结合的混合测试方法。在SAVIOR中,首先利用现有的模糊测试工具对程序进行模糊测试,生成一系列测试用例。然后,通过共同符号执行对这些测试用例进行深入的代码探索。共同符号执行在执行过程中会收集到程序的路径约束,这些路径约束用于对程序的状态空间进行进一步的探索。 具体来说,SAVIOR首先使用模糊测试来生成初始输入集合。然后,通过模糊测试将这些初始输入传递给共同符号执行引擎。在共同符号执行的过程中,引擎会根据路径约束和输入约束来生成新的测试用例。这些新的测试用例通过路径约束被限制在代码块的复杂分支条件中,从而能够深入探索更加复杂的代码逻辑。 SAVIOR的实验结果表明,与传统的模糊测试和共同符号执行方法相比,SAVIOR能够更好地发现程序中的漏洞和错误。在一系列测试程序上的实验中,SAVIOR相比于传统的模糊测试和共同符号执行方法,在发现漏洞和错误的数量上都有明显的提升。 总而言之,SAVIOR是一种结合了模糊测试和共同符号执行的混合测试方法。通过使用模糊测试和共同符号执行相互补充的特点,SAVIOR能够更好地探索程序的状态空间,发现更多的漏洞和错误。SAVIOR的实验结果表明,该方法在软件测试领域具有非常高的潜力和应用价值。