技术特征:
1.一种基于差分测试的高级综合工具优化选项缺陷检测方法,其特征在于,具体步骤如下:步骤1:检测是否达到测试时间限制;若未达到,则使用代码随机生成器生成测试用例代码p_tmp;若已达到,则停止测试;步骤2:使用基于代码特征向量余弦相似度的筛选方法对p_tmp进行测试代码筛选,得到用于后续测试的代码p;步骤3:使用编译器编译运行测试用例代码p,并记录相应的输出结果gcc_output;步骤4:对测试用例代码p进行处理,主要将p中main函数更名为result函数,将main函数输出值作为result函数返回值;步骤5:使用基于组合覆盖测试的优化选项选择方法根据测试用例代码p进行优化选项选择,得到可用于测试的一系列优化选项组合的集合o;步骤6:检测是否集合o中所有优化选项组合均被用于测试过,若否,则继续执行测试步骤;否则,跳转至步骤1继续执行;步骤7:从集合o中选取未被使用过的优化选项组合o
i
,将o
i
所涉及的优化选项以pragma的形式插入到测试代码p中;步骤8:使用待测试的高级综合工具对测试用例p进行综合,获取硬件描述语言代码hp;步骤9:使用数字电路仿真器对硬件描述语言代码hp进行仿真模拟,获取hp的输出结果hls_output;步骤10:比较gcc_output与hls_output是否一致;若二者结果一致,则跳转至步骤6,继续执行;若不一致,则进行测试用例约简,生成并存储缺陷报告,并跳转至步骤6,继续执行。2.根据权利要求1所述的一种基于差分测试的高级综合工具优化选项缺陷检测方法,其特征在于,步骤2中,所述的基于代码特征向量余弦相似度的筛选方法执行步骤如下:步骤a:将新生成的测试用例代码p_tmp和已用于测试的代码集合中的所有代码分别转换成抽象语法树ast;步骤b:采用深度优先遍历算法遍历新生成的测试用例代码p_tmp和已用于测试的代码集合中的ast,提取所有代码的各维数组个数、函数个数、各函数中for循环个数、各函数中同层for循环个数、各函数中函数调用个数、各函数表达式个数、各函数中最大嵌套深度以及涉及到各类运算符个数的特征,分别构造各代码的特征向量;步骤c:计算新生成的测试用例代码p_tmp的代码特征向量与已用于测试代码的代码特征向量之间的最小距离mindist,mindist使用公式(1)进行计算;其中,v
p_tmp
和分别表示新生成的测试用例代码p_tmp的代码特征向量和已用于测试代码tc
i
的代码特征向量,函数为取最大值函数,cosine_similarity()函数为两向量余弦相似度计算函数;步骤d:检测mindist是否大于阈值threshold;若是,则将mindist作为新的threshold,存储新的threshold,并将p_tmp作为测试用例代码p输出;否则,跳转至步骤e继续执行;其中,测试人员可根据实际情况设置threshold;
步骤e:检测是否达到设定生成代码次数限制;若未达到,则跳转至步骤f继续执行;若已达到,则输出已有候选测试用例代码p_candidate;步骤f:检测是否已有候选测试用例代码p_candidate与对应的mindist_candidate;若没有,则将p_tmp作为新的p_candidate,将mindist作为新的mindist_candidate;否则比较mindist与mindist_candidate大小;若mindist>mindist_candidate,则将p_tmp作为新的p_candidate,将mindist作为新的mindist_candidate,跳转至步骤g继续执行;否则,直接跳转至步骤g继续执行;步骤g:使用代码随机生成器生成测试用例代码p_tmp,产生代码次数加一,跳转至步骤a继续执行。3.根据权利要求1或2所述的一种基于差分测试的高级综合工具优化选项缺陷检测方法,其特征在于,步骤5中,所述的基于组合覆盖测试的优化选项选择方法执行步骤如下:步骤a:将测试用例代码p解析成ast;步骤b:采用深度优先遍历算法遍历代码的ast,根据代码可用优化选项类别,枚举出代码可用的每大类优化选项,忽略选项参数设置;步骤c:使用组合覆盖测试工具,根据枚举出代码可用的每类优化选项情况,生成对于测试用例代码p可用优化选项类别组合集合o_tmp;步骤d:根据测试用例代码p可用的可用优化选项类别组合集合o_tmp中每一组优选选项情况,解析代码p的ast,随机选择可用参数,补全优化选项参数,并将补全后一组的优化选项组合存储于优化选项组合集合o中;当o_tmp中所有选项参数均被补全后,输出优化选项组合集合o。
技术总结
本发明属于软件测试技术领域,尤其涉及一种基于差分测试的高级综合工具优化选项缺陷检测方法。本发明通过对随机生成的测试用例代码进行基于代码特征向量余弦相似度的筛选,得到优化空间差异性较大的测试用例代码,对每个通过筛选的测试用例代码进行基于组合覆盖测试的优化选项选择,得到一系列优化选项组合,将得到优化选项插入到测试用例代码中,使用待检测高级综合工具对测试用例代码进行综合,即可对高级综合工具优化选项缺陷进行检测;本发明解决了高级综合工具优化选项缺陷检测过程中,测试用例产生以及优化选项选择等问题,提高了测试用例多样性,扩大了测试空间,避免了冗余的测试,从而提高高级综合工具优化选项缺陷检测效率。陷检测效率。陷检测效率。
技术研发人员:江贺 王尊 周志德 任志磊
受保护的技术使用者:大连理工大学
技术研发日:2021.12.30
技术公布日:2022/4/22