一种基于差分测试的高级综合工具优化选项缺陷检测方法技术

技术编号:33203407 阅读:10 留言:0更新日期:2022-04-24 00:44
本发明专利技术属于软件测试技术领域,尤其涉及一种基于差分测试的高级综合工具优化选项缺陷检测方法。本发明专利技术通过对随机生成的测试用例代码进行基于代码特征向量余弦相似度的筛选,得到优化空间差异性较大的测试用例代码,对每个通过筛选的测试用例代码进行基于组合覆盖测试的优化选项选择,得到一系列优化选项组合,将得到优化选项插入到测试用例代码中,使用待检测高级综合工具对测试用例代码进行综合,即可对高级综合工具优化选项缺陷进行检测;本发明专利技术解决了高级综合工具优化选项缺陷检测过程中,测试用例产生以及优化选项选择等问题,提高了测试用例多样性,扩大了测试空间,避免了冗余的测试,从而提高高级综合工具优化选项缺陷检测效率。陷检测效率。陷检测效率。

【技术实现步骤摘要】
一种基于差分测试的高级综合工具优化选项缺陷检测方法


[0001]本专利技术属于软件测试
,尤其涉及一种基于差分测试的高级综合工具优化选项缺陷检测方法。

技术介绍

[0002]随着我国通信、航天、医疗、军工等领域的快速发展,FPGA(Field Programmable Gate Array)技术作为重要支撑技术,也得到了充分的发展。FPGA器件凭借其灵活性、并行性以及可集成性,日益成为国家科技发展关键核心器件。因此,高效、可靠地完成FPGA产品的设计开发工作至关重要。
[0003]高级综合(HighLevelSynthesis)技术作为FPGA设计开发过程中的起点技术,其可以将设计人员编写的高级语言设计代码(如C/C++代码)转为硬件描述语言代码(如Verilog代码、VHDL代码等)。高级综合工具对高级综合过程起到了重要的支撑作用。高级综合工具的一大优势在于其为设计人员提高了一系列设计代码优化选项,设计人员可以通过使用不同优化选项的组合,实现不同时延、吞吐量的FPGA产品。设计人员只需要将优化选项代码插入到设计代码中,高级综合工具则会自动根据优化选项进行代码优化,并生成代码优化后对应的硬件描述语言代码。高级综合工具能否正确地完成对于设计代码的优化工作,严重制约着FPGA设计的准确性、可靠性以及设计开发效率。现有的一些专利技术专利,如一种基于等价取模测试的高级综合工具缺陷检测方法(专利申请号:202110301741.3)、一种基于多样性导向变异的高级综合工具缺陷检测方法(专利申请号:202110670451.6)主要通过产生多样性较大的测试用例来检测高级综合工具能否正确完成综合工作,而未涉及使用高级综合工具优化选项,即无法有效检测高级综合工具优化选项缺陷。综合上述现有相关专利技术专利情况,可发现鲜有针对于高级综合工具优化选项缺陷进行检测的专利技术专利。因此,对于高级综合工具优化选项缺陷进行检测是十分必要且有意义的。
[0004]高级综合工具优化选项可指定到具体函数、循环,导致不同设计代码可用的优化选项空间不同,而且高级综合工具优化选项组合的搜索空间也是十分巨大的。在这种情况下,采用手动测试方法对高级综合工具优化选项缺陷进行检测显然是不现实的;而在没有有效策略的情况下,自动化随机测试产生的测试用例往往会存在大量冗余,造成缺陷检测效率低下。因此,为了提高对高级综合工具优化选项缺陷的检测效率,本专利技术方法通过基于代码特征向量余弦相似度的测试代码筛选和基于组合覆盖测试的优化选项选择两种策略,提高了测试用例多样性,避免了冗余的测试,进而实现了对高级综合工具优化选项缺陷的自动化高效检测。

技术实现思路

