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

一种面向持续集成过程的模糊测试方法

2022-10-22 01:08:17 来源:中国专利 TAG:

技术特征:
1.一种面向持续集成过程的模糊测试方法,其特征在于,包括以下步骤:步骤1:在应用持续集成的项目中,对相邻的两次提交进行差异分析,获取两者的差异信息,并根据差异信息获取变更点,存入变更点集合;步骤2:在构建项目的过程中,根据变更点信息进行数据流分析,获取数据流分析结果;步骤3:利用数据流分析结果进行程序插桩,获得已插桩的被测程序;步骤4:对被测程序进行模糊测试,在测试过程中计算种子测试用例的适应度,并根据适应度为其分配相应的测试资源。2.根据权利要求1所述的一种面向持续集成过程的模糊测试方法,其特征在于,步骤1包括:步骤1-1:设定起始状态,输入被测项目p;步骤1-2:对被测项目p中相邻的两次提交进行差异分析,获得变更点集合c={c1,c2,...,c
n
};步骤1-3:输出变更点集合c。3.根据权利要求1所述的一种面向持续集成过程的模糊测试方法,其特征在于,步骤2包括:步骤2-1:设置起始状态,输入被测项目p;步骤2-2:判断被测项目p中的语句是否已经遍历完毕,若遍历完毕,跳转至步骤2-6;若没有遍历完毕,跳转至步骤2-3;步骤2-3:访问被测项目p中的下一条语句;步骤2-4:判断当前语句stat是否与变更点相关,若与变更点相关,则跳转至步骤2-5;若与变更点无关,则跳转至步骤2-3;步骤2-5:对当前语句stat进行定义-使用关系分析;如果stat对内存进行了读取,则认为stat对某一变量进行了“使用”操作;如果stat对内存进行了修改,则认为stat对某一变量进行了“定义”操作;stat分析完毕后,跳转至步骤2-2;步骤2-6:输出被测项目p中所有与变更点相关的定义使用关系信息d;步骤2-7:输入步骤1中获得的变更点集合c;步骤2-8:计算各基本块与污点源之间的距离;将变更点集合c中的每个变更点作为污点源,并结合步骤2-6中获得的定义-使用关系信息d进行污点分析,获取各基本块中变量受污染的情况,如果一个基本块中的变量受到了污染,则认为基本块受到了污染;如果一个基本块中的变量没有受到污染,则认为基本块没有受到污染。4.根据权利要求3所述的一种面向持续集成过程的模糊测试方法,其特征在于,计算各基本块与污点源之间的距离,具体步骤如下:获取每个污点源所在的基本块,并存入队列ts={ts1,ts2,...,ts
n
},其中,ts
i
表示第i个污点源所在基本块;计算每个基本块与污点源之间的距离,公式如下:式中,bb表示待计算距离的基本块,ts
i
表示第i个污点源所在基本块,shortest(bb,
ts
i
)表示基本块与污点源所在基本块ts
i
之间的最短距离。如果bb被ts
i
污染了,则计算bb与ts
i
之间的最短距离并加1,作为bb与ts
i
之间的距离d(bb,ts
i
),如果基本块没有被ts
i
污染,则默认bb与ts
i
之间的距离d(bb,ts
i
)为无穷大;根据基本块与每个污点源所在基本块之间的距离,计算基本块的最终距离,有三种策略,如公式(1)-(4)所示:dist
max
(bb,ts)=max(d(bb,ts
i
)),1≤i≤n&d(bb,t
i
)<∞
ꢀꢀꢀ
(2)dist
min
(bb,ts)=min(d(bb,ts
i
)),1≤i≤n
ꢀꢀꢀꢀꢀꢀꢀ
(3)dist(bb,ts)=dist
avg
(bb,ts)||dist
max
(bb,ts)||dist
min
(bb,ts)
ꢀꢀ
(4)式中,dist(bb,ts)表示基本块bb与污点源队列ts之间的距离。5.根据权利要求1所述的一种面向持续集成过程的模糊测试方法,其特征在于,步骤3包括:步骤3-1:输入各基本块的距离,开始程序插桩;步骤3-2:判断基本块是否已遍历完毕,若已遍历完毕,跳转至步骤3-5;若没有遍历完毕,跳转至步骤3-3;步骤3-3:获取当前访问的基本块的距离,并将距离插入当前基本块中;步骤3-4:获取下一个要访问的基本块,然后跳转至步骤3-2;步骤3-5:输出已经插桩完毕的被测程序。6.根据权利要求1所述的一种面向持续集成过程的模糊测试方法,其特征在于,步骤4包括:步骤4-1:设置初始状态,输入初始种子测试用例;步骤4-2:判断是否已经满足模糊测试停止条件,若已满足,跳转至步骤4-8;若未满足,跳转至步骤4-3;步骤4-3:选择种子测试用例,从种子测试用例队列中选择一个种子测试用例,将其作为父代以产生子代测试用例;步骤4-4:对种子适应度计算,种子测试用例需要根据其适应度为其分配相应的测试资源,种子测试用例s的适应度计算如公式(6)所示:式中,s是种子测试用例,pfuzz(s)是afl等传统模糊测试工具评价s的适应度,ξ(s)是s的执行路径,是s的执行路径中各基本块距离的倒数之和,|ξ(s)|表示s执行路径中基本块的个数;步骤4-5:子代测试用例生成。根据步骤4-4中得到的适应度,为种子分配相应的测试资源,从而生成子代测试用例s

;步骤4-6:测试用例执行,将步骤4-5中生成的子代测试用例s

发送至已插桩的被测程序中,并监视测试用例的运行情况;
步骤4-7:反馈结果分析,分析子代测试用例s

在被测程序中的运行结果,根据运行结果决定将子代测试用例保留或者丢弃,分析结束后,跳转至步骤4-2;步骤4-8:模糊测试已经满足指定的停止条件,停止模糊测试。

技术总结
本发明公开了一种面向持续集成过程的模糊测试方法,涉及软件协同开发领域。本发明包括以下步骤:在应用持续集成的项目中,对相邻的两次提交进行差异分析,获取两者的差异信息,并根据差异信息获取变更点,存入变更点集合;在构建项目的过程中,根据变更点信息进行数据流分析,获取数据流分析结果;利用数据流分析结果进行程序插桩,获得已插桩的被测程序;对被测程序进行模糊测试,在测试过程中计算种子测试用例的适应度,并根据适应度为其分配相应的测试资源。本发明更有针对性地对持续集成过程中产生变更的地方进行测试,减少手动构建测试用例带来的开销。构建测试用例带来的开销。构建测试用例带来的开销。


技术研发人员:张家铭 崔展齐
受保护的技术使用者:北京信息科技大学
技术研发日:2022.07.20
技术公布日:2022/10/18
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献