CN110096448A - 一种兼顾深度以及广度的模糊测试搜索方法 - Google Patents
一种兼顾深度以及广度的模糊测试搜索方法 Download PDFInfo
- Publication number
- CN110096448A CN110096448A CN201910389591.9A CN201910389591A CN110096448A CN 110096448 A CN110096448 A CN 110096448A CN 201910389591 A CN201910389591 A CN 201910389591A CN 110096448 A CN110096448 A CN 110096448A
- Authority
- CN
- China
- Prior art keywords
- depth
- queue
- byte
- variation
- mutation operator
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 93
- 238000000034 method Methods 0.000 title claims abstract description 19
- 230000035772 mutation Effects 0.000 claims abstract description 59
- 230000002068 genetic effect Effects 0.000 claims abstract description 5
- 125000000524 functional group Chemical group 0.000 claims description 2
- 230000005484 gravity Effects 0.000 claims description 2
- 230000007812 deficiency Effects 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
一种兼顾深度以及广度的模糊测试搜索方法,包括如下步骤:步骤一、动态削减低效变异算子:计算变异算子效益,并且据此调整各个变异算子的使用概率;步骤二、动态削减低效变异字节:分析当前测试输入,并且据此确定当前测试输入中的低效变异字节;步骤三、模糊测试引擎:根据变异算子使用概率以及低效变异字节,执行遗传演化算法,从而生成子女输入;步骤四、基于代码覆盖差异的局部深度优先搜索:分析当前测试输入所生成的子女输入间的代码覆盖差异,并且据此确定深度优先搜索范围。本发明能够弥补模糊测试的不足,利用少量程序执行信息,削减低效操作,增强代码覆盖率,从而提高测试效率以及质量。
Description
技术领域
本发明属于模糊测试搜索策略领域,具体涉及一种兼顾深度以及广度的模糊测试搜索方法。
背景技术
模糊测试作为自动测试输入生成主要技术之一,其核心思想是通过自动或者半自动的方式,生成大量随机数据,送入被测程序之中参与执行,同时监控程序执行状态、检测程序最终执行结果,以期能够发现程序错误。模糊测试大致可以分为:基于变异的模糊测试以及基于模型的模糊测试。基于模型的模糊测试需要用户提供输入模型,需要人工参与,而基于变异的模糊测试可以自动完成测试。但是,基于变异的模糊测试往往使用宽度优先搜索策略或者深度优先搜索策略,无法高效生成有效测试输入。
发明内容
本发明针对现有技术中的不足,提供一种兼顾深度以及广度的模糊测试搜索方法。
为实现上述目的,本发明采用以下技术方案:
一种兼顾深度以及广度的模糊测试搜索方法,其特征在于,包括如下步骤:
步骤一、动态削减低效变异算子:计算变异算子效益,并且据此调整各个变异算子的使用概率;
步骤二、动态削减低效变异字节:分析当前测试输入,并且据此确定当前测试输入中的低效变异字节;
步骤三、模糊测试引擎:根据变异算子使用概率以及低效变异字节,执行遗传演化算法,从而生成子女输入;
步骤四、基于代码覆盖差异的局部深度优先搜索:分析当前测试输入所生成的子女输入间的代码覆盖差异,并且据此确定深度优先搜索范围。
为优化上述技术方案,采取的具体措施还包括:
进一步地,步骤一中,所述变异算子是指一类变异操作集合;所述变异算子效益是指截至目前为止,变异算子所生成的队列种子数量除以变异算子所消耗的时间;变异算子使用概率的调整原则是:如果变异算子效益越低,那么变异算子中的变异操作在步骤三中的执行概率就会越低。
进一步地,步骤二中,所述变异字节是指当前测试输入中的任意一个字节;所述低效变异字节是指某个变异字节;低效变异字节的确定原则是:如果某个变异字节并不属于任何功能群组,这个变异字节成为低效变异字节;如果某个变异字节属于某个功能群组,并且这个功能群组长度超过功能群组长度阈值,并且这个变异字节处于当前测试输入中间位置,那么这个变异字节成为低效变异字节。
进一步地,步骤二中,所述功能群组是指按照给定原则识别出的当前测试输入中的一组连续变异字节,具体原则是:如果变异字节翻转之后所生成的子女输入执行路径发生改变,这个变异字节属于一个功能群组;如果两个相邻变异字节分别翻转之后所生成的子女输入之间执行路径相同,并且与原执行路径不同,那么两个变异字节属于同一功能群组。
进一步地,步骤三中,针对当前测试输入执行遗传演化算法;变异算子中的变异操作执行概率被调整成步骤一中的使用概率;低效变异字节不会执行变异操作;从当前测试输入所生成的子女输入中,按照给定原则挑选队列种子加入队列;更新各个变异算子所生成的队列种子数量以及各个变异算子所消耗的时间。
进一步地,步骤三中,所述队列是指存储所有队列种子的线性表;所述队列种子是指在测试过程中,能够覆盖之前一直没有覆盖过的某段代码的测试输入,所有队列种子将存储在队列之中。
进一步地,步骤四中,在基于代码覆盖差异的局部深度优先搜索过程中,针对当前测试输入所生成的队列种子,按照给定原则从中进行挑选并且加入后续局部深度优先搜索:第一个所生成的队列种子将会加入后续局部深度优先搜索;如果第二个所生成的队列种子相比较于第一个所生成的队列种子,两者间的代码覆盖差异超过代码覆盖差异阈值,那么第二个所生成的队列种子将会加入后续局部深度优先搜索;以此类推,如果候选种子相比较于前面已选中的队列种子,两者间的代码覆盖差异超过代码覆盖差异阈值,那么候选种子将会加入后续局部深度优先搜索;当局部深度优先搜索结束后,返回局部深度优先搜索的根节点,沿着队列寻找没有探索过的队列种子,作为新的局部深度优先搜索的根节点;当前探索队列种子将会送入步骤一中,如此往复,直至测试满足覆盖要求或到达时限。
进一步地,步骤四中,所述没有探索过的队列种子是指截至目前为止,没有进入步骤一的队列种子;两组测试输入间的代码覆盖差异是指第二组测试输入能够覆盖、但是第一组测试输入不能覆盖的基本块,在第一组测试输入能够覆盖的基本块中所占的比重;所述候选种子是指在局部深度优先搜索过程中,等待比较代码覆盖差异的,并且据此判断是否需要加入后续局部深度优先搜索的队列种子。
本发明的有益效果是:能够弥补模糊测试的不足,利用少量程序执行信息,削减低效操作,增强代码覆盖率,从而提高测试效率以及质量。
附图说明
图1为本发明系统结构图。
图2为本发明工作流程图。
图3为本发明低效变异字节示意图。
图4为本发明基于代码覆盖差异的局部深度优先搜索示意图一。
图5为本发明基于代码覆盖差异的局部深度优先搜索示意图二。
图6为本发明基于代码覆盖差异的局部深度优先搜索示意图三。
具体实施方式
现在结合附图对本发明作进一步详细的说明。
如图1、图2所示,图1是为本发明系统结构图,图2是为本发明工作流程图。本发明系统由动态削减低效变异算子、动态削减低效变异字节、模糊测试引擎以及基于代码覆盖差异的局部深度优先搜索组成。各部分完成以下四步。
步骤一:动态削减低效变异算子。
变异算子是指一类变异操作集合,如图2中的比特翻转、字节翻转。比特翻转作为变异算子由比特翻转变异操作所组成。
变异算子效益是指截至目前为止,变异算子所生成的队列种子数量除以变异算子所消耗的时间。如图2中的比特翻转变异算子效益是指截至目前为止,比特翻转所生成的队列种子数量除以比特翻转所消耗的时间。
在动态削减低效变异算子过程中,以比特翻转、字节翻转效益作为基准,如果其它某个变异算子效益低于这个基准,那么变异算子中的变异操作在步骤三中的执行概率就会降低。
步骤二:动态削减低效变异字节。
变异字节是指当前测试输入中的任意一个字节,如图3所示一个测试输入,k号字节就是一个变异字节。功能群组是指按照给定原则识别出的当前测试输入中的一组连续变异字节,如图3所示,假设k号字节到n号字节分别翻转之后,新生成的执行路径之间相同,并且与原执行路径不同,同时与(k-1)号字节翻转之后新生成的执行路径不同,与(n+1)号字节翻转之后新生成的执行路径不同,那么k号字节到n号字节这样一段连续字节就是一个功能群组。
低效变异字节是指某个变异字节,低效变异字节确定原则:如果某个变异字节并不属于任何功能群组,这个变异字节成为低效变异字节;如果某个变异字节属于某个功能群组,并且这个功能群组长度超过8,并且这个变异字节并非功能群组首部4个字节或者尾部4个字节,那么这个变异字节成为低效变异字节。
步骤三:模糊测试引擎。
如图2所示,所有变异算子按序针对当前测试输入执行操作,生成子女输入,在执行过程中:变异算子中的变异操作执行概率被调整成步骤一中的使用概率;低效变异字节不会执行变异操作。
从当前测试输入所生成的子女输入中,按照给定原则挑选队列种子加入队列;更新各个变异算子所生成的队列种子数量以及各个变异算子所消耗的时间。队列是指存储所有队列种子的线性顺序数据结构。队列种子是指在测试过程中,能够覆盖之前一直没有覆盖过的某段代码的测试输入,所有队列种子将存储在队列之中。
步骤四:基于代码覆盖差异的局部深度优先搜索。
如图4、图5、图6所示,图4、图5、图6是基于代码覆盖差异的局部深度优先搜索示意图,图中每个节点代表一个测试输入,节点P代表当前测试输入,节点A、B、C、D是当前测试输入按照时间顺序所生成的所有队列种子。在局部深度优先搜索中,如图4所示,测试输入A作为第一个所生成的队列种子将会加入后续局部深度优先搜索;如图5所示,测试输入B作为第二所生成的队列种子如果想要加入后续局部深度优先搜索,需要测试输入A与测试输入B的代码覆盖差异超过0.5;如图6所示,此时,测试输入A、C已经选中加入后续局部深度优先搜索,测试输入B没有选中,那么测试输入D如果想要加入后续局部深度优先搜索,需要测试输入A、C与测试输入D的代码覆盖差异超过0.5。
两组测试输入间的代码覆盖差异,比如测试输入A与测试输入B的代码覆盖差异是指,测试输入B能够覆盖但是测试输入A不能覆盖的基本块数量除以测试输入A能够覆盖的基本块数量,所得到的比值。
需要注意的是,发明中所引用的如“上”、“下”、“左”、“右”、“前”、“后”等的用语,亦仅为便于叙述的明了,而非用以限定本发明可实施的范围,其相对关系的改变或调整,在无实质变更技术内容下,当亦视为本发明可实施的范畴。
以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。
Claims (8)
1.一种兼顾深度以及广度的模糊测试搜索方法,其特征在于,包括如下步骤:
步骤一、动态削减低效变异算子:计算变异算子效益,并且据此调整各个变异算子的使用概率;
步骤二、动态削减低效变异字节:分析当前测试输入,并且据此确定当前测试输入中的低效变异字节;
步骤三、模糊测试引擎:根据变异算子使用概率以及低效变异字节,执行遗传演化算法,从而生成子女输入;
步骤四、基于代码覆盖差异的局部深度优先搜索:分析当前测试输入所生成的子女输入间的代码覆盖差异,并且据此确定深度优先搜索范围。
2.如权利要求1所述的一种兼顾深度以及广度的模糊测试搜索方法,其特征在于:
步骤一中,所述变异算子是指一类变异操作集合;所述变异算子效益是指截至目前为止,变异算子所生成的队列种子数量除以变异算子所消耗的时间;变异算子使用概率的调整原则是:如果变异算子效益越低,那么变异算子中的变异操作在步骤三中的执行概率就会越低。
3.如权利要求1所述的一种兼顾深度以及广度的模糊测试搜索方法,其特征在于:
步骤二中,所述变异字节是指当前测试输入中的任意一个字节;所述低效变异字节是指某个变异字节;低效变异字节的确定原则是:如果某个变异字节并不属于任何功能群组,这个变异字节成为低效变异字节;如果某个变异字节属于某个功能群组,并且这个功能群组长度超过功能群组长度阈值,并且这个变异字节处于当前测试输入中间位置,那么这个变异字节成为低效变异字节。
4.如权利要求3所述的一种兼顾深度以及广度的模糊测试搜索方法,其特征在于:
步骤二中,所述功能群组是指按照给定原则识别出的当前测试输入中的一组连续变异字节,具体原则是:如果变异字节翻转之后所生成的子女输入执行路径发生改变,这个变异字节属于一个功能群组;如果两个相邻变异字节分别翻转之后所生成的子女输入之间执行路径相同,并且与原执行路径不同,那么两个变异字节属于同一功能群组。
5.如权利要求1所述的一种兼顾深度以及广度的模糊测试搜索方法,其特征在于:
步骤三中,针对当前测试输入执行遗传演化算法;变异算子中的变异操作执行概率被调整成步骤一中的使用概率;低效变异字节不会执行变异操作;从当前测试输入所生成的子女输入中,按照给定原则挑选队列种子加入队列;更新各个变异算子所生成的队列种子数量以及各个变异算子所消耗的时间。
6.如权利要求5所述的一种兼顾深度以及广度的模糊测试搜索方法,其特征在于:
步骤三中,所述队列是指存储所有队列种子的线性表;所述队列种子是指在测试过程中,能够覆盖之前一直没有覆盖过的某段代码的测试输入,所有队列种子将存储在队列之中。
7.如权利要求5所述的一种兼顾深度以及广度的模糊测试搜索方法,其特征在于:
步骤四中,在基于代码覆盖差异的局部深度优先搜索过程中,针对当前测试输入所生成的队列种子,按照给定原则从中进行挑选并且加入后续局部深度优先搜索:第一个所生成的队列种子将会加入后续局部深度优先搜索;如果第二个所生成的队列种子相比较于第一个所生成的队列种子,两者间的代码覆盖差异超过代码覆盖差异阈值,那么第二个所生成的队列种子将会加入后续局部深度优先搜索;以此类推,如果候选种子相比较于前面已选中的队列种子,两者间的代码覆盖差异超过代码覆盖差异阈值,那么候选种子将会加入后续局部深度优先搜索;当局部深度优先搜索结束后,返回局部深度优先搜索的根节点,沿着队列寻找没有探索过的队列种子,作为新的局部深度优先搜索的根节点;当前探索队列种子将会送入步骤一中,如此往复,直至测试满足覆盖要求或到达时限。
8.如权利要求7所述的一种兼顾深度以及广度的模糊测试搜索方法,其特征在于:
步骤四中,所述没有探索过的队列种子是指截至目前为止,没有进入步骤一的队列种子;两组测试输入间的代码覆盖差异是指第二组测试输入能够覆盖、但是第一组测试输入不能覆盖的基本块,在第一组测试输入能够覆盖的基本块中所占的比重;所述候选种子是指在局部深度优先搜索过程中,等待比较代码覆盖差异的,并且据此判断是否需要加入后续局部深度优先搜索的队列种子。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910389591.9A CN110096448B (zh) | 2019-05-10 | 2019-05-10 | 一种兼顾深度以及广度的模糊测试搜索方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910389591.9A CN110096448B (zh) | 2019-05-10 | 2019-05-10 | 一种兼顾深度以及广度的模糊测试搜索方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110096448A true CN110096448A (zh) | 2019-08-06 |
CN110096448B CN110096448B (zh) | 2020-09-18 |
Family
ID=67447677
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910389591.9A Active CN110096448B (zh) | 2019-05-10 | 2019-05-10 | 一种兼顾深度以及广度的模糊测试搜索方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110096448B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060149817A1 (en) * | 2004-12-22 | 2006-07-06 | International Business Machines Corporation | Using collaborative annotations to specify real-time process flows and system constraints |
CN103559129A (zh) * | 2013-10-31 | 2014-02-05 | 中国矿业大学 | 基于遗传算法的统计回归测试数据生成方法 |
CN105425590A (zh) * | 2015-12-31 | 2016-03-23 | 河南科技大学 | 一种基于改进免疫算法的pid主动队列管理方法 |
CN105654498A (zh) * | 2016-01-27 | 2016-06-08 | 西安电子科技大学 | 基于动态局部搜索和免疫克隆自动聚类的图像分割方法 |
CN109101422A (zh) * | 2018-07-24 | 2018-12-28 | 北京理工大学 | 一种基于afl的模糊测试变异方法和装置 |
-
2019
- 2019-05-10 CN CN201910389591.9A patent/CN110096448B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060149817A1 (en) * | 2004-12-22 | 2006-07-06 | International Business Machines Corporation | Using collaborative annotations to specify real-time process flows and system constraints |
CN103559129A (zh) * | 2013-10-31 | 2014-02-05 | 中国矿业大学 | 基于遗传算法的统计回归测试数据生成方法 |
CN105425590A (zh) * | 2015-12-31 | 2016-03-23 | 河南科技大学 | 一种基于改进免疫算法的pid主动队列管理方法 |
CN105654498A (zh) * | 2016-01-27 | 2016-06-08 | 西安电子科技大学 | 基于动态局部搜索和免疫克隆自动聚类的图像分割方法 |
CN109101422A (zh) * | 2018-07-24 | 2018-12-28 | 北京理工大学 | 一种基于afl的模糊测试变异方法和装置 |
Non-Patent Citations (2)
Title |
---|
CAROLINE LEMIEUX等: "FairFuzz: A Targeted Mutation Strategy for Increasing Greybox", 《ASE"18》 * |
傅玉: "基于覆盖频率的模糊测试改进方法", 《计算机系统应用》 * |
Also Published As
Publication number | Publication date |
---|---|
CN110096448B (zh) | 2020-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109032942B (zh) | 一种基于afl的模糊测试框架 | |
Chmiela et al. | Learning to schedule heuristics in branch and bound | |
CN105808426B (zh) | 一种用于弱变异测试的路径覆盖测试数据生成方法 | |
CN109299142A (zh) | 一种基于进化算法的卷积神经网络结构搜索方法及系统 | |
CN104820636B (zh) | 一种并行的基于蚁群算法的测试用例序列生成方法 | |
CN103116540B (zh) | 基于全局超级块支配图的动态符号执行方法 | |
CN112540849B (zh) | 一种分布式计算作业的参数配置优化方法及系统 | |
CN107908536B (zh) | Cpu-gpu异构环境中对gpu应用的性能评估方法及系统 | |
CN112181867B (zh) | 基于多目标遗传算法的片上网络内存控制器布局方法 | |
CN106168797B (zh) | 一种模块化获取核电站故障树顶事项失效概率的方法 | |
CN105929690A (zh) | 一种基于分解多目标进化算法的柔性车间鲁棒调度方法 | |
CN110515845B (zh) | 基于改进ipo策略的组合测试用例优化生成方法 | |
Calvete et al. | Algorithms for the quickest path problem and the reliable quickest path problem | |
CN110083531A (zh) | 改进个体信息共享的多目标路径覆盖测试方法及实现系统 | |
CN111209192A (zh) | 一种基于双混沌鲸鱼优化算法的测试用例自动生成方法 | |
CN109656798A (zh) | 基于顶点重排序的超级计算机大数据处理能力测试方法 | |
CN104484548A (zh) | 一种改进的序贯故障诊断策略优化方法 | |
CN106295803A (zh) | 深度神经网络的构建方法 | |
CN105528296B (zh) | 一种面向对象软件的类簇测试方法 | |
CN103595652B (zh) | 一种电力通信网络中QoS能效的分级方法 | |
CN108052743B (zh) | 一种阶梯接近中心度确定方法及系统 | |
CN114627980A (zh) | 一种化学逆合成分析方法及系统 | |
CN112270058B (zh) | 一种基于回声状态网络的光网络多信道传输质量预测方法 | |
CN113781817A (zh) | 一种基于共用计算的城市路网多源最短路径获取方法 | |
CN110096448A (zh) | 一种兼顾深度以及广度的模糊测试搜索方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |