一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于符号执行的路径搜索方法、装置以及存储介质与流程

2022-05-21 05:27:13 来源:中国专利 TAG:


1.本公开涉及计算机技术领域,尤其涉及一种基于符号执行的路径搜索方法、装置以及存储介质。


背景技术:

2.目前,对于在模糊测试中的测试用例生成,通常采用已有的路径遍历策略进行路径约束的收集;收集后的路径约束直接用于约束求解模块进行求解;目前此种路径约束收集方法的缺点由选用的路径遍历策略的缺点造成,选用的路径遍历策略为基于代的路径遍历策略等,基于代的路径遍历策略存在路径遍历冗余,计算资源占用率大,甚至可能引起路径过多、降低测试效率等问题。


技术实现要素:

3.有鉴于此,本公开要解决的一个技术问题是提供一种基于符号执行的路径搜索方法、装置以及存储介质。
4.根据本公开的第一方面,提供一种基于符号执行的路径搜索方法,包括:采用基于代的路径遍历算法对被测试程序进行路径搜索,用以获得与所述被测试程序相对应的各个代的可执行路径;基于预设的路径优化函数以及路径选择规则在所述可执行路径中确定可供选择路径;对各个代的可供选择路径进行分束处理,生成捆绑束;基于与所述可供选择路径相对应的束内系数和束外系数,对所述捆绑束以及所述捆绑束内的可供选择路径进行排序处理;将所述捆绑束内的可供选择路径以及对应的路径约束输出至求解器,以使所述求解器生成新的输入。
5.可选地,所述路径优化函数包括:敏感函数、捆绑函数和表征后续有无分支或者循环的函数;其中,所述基于预设的路径优化函数以及路径选择规则在所述可执行路径中确定可供选择路径包括:基于所述路径优化函数计算所述可执行路径的权重;基于所述路径选择规则在所述可执行路径中选取权重大于预设阈值的可执行路径,作为所述可供选择路径。
6.可选地,所述路径优化函数为:
7.f(x)=g(x) β/αj(x) θk(x);
8.其中,g(x)是指敏感函数;
ɑ
是指可供选择路径所在的捆绑束的系数,α《2^i-1,i为可供选择路径的当前代数;j(x)捆绑函数,β是指可供选择路径在捆绑束内的层级权重系数;k(x)是指表征后续有无分支或者循环的函数,θ是指循环的复杂度。
9.可选地,所述束外系数为所述
ɑ
,所述束内系数为所述β;所述基于与所述可供选择路径相对应的束内系数和束外系数,对所述捆绑束以及所述捆绑束内的可供选择路径进行排序处理包括:基于β/
ɑ
对各个代的捆绑束进行排序;基于β对所述捆绑束内的可供选择路径进行排序。
10.可选地,所述将所述捆绑束内的可供选择路径以及对应的路径约束输出至求解器
包括:获取所述捆绑束内权重最高的可供选择路径以及对应的路径约束输出至求解器。
11.可选地,如果确定此权重最高的可供选择路径在求解之后出现异常,则将此权重最高的可供选择路径所属的捆绑束的排序调整至最前;如果此权重最高的可供选择路径不通,则将此权重最高的可供选择路径从所属的捆绑束中删除。
12.根据本公开的第二方面,提供一种基于符号执行的路径搜索装置,包括:路径获取单元,用于采用基于代的路径遍历算法对被测试程序进行路径搜索,用以获得与所述被测试程序相对应的各个代的可执行路径;路径优化单元,用于基于预设的路径优化函数以及路径选择规则在所述可执行路径中确定可供选择路径;捆绑分束单元,用于对各个代的可供选择路径进行分束处理,生成捆绑束;排序处理单元,用于基于与所述可供选择路径相对应的束内系数和束外系数,对所述捆绑束以及所述捆绑束内的可供选择路径进行排序处理;路径求解单元,用于将所述捆绑束内的可供选择路径以及对应的路径约束输出至求解器,以使所述求解器生成新的输入。
13.可选地,所述路径优化函数包括:敏感函数、捆绑函数和表征后续有无分支或者循环的函数;所述路径优化单元,用于基于所述路径优化函数计算所述可执行路径的权重;基于所述路径选择规则在所述可执行路径中选取权重大于预设阈值的可执行路径,作为所述可供选择路径。
14.可选地,所述路径优化函数为:
15.f(x)=g(x) β/αj(x) θk(x);
16.其中,g(x)是指敏感函数;
ɑ
是指可供选择路径所在的捆绑束的系数,α《2^i-1,i为可供选择路径的当前代数;j(x)捆绑函数,β是指可供选择路径在捆绑束内的层级权重系数;k(x)是指表征后续有无分支或者循环的函数,θ是指循环的复杂度。
17.可选地,所述束外系数为所述
ɑ
,所述束内系数为所述β;所述排序处理单元,用于基于β/
ɑ
对各个代的捆绑束进行排序;基于β对所述捆绑束内的可供选择路径进行排序。
18.可选地,所述路径求解单元,具体用于获取所述捆绑束内权重最高的可供选择路径以及对应的路径约束输出至求解器。
19.可选地,所述路径求解单元,还用于如果确定此权重最高的可供选择路径在求解之后出现异常,则将此权重最高的可供选择路径所属的捆绑束的排序调整至最前;如果此权重最高的可供选择路径不通,则将此权重最高的可供选择路径从所属的捆绑束中删除。
20.根据本公开的第三方面,提供一种基于符号执行的路径搜索装置,包括:存储器;以及耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行如上所述的方法。
21.根据本公开的第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述指令被处理器执行如上述的方法。
22.本公开的基于符号执行的路径搜索方法、装置以及存储介质,对基于代的路径策略算法进行优化,可以增加测试的指向性;在高测试覆盖率的基础上,增加路径的权重值,并简化路径约束集,以便节省计算资源,并且提高测试的效率。
附图说明
23.为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现
有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
24.图1为根据本公开的基于符号执行的路径搜索方法的一个实施例的流程示意图;
25.图2为根据本公开的基于符号执行的路径搜索方法的另一个实施例的搜索示意图;
26.图3为根据本公开的基于符号执行的路径搜索装置的一个实施例的模块示意图;
27.图4为根据本公开的基于符号执行的路径搜索装置的另一个实施例的模块示意图。
具体实施方式
28.下面参照附图对本公开进行更全面的描述,其中说明本公开的示例性实施例。下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。下面结合各个图和实施例对本公开的技术方案进行多方面的描述。
29.在软件测试中,符号执行通过自动生成测试用例,可以获取高代码覆盖率。符号执行通过符号化的方法探索遍历程序的所有可能执行路径,产生路径约束,并对约束条件求解,自动化产生测试用例。
30.使用符号执行的一般过程为:对程序文件进行二进制插桩,在第一次执行时,给程序提供一个随机的或选择的初始输入数据,然后借助插桩代码对输入数据符号化;在程序执行过程中,同时进行符号执行,插桩代码会记录符号化的变量在每个执行路径下的操作;在一次执行完之后,根据搜集到的约束条件形成一个约束表达式,对这些表达式按照路径搜索算法将其中某个条件取反,调用约束求解器进行求解,从而生成新的测试用例,新的测试用例会沿不同路径进行下一次执行过程。
31.路径搜索算法是符号执行过程中的组成部分,路径搜索目的是保证执行过程能够遍历程序的所有可能执行路径,从而能够全面的产生测试用例对程序进行检测;路径搜索方法包括:广度优先搜索、代搜索、随机搜索、元策略等算法等。
32.图1为根据本公开的基于符号执行的路径搜索方法的一个实施例的流程示意图,如图1所示:
33.步骤101,采用基于代的路径遍历算法对被测试程序进行路径搜索,用以获得与被测试程序相对应的各个代的可执行路径。
34.在一个实施例中,模糊测试和符号执行是两种不同的测试方法。模糊测试是向目标程序提供大量的畸形输入并监控目标系统的异常结果来发现软件缺陷。符号执行是将目标程序的具体输入用符号变量表示,使用符号变量解释执行程序,在程序的分支跳转处使用符号表达式表示跳转条件,程序的最终输出是由符号变量组成的逻辑或算术表达式,称为路径约束条件;通过对约束条件取反,进行符号变量的求解,生成新的测试用例,覆盖程序中新的路径。
35.基于代的路径遍历算法的算法思想为:对于当前输入所产生的路径约束条件,依
次对约束条件进行取反操作,生成下一代路径约束条件集,重复上述的操作,可遍历被测程序中所有可执行路径。基于代的路径遍历算法每次可能够产生多个新的路径约束,通过约束求解器求解产生新的输入。可以使用现有的采用基于代的路径遍历算法对被测试程序进行路径搜索。
36.步骤102,基于预设的路径优化函数以及路径选择规则在可执行路径中确定可供选择路径。
37.步骤103,对各个代的可供选择路径进行分束处理,生成捆绑束。
38.步骤104,基于与可供选择路径相对应的束内系数和束外系数,对捆绑束以及捆绑束内的可供选择路径进行排序处理。
39.步骤105,将捆绑束内的可供选择路径以及对应的路径约束输出至求解器,以使求解器生成新的输入。
40.可以将在路径探索过程中获取的路径约束条件形成的约束表达式进行取反操作,对符号执行过程中形成的路径条件约束表达式进行求解,通过求解结果,产生新的测试用例,路径约束条件是由不同条件表达式组成的。可以使用现有的求解器,基于输入的可供选择路径以及对应的路径约束生成新的输入。
41.在一个实施例中,路径优化函数包括敏感函数、捆绑函数和表征后续有无分支或者循环的函数等。基于路径优化函数计算可执行路径的权重,基于路径选择规则在可执行路径中选取权重大于预设阈值的可执行路径,作为可供选择路径。例如,路径优化函数为:
42.f(x)=g(x) β/αj(x) θk(x);
43.其中,g(x)是指敏感函数;
ɑ
是指可供选择路径所在的捆绑束的系数,α《2^i-1,i为可供选择路径的当前代数;j(x)捆绑函数,β是指可供选择路径在捆绑束内的层级权重系数;k(x)是指表征后续有无分支或者循环的函数,θ是指循环的复杂度,x表征路径或分支。
44.在一个实施例中,束外系数为
ɑ
,束内系数为β。进行排序处理可以采用多种方法,例如,基于β/
ɑ
对各个代的捆绑束进行排序;基于β对捆绑束内的可供选择路径进行排序。
45.将捆绑束内的可供选择路径以及对应的路径约束输出至求解器可以采用多种方法。例如,获取捆绑束内权重最高的可供选择路径以及对应的路径约束输出至求解器,如果确定此权重最高的可供选择路径在求解之后出现异常,则将此权重最高的可供选择路径所属的捆绑束的排序调整至最前;如果此权重最高的可供选择路径不通,则将此权重最高的可供选择路径从所属的捆绑束中删除。
46.上述实施例中的基于符号执行的路径搜索方法,对基于代的路径策略算法进行优化,在每代取反收集约束集的过程中增加参数,可以增加指向性;在高覆盖率的基础上,增加路径的权重值,并简化路径约束集,以便节省计算资源,降低产生路径爆炸的概率,并提高测试效率。
47.在一个实施例中,在符号执行中基于代的路径遍历策略的基础上,加入了路径优化函数进行路径优化,计算相应参数,以此来选择优化的方式以及是否剔除:
48.通过计算路径优化函数的敏感函数、捆绑束数、捆绑束内外的层级权重系数、后续有无分支或循环以及循环复杂度,得出最后的路径,再按照捆绑束的系数β/α来进行排序。能够按照公式:f(x)=g(x) β/αj(x) θk(x),α《2^i-1(i为当前代数),得出最后的路径。
49.在以上执行结果的基础上,以束为单位,将捆绑束内的路径按照层级权重系数β来
进行排序,抽取权重高的路径进行求解器求解,如果有异常反馈,则将该束调整至该序列首位,等待下一代路径遍历。
50.如图2所示,路径优化函数中的参数数据:敏感函数g(x)可以为指定函数漏洞集,例如系统自带库函数等;捆绑束数
ɑ
为当前层级的α个路径捆绑成束,α《2^i-1(i为当前代数);层次权重系数β可以按照层级分析法(aph)计算束内路径的权重系数;有无后续分支或循环k(x):若有后续分支或循环,则k(x)为1,否则为0;循环复杂度θ:可以按照aph来计算后续循环的复杂度系数。g(x)和k(x)具体的计算方式需要针对具体的场景进行制定,g(x)和k(x)可以为现有的多种函数。例如g(x)是指定函数漏洞集,如系统自带库函数,需要测试单位内部根据自身的风险偏好给漏洞定级,再制定这个函数,k(x)同样需要根据风险偏好进行指定。
51.如图2所示,从第0代开始,计算第0代的优化函数参数,输出可供选择的路径。将可供选择的路径捆绑分束,其中,路径捆绑分束即为路径捆绑分组,已捆绑束按照外系数β/α排序;束内路径按照束内系数β排序,并抽取权重最高路径输出给求解器。求解之后若产生异常则将该整束调整排序至序列首位,等待下一代路径约束计算;若路径不通,则将该路径从束内剔除,并降低该束权重。
52.在一个实施例中,如图3所示,本公开提供一种基于符号执行的路径搜索装置30,包括:路径获取单元31、路径优化单元32、捆绑分束单元33、排序处理单元34和路径求解单元34。路径获取单元31采用基于代的路径遍历算法对被测试程序进行路径搜索,用以获得与被测试程序相对应的各个代的可执行路径。路径优化单元32基于预设的路径优化函数以及路径选择规则在可执行路径中确定可供选择路径。
53.捆绑分束单元33对各个代的可供选择路径进行分束处理,生成捆绑束。排序处理单元34基于与可供选择路径相对应的束内系数和束外系数,对捆绑束以及捆绑束内的可供选择路径进行排序处理。路径求解单元35将捆绑束内的可供选择路径以及对应的路径约束输出至求解器,以使求解器生成新的输入。
54.在一个实施例中,路径优化函数包括敏感函数、捆绑函数和表征后续有无分支或者循环的函数等;路径优化单元32基于路径优化函数计算可执行路径的权重,基于路径选择规则在可执行路径中选取权重大于预设阈值的可执行路径,作为可供选择路径。
55.排序处理单元34基于β/
ɑ
对各个代的捆绑束进行排序,基于β对捆绑束内的可供选择路径进行排序。路径求解单元35用于获取捆绑束内权重最高的可供选择路径以及对应的路径约束输出至求解器,如果确定此权重最高的可供选择路径在求解之后出现异常,则路径求解单元35将此权重最高的可供选择路径所属的捆绑束的排序调整至最前;如果此权重最高的可供选择路径不通,则路径求解单元35将此权重最高的可供选择路径从所属的捆绑束中删除。
56.图4为根据本公开的基于符号执行的路径搜索装置的另一个实施例的模块示意图。如图4所示,该装置可包括存储器41、处理器42、通信接口43以及总线44。存储器41用于存储指令,处理器42耦合到存储器41,处理器42被配置为基于存储器41存储的指令执行实现上述的基于符号执行的路径搜索方法。
57.存储器41可以为高速ram存储器、非易失性存储器(non-volatile memory)等,存储器41也可以是存储器阵列。存储器41还可能被分块,并且块可按一定的规则组合成虚拟
卷。处理器42可以为中央处理器cpu,或专用集成电路asic(application specific integrated circuit),或者是被配置成实施本公开的基于符号执行的路径搜索方法的一个或多个集成电路。
58.在一个实施例中,本公开提供一种计算机可读存储介质,计算机可读存储介质存储有计算机指令,指令被处理器执行时实现如上任一个实施例中的基于符号执行的路径搜索方法。
59.上述实施例中的基于符号执行的路径搜索方法、装置以及存储介质,对基于代的路径策略算法进行优化,可以增加测试的指向性;在高测试覆盖率的基础上,增加路径的权重值,并简化路径约束集,以便节省计算资源,并且提高测试的效率。
60.可能以许多方式来实现本公开的方法和系统。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本公开的方法和系统。用于方法的步骤的上述顺序仅是为了进行说明,本公开的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本公开实施为记录在记录介质中的程序,这些程序包括用于实现根据本公开的方法的机器可读指令。因而,本公开还覆盖存储用于执行根据本公开的方法的程序的记录介质。
61.本公开的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本公开限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本公开的原理和实际应用,并且使本领域的普通技术人员能够理解本公开从而设计适于特定用途的带有各种修改的各种实施例。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献