一种进行模糊测试的方法及系统技术方案

技术编号:3893843 阅读:236 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种进行模糊测试的方法,该方法首先选择一组初始测试用例作为第一代群体,将该第一代群体作为当前群体;然后采用当前群体中的测试用例对被测软件程序进行测试,并根据得到的测试结果对测试用例进行淘汰,再根据当前群体中未被淘汰的测试用例产生下一代群体,此时,若结束条件满足,则结束测试,若结束条件没有满足,则以得到的下一代群体作为当前群体继续循环进行上述测试,直至结束条件满足。本发明专利技术还公开了一种进行模糊测试的系统。应用本发明专利技术能够提高被测软件程序的安全性。

【技术实现步骤摘要】

本专利技术涉及软件测试
,特别涉及一种进行模糊测试的方法及系统
技术介绍
软件(包括应用程序、协议等)的安全性测试实际上是在软件输入空间中的一种 探测。软件的输入空间由该软件的所有可能的输入、或所有可能的输入的组合构成。以下 将软件的每一个可能的输入称为一个输入点。穷举是验证软件行为正确性的一种最直接的 方法,然而,穷举对大部分案例来说不具备可操作性,因为通常情况下,软件程序的输入空 间非常巨大。相比于穷举的方法来说,模糊测试(Fuzz Testing)是一种更具可行性的黑盒 测试方法。模糊测试是一种软件测试技术,该技术构造一些随机或半随机的数据(称为 fuzz)作为被测试软件程序的输入,并观察被测试软件程序的工作状况。模糊测试是检查 程序容错性的一种重要的测试手段。如果被测软件程序出错(例如崩溃了或导致内置的 断言验证代码为假),就表明检测出了缺陷。用于产生fuzz数据的程序称为模糊测试器 (Fuzzers),模糊测试器是进行渗透测试或其它测试的有效工具。作为一种黑盒测试工具,模糊测试通常用于大型软件开发项目。模糊测试被认为 能够提高软件的安全性,这是因为模糊测试总是能检测出一些测试人员未能发现的缺陷, 这些缺陷往往会被软件测试工程师所忽略。目前,最常用的模糊测试是基于字符的,基于字 符的模糊测试提供随机数据流(从文件或其它数据流中提供,例如从套接字中提供)作 为被测软件程序的输入,基于字符的模糊测试正广泛应用于协议或网络服务器的安全性测 试o模糊测试的优势在于进行测试的成本相对较低、且完全可以自动实现;并且,模 糊测试经常能找出比较严重、且可被利用的缺陷(bug),这些bug可被攻击者加以利用。模 糊测试的主要问题在于它大部分时候只能找出一些很简单的缺陷。这是因为现有模糊 测试器大都比较简单、不具备智能性,它们通常都是基于预先定义的模式,并依靠一些杂乱 无章的输入去试图找出被测软件程序中新的缺陷,它不具备任何从以往的测试中学习可以 帮助它选择出更好的测试用例的能力。美国专利号为US5805795-A1,专利技术名称为“用于产生包含计算机程序产品最佳测 试用例集的计算机程序产品测试的方法和计算机程序产品,以及选择SAME的方法”的专利 中公开了一种方法,该方法包括1)识别程序执行过程中所获取到的程序块;2)执行遗传 算法(GA Kenetic Algorithm)以确定一个测试用例集,该算法能够在最短的时间内获取 到最多的被识别的块,并为每一个测试子集确定一个适应度,然后检验测试子集是否包含 在另一个表达中从而计算一个新的适应度,直至获取到所有测试用例的适应度。该方法需 要获取被测软件程序的源代码,显然,它已经不是一种黑盒测试方案。http://www. chinaecnet. com/s jyy/sJ004632. asp 上登载了一篇题为“黑盒测试 中遗传算法的应用”的文章。该文章中描述了一种采用遗传算法为测试输入划分等价类,以加速黑盒测试速度的方法。该方法旨在提高测试的功能与效率,并不涉及任何与安全性测 试相关的
技术实现思路
。http //www. blackhat. com/presentations/bh-usa-06/BH-US-06Embleton. pdf 上登载了一篇题为“sidewinder-—种恶意输入技术的进化向导系统”的文章。该文章 描述了一种类似于上述美国专利号为US5805795-A1的专利申请的技术,该技术采用遗传 算法作为启发式方法来充当模糊测试的向导。遗传算法的适应度也基于代码覆盖,例如 具有大的代码覆盖率的有用的输入可以达到前所未有的控制流程图区域(CFG:C0ntr0l FlowGraph)。该技术与美国专利号为US5805795-A1的技术的唯一不同之处在于该技术无 需获取源代码,取而代之的是使用交互式反汇编(IDA)的插件软件微分分析(SDA),对软件 进行反编译,并构造相应的控制流程图。但是,对于大部分案例而言,根据软件构造其准确 的控制流程图不具备可操作性,而没有控制流程图就无法使用代码覆盖率对遗传算法的适 应度进行计算。由上述可见,尽管相对于完全预先定义的测试用例来说,模糊测试通过随机化处 理能够找出一些被忽略的安全缺陷,但是,模糊测试仍然是一种基于预先定义的测试规则 的测试,因此,模糊测试仍然过于简单,无法用于在输入空间进行启发式的探测,因而无法 保证被测软件程序的安全性。
技术实现思路
有鉴于此,本专利技术的主要目的在于提供一种进行模糊测试的方法,以提高被测软 件程序的安全性。本专利技术的另一个目的在于提供一种进行模糊测试的系统,以提高被测软件程序的 安全性。为达到上述目的,本专利技术的技术方案具体是这样实现的一种进行模糊测试的方法,包括A、选择一组初始测试用例作为第一代群体,将所述第一代群体作为当前群体;B、采用当前群体中的测试用例对被测软件程序进行测试,得到测试结果;C、根据所述测试结果对测试用例进行淘汰;D、根据当前群体中未被淘汰的测试用例产生下一代群体;E、判断是否满足结束条件,若没有满足,则以D操作所产生的下一代群体作为当 前群体,重复B D的操作,若满足,则结束本方法流程。所述测试结果可以包括错误响应、正确响应、没有响应或被测软件程序崩溃。较佳地,所述C操作可以包括C1、根据所述测试结果计算每一个测试用例的适应度;C2、根据所述适应度对测试用例进行淘汰。进一步地,该方法可以包括预先设置增长因子、降低因子和探测度门限;所述增 长因子、降低因子、探测度门限和适应度的取值范围均为大于等于0、且小于等于1的实数;所述C1操作可以包括如果测试用例导致的测试结果为被测软件程序崩溃,则将所述测试用例的适应度 置为1 ;如果测试用例导致的测试结果为正确响应,则使所述测试用例的适应度增加所述 增长因子对应的值;如果测试用例导致的测试结果为错误响应或没有响应,则使所述测试用例的适应 度减低所述降低因子对应的值;如果测试用例的探测度小于等于所述探测度门限,则令所述测试用例的适应度等 于其自身的(1-所述测试用例的探测度)倍;如果测试用例的探测度大于所述探测度门限,则令所述测试用例的适应度等于其 自身的(1+所述测试用例的探测度)倍。进一步地,该方法可以包括预先设置淘汰门限;所述C2操作可以包括将适应度低于所述淘汰门限的测试用例淘汰。该方法还可以进一步预先设置淘汰率;所述C2操作可以包括根据所述预先设置的淘汰率,以测试用例的适应度越高, 淘汰该测试用例的概率越低的方式进行淘汰。较佳地,所述预先设置淘汰率可以为按照d = en_N进行设置;其中d表示淘汰率;n为当前群体的大小;N为群体大小的统计平均值。较佳地,所述D操作可以包括D1、将当前群体中未被淘汰的测试用例映射为基因编码;D2、根据当前群体中每个测试用例的适应度及其对应的基因编码进行繁衍,得到 下一代测试用例的基因编码;D3、将所述得到的下一代测试用例的基因编码映射为对应的测试用例。所述结束条件可以包括导致被测软件程序崩溃的测试用例达到预先设置的数 量、或对输入空间的测试覆盖率达到预先设置的比例。一种进行模糊测试的系统,包括测试模块、被测软件程序、监视模块、加载模块、 遗传算法模块、存储模块和判断模块,本文档来自技高网
...

【技术保护点】
一种进行模糊测试的方法,包括:A、选择一组初始测试用例作为第一代群体,将所述第一代群体作为当前群体;B、采用当前群体中的测试用例对被测软件程序进行测试,得到测试结果;C、根据所述测试结果对测试用例进行淘汰;D、根据当前群体中未被淘汰的测试用例产生下一代群体;E、判断是否满足结束条件,若没有满足,则以D操作所产生的下一代群体作为当前群体,重复B~D的操作,若满足,则结束本方法流程。

【技术特征摘要】

【专利技术属性】
技术研发人员:唐文
申请(专利权)人:西门子中国有限公司
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1