[0005]本专利技术的目的在于提供一种基于差分测试的高级综合工具优化选项缺陷检测方法。本专利技术通过对随机生成的测试用例代码进行基于代码特征向量余弦相似度的筛选,得到优化空间差异性较大的测试用例代码,对每个通过筛选的测试用例代码进行基于组合覆
盖测试的优化选项选择,得到一系列优化选项组合,将得到优化选项插入到测试用例代码中,即可对高级综合工具优化选项缺陷进行检测;本专利技术解决了高级综合工具优化选项缺陷检测过程中,测试用例产生以及优化选项选择等问题,提高了测试用例多样性,扩大了测试空间,避免了冗余的测试,从而提高高级综合工具优化选项缺陷检测效率。
[0006]本专利技术的技术方案:
[0007]一种基于差分测试的高级综合工具优化选项缺陷检测方法,具体步骤如下:
[0008]步骤1:检测是否达到测试时间限制。若未达到,则使用代码随机生成器生成测试用例代码P_tmp;若已达到,则停止测试。
[0009]其中,测试时间限制可由测试人员根据需求进行设置。对于测试用例代码的生成,可使用Csmith代码随机生成器随机生成,或根据实际需求,使用其他代码随机生成工具或自定义的代码随机生成工具实现。
[0010]步骤2:使用基于代码特征向量余弦相似度的筛选方法对P_tmp进行测试代码筛选,得到用于后续测试的代码P。
[0011]步骤3:使用编译器编译运行测试用例代码P,并记录相应的输出结果GCC_output。
[0012]步骤4:对测试用例代码P进行处理,主要将P中main函数更名为result函数,将main函数输出值作为result函数返回值。
[0013]步骤5:使用基于组合覆盖测试的优化选项选择方法根据测试用例代码P进行优化选项选择,得到可用于测试的一系列优化选项组合的集合O。
[0014]步骤6:检测是否集合O中所有优化选项组合均被用于测试过,若否,则继续执行测试步骤;否则,跳转至步骤1继续执行。
[0015]步骤7:从集合O中选取未被使用过的优化选项组合O
i
,将O
i
所涉及的优化选项以pragma的形式插入到测试代码P中;
[0016]步骤8:使用待测试的高级综合工具对测试用例P进行综合,获取硬件描述语言代码HP。
[0017]步骤9:使用数字电路仿真器对硬件描述语言代码HP进行仿真模拟,获取HP的输出结果HLS_output。
[0018]其中,对于硬件描述语言代码HP的仿真模拟,可使用待测试高级综合工具自身集成的仿真器,或可根据实际需求,使用其他数字电路仿真模拟器对硬件描述语言代码HP进行仿真模拟。
[0019]步骤10:比较GCC_output与HLS_output是否一致。若二者结果一致,则跳转至步骤6,继续执行;若不一致,则进行测试用例约简,生成并存储缺陷报告,并跳转至步骤6,继续执行。
[0020]对于测试用例约简,可使用C

Reduce代码约简工具,或根据实际情况采用其他工具或自定义工具。
[0021]步骤2中,所述的基于代码特征向量余弦相似度的筛选方法执行步骤如下:
[0022]步骤a:将新生成的测试用例代码P_tmp和已用于测试的代码集合中的所有代码分别转换成抽象语法树(Abstract Syntax Tree,AST);
[0023]其中,将代码转化成AST,可使用Pycparser工具,或根据实际需要采用其他工具或自定义工具。Pycparser是C语言的解析器,支持完整的C99标准,用纯Python编写。
[0024]步骤b:采用深度优先遍历算法遍历新生成的测试用例代码P_tmp和已用于测试的代码集合中的AST,提取所有代码的各维数组个数、函数个数、各函数中for循环个数、各函数中同层for循环个数、各函数中函数调用个数、各函数表达式个数、各函数中最大嵌套深度以及涉及到各类运算符个数等特征,分别构造各代码的特征向量。
[0025]步骤c:计算新生成的测试用例代码P_tmp的代码特征向量与已用于测试代码的代码特征向量之间的最小距离minDist,minDist使用公式(1)进行计算。
[0026][0027]其中,V
P_tmp
和分别表示新生成的测试用例代码P_tmp的代码特征向量和已用于测本文档来自技高网
...

【技术保护点】

【技术特征摘要】
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)进...

【专利技术属性】
技术研发人员:江贺王尊周志德任志磊
申请(专利权)人:大连理工大学
类型:发明
国别省市:

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

1