CN114385492A - 一种基于差分测试的高级综合工具优化选项缺陷检测方法 - Google Patents
一种基于差分测试的高级综合工具优化选项缺陷检测方法 Download PDFInfo
- Publication number
- CN114385492A CN114385492A CN202111651762.4A CN202111651762A CN114385492A CN 114385492 A CN114385492 A CN 114385492A CN 202111651762 A CN202111651762 A CN 202111651762A CN 114385492 A CN114385492 A CN 114385492A
- Authority
- CN
- China
- Prior art keywords
- code
- test case
- test
- optimization
- tmp
- 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.)
- Pending
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 170
- 238000005457 optimization Methods 0.000 title claims abstract description 94
- 230000007547 defect Effects 0.000 title claims abstract description 39
- 238000001514 detection method Methods 0.000 title claims abstract description 20
- 238000000034 method Methods 0.000 claims abstract description 33
- 239000013598 vector Substances 0.000 claims abstract description 24
- 238000012216 screening Methods 0.000 claims abstract description 15
- 230000006870 function Effects 0.000 claims description 37
- 230000015572 biosynthetic process Effects 0.000 claims description 17
- 238000003786 synthesis reaction Methods 0.000 claims description 17
- 230000009191 jumping Effects 0.000 claims description 10
- 230000009467 reduction Effects 0.000 claims description 7
- 238000010187 selection method Methods 0.000 claims description 7
- GNFTZDOKVXKIBK-UHFFFAOYSA-N 3-(2-methoxyethoxy)benzohydrazide Chemical compound COCCOC1=CC=CC(C(=O)NN)=C1 GNFTZDOKVXKIBK-UHFFFAOYSA-N 0.000 claims description 6
- FGUUSXIOTUKUDN-IBGZPJMESA-N C1(=CC=CC=C1)N1C2=C(NC([C@H](C1)NC=1OC(=NN=1)C1=CC=CC=C1)=O)C=CC=C2 Chemical compound C1(=CC=CC=C1)N1C2=C(NC([C@H](C1)NC=1OC(=NN=1)C1=CC=CC=C1)=O)C=CC=C2 FGUUSXIOTUKUDN-IBGZPJMESA-N 0.000 claims description 4
- 238000004422 calculation algorithm Methods 0.000 claims description 4
- 230000002194 synthesizing effect Effects 0.000 claims description 4
- 238000004364 calculation method Methods 0.000 claims description 3
- 238000012545 processing Methods 0.000 claims description 3
- 230000008569 process Effects 0.000 abstract description 6
- 238000013522 software testing Methods 0.000 abstract description 2
- 238000013461 design Methods 0.000 description 9
- 238000004088 simulation Methods 0.000 description 8
- 238000011161 development Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
Images
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/3676—Test management for coverage analysis
-
- 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/3684—Test management for test design, e.g. generating new test cases
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
- G06F30/3308—Design verification, e.g. functional simulation or model checking using simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Tests Of Electronic Circuits (AREA)
Abstract
本发明属于软件测试技术领域,尤其涉及一种基于差分测试的高级综合工具优化选项缺陷检测方法。本发明通过对随机生成的测试用例代码进行基于代码特征向量余弦相似度的筛选,得到优化空间差异性较大的测试用例代码,对每个通过筛选的测试用例代码进行基于组合覆盖测试的优化选项选择,得到一系列优化选项组合,将得到优化选项插入到测试用例代码中,使用待检测高级综合工具对测试用例代码进行综合,即可对高级综合工具优化选项缺陷进行检测;本发明解决了高级综合工具优化选项缺陷检测过程中,测试用例产生以及优化选项选择等问题,提高了测试用例多样性,扩大了测试空间,避免了冗余的测试,从而提高高级综合工具优化选项缺陷检测效率。
Description
技术领域
本发明属于软件测试技术领域,尤其涉及一种基于差分测试的高级综合工具优化选项缺陷检测方法。
背景技术
随着我国通信、航天、医疗、军工等领域的快速发展,FPGA(Field ProgrammableGate Array)技术作为重要支撑技术,也得到了充分的发展。FPGA器件凭借其灵活性、并行性以及可集成性,日益成为国家科技发展关键核心器件。因此,高效、可靠地完成FPGA产品的设计开发工作至关重要。
高级综合(HighLevelSynthesis)技术作为FPGA设计开发过程中的起点技术,其可以将设计人员编写的高级语言设计代码(如C/C++代码)转为硬件描述语言代码(如Verilog代码、VHDL代码等)。高级综合工具对高级综合过程起到了重要的支撑作用。高级综合工具的一大优势在于其为设计人员提高了一系列设计代码优化选项,设计人员可以通过使用不同优化选项的组合,实现不同时延、吞吐量的FPGA产品。设计人员只需要将优化选项代码插入到设计代码中,高级综合工具则会自动根据优化选项进行代码优化,并生成代码优化后对应的硬件描述语言代码。高级综合工具能否正确地完成对于设计代码的优化工作,严重制约着FPGA设计的准确性、可靠性以及设计开发效率。现有的一些发明专利,如一种基于等价取模测试的高级综合工具缺陷检测方法(专利申请号:202110301741.3)、一种基于多样性导向变异的高级综合工具缺陷检测方法(专利申请号:202110670451.6)主要通过产生多样性较大的测试用例来检测高级综合工具能否正确完成综合工作,而未涉及使用高级综合工具优化选项,即无法有效检测高级综合工具优化选项缺陷。综合上述现有相关发明专利情况,可发现鲜有针对于高级综合工具优化选项缺陷进行检测的发明专利。因此,对于高级综合工具优化选项缺陷进行检测是十分必要且有意义的。
高级综合工具优化选项可指定到具体函数、循环,导致不同设计代码可用的优化选项空间不同,而且高级综合工具优化选项组合的搜索空间也是十分巨大的。在这种情况下,采用手动测试方法对高级综合工具优化选项缺陷进行检测显然是不现实的;而在没有有效策略的情况下,自动化随机测试产生的测试用例往往会存在大量冗余,造成缺陷检测效率低下。因此,为了提高对高级综合工具优化选项缺陷的检测效率,本发明方法通过基于代码特征向量余弦相似度的测试代码筛选和基于组合覆盖测试的优化选项选择两种策略,提高了测试用例多样性,避免了冗余的测试,进而实现了对高级综合工具优化选项缺陷的自动化高效检测。
发明内容
本发明的目的在于提供一种基于差分测试的高级综合工具优化选项缺陷检测方法。本发明通过对随机生成的测试用例代码进行基于代码特征向量余弦相似度的筛选,得到优化空间差异性较大的测试用例代码,对每个通过筛选的测试用例代码进行基于组合覆盖测试的优化选项选择,得到一系列优化选项组合,将得到优化选项插入到测试用例代码中,即可对高级综合工具优化选项缺陷进行检测;本发明解决了高级综合工具优化选项缺陷检测过程中,测试用例产生以及优化选项选择等问题,提高了测试用例多样性,扩大了测试空间,避免了冗余的测试,从而提高高级综合工具优化选项缺陷检测效率。
本发明的技术方案:
一种基于差分测试的高级综合工具优化选项缺陷检测方法,具体步骤如下:
步骤1:检测是否达到测试时间限制。若未达到,则使用代码随机生成器生成测试用例代码P_tmp;若已达到,则停止测试。
其中,测试时间限制可由测试人员根据需求进行设置。对于测试用例代码的生成,可使用Csmith代码随机生成器随机生成,或根据实际需求,使用其他代码随机生成工具或自定义的代码随机生成工具实现。
步骤2:使用基于代码特征向量余弦相似度的筛选方法对P_tmp进行测试代码筛选,得到用于后续测试的代码P。
步骤3:使用编译器编译运行测试用例代码P,并记录相应的输出结果GCC_output。
步骤4:对测试用例代码P进行处理,主要将P中main函数更名为result函数,将main函数输出值作为result函数返回值。
步骤5:使用基于组合覆盖测试的优化选项选择方法根据测试用例代码P进行优化选项选择,得到可用于测试的一系列优化选项组合的集合O。
步骤6:检测是否集合O中所有优化选项组合均被用于测试过,若否,则继续执行测试步骤;否则,跳转至步骤1继续执行。
步骤7:从集合O中选取未被使用过的优化选项组合Oi,将Oi所涉及的优化选项以pragma的形式插入到测试代码P中;
步骤8:使用待测试的高级综合工具对测试用例P进行综合,获取硬件描述语言代码HP。
步骤9:使用数字电路仿真器对硬件描述语言代码HP进行仿真模拟,获取HP的输出结果HLS_output。
其中,对于硬件描述语言代码HP的仿真模拟,可使用待测试高级综合工具自身集成的仿真器,或可根据实际需求,使用其他数字电路仿真模拟器对硬件描述语言代码HP进行仿真模拟。
步骤10:比较GCC_output与HLS_output是否一致。若二者结果一致,则跳转至步骤6,继续执行;若不一致,则进行测试用例约简,生成并存储缺陷报告,并跳转至步骤6,继续执行。
对于测试用例约简,可使用C-Reduce代码约简工具,或根据实际情况采用其他工具或自定义工具。
步骤2中,所述的基于代码特征向量余弦相似度的筛选方法执行步骤如下:
步骤a:将新生成的测试用例代码P_tmp和已用于测试的代码集合中的所有代码分别转换成抽象语法树(Abstract Syntax Tree,AST);
其中,将代码转化成AST,可使用Pycparser工具,或根据实际需要采用其他工具或自定义工具。Pycparser是C语言的解析器,支持完整的C99标准,用纯Python编写。
步骤b:采用深度优先遍历算法遍历新生成的测试用例代码P_tmp和已用于测试的代码集合中的AST,提取所有代码的各维数组个数、函数个数、各函数中for循环个数、各函数中同层for循环个数、各函数中函数调用个数、各函数表达式个数、各函数中最大嵌套深度以及涉及到各类运算符个数等特征,分别构造各代码的特征向量。
步骤c:计算新生成的测试用例代码P_tmp的代码特征向量与已用于测试代码的代码特征向量之间的最小距离minDist,minDist使用公式(1)进行计算。
其中,VP_tmp和分别表示新生成的测试用例代码P_tmp的代码特征向量和已用于测试代码TCi的代码特征向量,函数为取最大值函数,Cosine_similarity()函数为两向量余弦相似度计算函数。余弦相似度计算可使用sklearn库中的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继续执行;
步骤5中,所述的基于组合覆盖测试的优化选项选择方法执行步骤如下:
步骤a:将测试用例代码P解析成AST;
步骤b:采用深度优先遍历算法遍历代码的AST,根据代码可用优化选项类别,枚举出代码可用的每大类优化选项,忽略选项参数设置。
步骤c:使用组合覆盖测试工具,根据枚举出代码可用的每类优化选项情况,生成对于测试用例代码P可用优化选项类别组合集合O_tmp。
其中,对于优化选项组合生成,可使用组合覆盖测试工具PICT,或根据实际情况采用其他工具或自定义工具。
步骤d:根据测试用例代码P可用的可用优化选项类别组合集合O_tmp中每一组优选选项情况,解析代码P的AST,随机选择可用参数,补全优化选项参数,并将补全后一组的优化选项组合存储于优化选项组合集合O中。当O_tmp中所有选项参数均被补全后,输出优化选项组合集合O。
本发明的有益效果:本发明方法能够通过产生有效且多样性较大的测试用例代码和优化选项组合,对高级综合工具进行自动化测试,能够高效检测高级综合工具中存在的优化选项缺陷,并且能够自动化生成缺陷报告,以供开发人员快速修复缺陷。
附图说明
图1是本发明的一种基于差分测试的高级综合工具优化选项缺陷检测方法工作流程示意图。
图2是本发明中的基于代码特征向量余弦相似度的测试代码筛选方法的工作流程图。
图3是本发明中的基于组合覆盖测试的优化选选个选择方法的工作流程图。
具体实施示例
以下结合附图、技术方案,并以检测高级综合工具VivadoHLS优化选项缺陷为例对本发明方法进行详细说明。
在本实施例中,本发明方法部署在一台Linux服务器上,服务器具体配置如表1所示。根据需求安装GCC编译器、Pycparser工具、PICT工具以及待测试的高级综合工具XilinxVivado HLSv2019.2,并对Xilinx Vivado HLS v2019.2进行测试。
表1.Linux服务器配置信息表
如图1所示,本发明的一种基于差分测试的高级综合工具优化选项缺陷检测方法按如下流程进行。首先使用代码随机生成器产生测试用例代码。接着,对所生成测试用例代码进行基于代码特征向量余弦相似度的代码筛选操作。接着,使用编译器编译运行通过筛选的代码,获取高级语言输出结果。接着,对通过筛选的代码进行修改和基于组合覆盖测试的优化选项选择操作,得到可用于测试的优化选项组合集合。接着,从优化选项组合集合中选取一个优化选项组合,以pragma的形式将组合中的优化选项插入到测试代码中。接着,使用待测试的高级综合工具对测试用例代码进行综合,获取硬件描述语言代码。然后,使用电路仿真模拟器仿真硬件描述语言代码,得到硬件描述语言代码输出结果。最后,通过比较高级语言编译器输出结果与硬件描述语言代码输出结果的一致性来判断待测试高级综合工具优化选项是否存在缺陷。若两者结果不一致,则表明测试代码中所使用到的高级综合工具优化选项存在缺陷,则对触发缺陷的测试用例进行约简,并自动化生成缺陷报告。
本实施例具体步骤如下:
步骤1:检测是否达到测试时间限制。若未达到,则使用代码随机生成器生成测试用例代码P_tmp;若已达到,则停止测试。
具体为:检测是否达到测试时间限制;若未达到,则使用Csmith代码随机生成器随机生成测试代码P_tmp,命名为“TestCode_xxx_tmp.c”,并存放于/home/hls/TestCode/TC_xxx路径下。若已达到时间限制,则停止测试。对于测试代码生成,测试人员可根据实际情况,使用其他程序随机生成工具实现。本发明方法中测试时间限制亦可由测试人员根据需求进行设置。其中,Csmith是犹他大学研究人员以BSD许可证发布的开源工具,能够随机地生成符合C99标准的C语言程序。另外,命名中的“xxx”使用当前生成的测试用例的序号填充,例如,生成的第1个测试用例被命名为“TestCode_1_tmp.c”。
步骤2:使用基于代码特征向量余弦相似度的测试代码筛选方法(具体如图2所示)对步骤1产生的代码P_tmp进行代码筛选。
具体为:在/home/hls/TestCode/TC_xxx目录下,对新生成的测试用例代码TestCode_xxx_tmp.c使用基于代码特征向量余弦相似度的测试代码筛选方法,最终得到用于后续测试的代码P,命名位“TestCode_xxx.c”,存储在/home/hls/TestCode/TC_xxx目录下;其中,文件命名中的“xxx”使用当前生成的测试用例的序号填充。
步骤3:使用编译器编译运行测试程序P,记录相应的输出结果GCC_output。
具体为:在/home/hls/TestCode/TC_xxx目录下,使用GCC编译器编译运行测试用例代码TestCode_xxx.c,并将输出结果GCC_output存储于文件golden_output.txt中;其中,对于所使用的C语言编译器,测试人员根据实际需求,选择其他的C语言编译器。文件命名中的“xxx”使用当前生成的种子测试用例的序号填充。
步骤4:对测试用例代码P进行处理,将P中main函数更名为result函数,将main函数输出值作为result函数返回值。
步骤5:使用基于组合覆盖测试的优化选项选择方法(如图3所示)根据测试用例代码P进行优化选项选择,得到可用于测试的优化选项组合集合O。
具体为:将存储于/home/hls/TestCode/TC_xxx路径下的TestCode_xxx.c文件作为基于组合覆盖测试的优化选项选择方法的输入,该方法根据代码枚举出每类别可用优化选项保存于文件Options.txt中,使用组合覆盖测试工具PICT,根据Options.txt生成对于测试用例代码TestCode_xxx.c可用的可用优化选项类别组合集合O_tmp,并自动补全O_tmp中每组中优化选项的参数,最终产生用于测试的优化选项组合集合O,存储于/home/hls/TestCode/TC_xxx路径下的ComResult.txt文件中。
其中,对于优化选项类别组合生成,可使用组合覆盖测试工具PICT,或根据实际需要采用其他工具或自定义工具。PICT(Pairwise Independent Combinatorial Testing)工具原是微软公司内部使用的一款自动生成成对组合测试用例的命令行工具。在文件路径中,“xxx”使用当前生成的测试用例的序号填充。
步骤6:检测是否优化选项组合集合O中所有优化选项组合均被用于测试过?若否,则继续执行测试步骤;否则,跳转至步骤1继续执行。
步骤7:从O中选取未被使用过的一个优化选项组合Oi,将Oi所涉及的优化选项以pragma的形式插入到测试代码P中;
具体为:按行读取存储在/home/hls/TestCode/TC_xxx/目录下的ComResult.txt文件,将读取到的每组优化选项以pragma的形式插入到测试代码TestCode_xxx.c中,并另存为TestCode_xxx_Options_yyy.c文件,并将TestCode_xxx_Options_yyy.c拷贝至/home/hls/TestCode/TC_xxx/Options_yyy/路径下。其中,“xxx”使用当前生成的测试用例的序号填充,“yyy”使用优化选项组合所在行号填充。
步骤8:使用待测试的高级综合工具对测试用例P进行综合,获取硬件描述语言代码HP。
具体为:首先,TCL脚本生成程序将通用的TestBench文件拷贝至/home/hls/TestCode/TC_xxx/Options_yyy/路径下。然后,TCL脚本生成程序根据测试用例TestCode_xxx_Options_yyy.c以及TestBench文件位置生成TCL脚本,并通过TCL文件为Vivado HLS指定新工程名称、测试用例TestCode_xxx_Options_yyy.c、TestBench文件,设置顶层函数、解决方案名称等,并将上述的TCL文件命名为“TestCode_xxx_yyy_run_hls.tcl”,并存储于/home/hls/TestCode/TC_xxx/Options_yyy/路径下。最后,在/home/hls/TestCode/TC_xxx/Options_yyy/路径下,TCL脚本执行程序通过Linux终端调用Vivado HLS执行TCL脚本进行高级综合,获取到硬件描述语言代码HP。上述的TestBench文件使用C代码编写,主要完成对于测试用例中的result函数的调用以及结果对比,具体实现细节可由测试人员根据实际情况决定。对于TCL脚本生成程序和TCL脚本执行程序,本发明方法中使用python实现,测试人员亦可根据实际情况,选择不同的编程语言进行实现。上述命名中的“xxx”使用当前生成的测试用例的序号填充,“yyy”使用优化选项组合所在行号填充。
步骤9:使用数字电路仿真器对硬件描述语言代码HP进行仿真模拟,获取HP的输出结果HLS_output。
对于硬件描述语言代码HP的仿真模拟,可使用待测试高级综合工具自身集成的仿真器,或可根据实际需求,使用其他数字电路仿真模拟器对代码HP进行仿真模拟。
步骤10:检测GCC_output与HLS_output是否一致。若结果一致,则跳转至步骤6继续执行;若不一致,则进行测试用例约简,生成并存储缺陷报告,并跳转至步骤6继续执行。
对于测试用例约简,可使用C-Reduce代码约简工具,或根据实际需要采用其他工具或自定义工具。其中,C-Reduce是犹他大学研究人员以BSD许可证发布的开源工具,能够自动根据相应目标对C/C++代码进行约简。
当上述过程达到测试时间限制时,则停止测试工作。
本发明方法通过自动化运行上述过程,完成了对于高级综合工具优化选项缺陷的自动检测工作。基于代码特征向量余弦相似度的测试代码筛选操作可得到优化空间差异性较大的测试用例代码,大大增加了测试用例代码的多样性。基于组合覆盖测试的优化选择操作使用组合覆盖测试工具产生优化选项组合,既保证了优化选项组合空间测试覆盖率,也降低了用于测试的优化选择组合的数量,减少测试时间。综合来看,本发明方法可以有效提高高级综合工具优化选项缺陷检测的效率。
Claims (3)
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中选取未被使用过的优化选项组合Oi,将Oi所涉及的优化选项以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)进行计算;
其中,VP_tmp和分别表示新生成的测试用例代码P_tmp的代码特征向量和已用于测试代码TCi的代码特征向量,函数为取最大值函数,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。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111651762.4A CN114385492A (zh) | 2021-12-30 | 2021-12-30 | 一种基于差分测试的高级综合工具优化选项缺陷检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111651762.4A CN114385492A (zh) | 2021-12-30 | 2021-12-30 | 一种基于差分测试的高级综合工具优化选项缺陷检测方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114385492A true CN114385492A (zh) | 2022-04-22 |
Family
ID=81200711
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111651762.4A Pending CN114385492A (zh) | 2021-12-30 | 2021-12-30 | 一种基于差分测试的高级综合工具优化选项缺陷检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114385492A (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106598849A (zh) * | 2016-12-03 | 2017-04-26 | 浙江理工大学 | 一种基于ap‑pso算法的组合测试用例生成方法 |
JP2018136763A (ja) * | 2017-02-22 | 2018-08-30 | 三菱電機株式会社 | 類似関数抽出装置および類似関数抽出プログラム |
CN108763092A (zh) * | 2018-05-31 | 2018-11-06 | 北京理工大学 | 一种基于交叉验证的代码缺陷检测方法及装置 |
CN109062792A (zh) * | 2018-07-21 | 2018-12-21 | 东南大学 | 一种基于串匹配和特征匹配的开源代码检测方法 |
US20210064515A1 (en) * | 2019-08-27 | 2021-03-04 | Nec Laboratories America, Inc. | Deep q-network reinforcement learning for testing case selection and prioritization |
CN112559365A (zh) * | 2020-12-23 | 2021-03-26 | 上海品顺信息科技有限公司 | 一种测试用例筛选方法、装置、计算机设备和存储介质 |
CN112948193A (zh) * | 2021-03-08 | 2021-06-11 | 北京理工大学 | 一种基于差异测试的fpga综合工具缺陷检测方法 |
CN113010427A (zh) * | 2021-03-22 | 2021-06-22 | 大连理工大学 | 一种基于等价取模测试的高级综合工具缺陷检测方法 |
US20210209008A1 (en) * | 2018-05-23 | 2021-07-08 | South China University Of Technology | Unit testing method based on automatic generation of path coverage test cases |
CN113268429A (zh) * | 2021-06-17 | 2021-08-17 | 大连理工大学 | 一种基于多样性导向变异的高级综合工具缺陷检测方法 |
CN113377675A (zh) * | 2021-07-07 | 2021-09-10 | 大连理工大学 | 基于反馈的smt求解器性能测试用例约简方法 |
-
2021
- 2021-12-30 CN CN202111651762.4A patent/CN114385492A/zh active Pending
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106598849A (zh) * | 2016-12-03 | 2017-04-26 | 浙江理工大学 | 一种基于ap‑pso算法的组合测试用例生成方法 |
JP2018136763A (ja) * | 2017-02-22 | 2018-08-30 | 三菱電機株式会社 | 類似関数抽出装置および類似関数抽出プログラム |
US20210209008A1 (en) * | 2018-05-23 | 2021-07-08 | South China University Of Technology | Unit testing method based on automatic generation of path coverage test cases |
CN108763092A (zh) * | 2018-05-31 | 2018-11-06 | 北京理工大学 | 一种基于交叉验证的代码缺陷检测方法及装置 |
CN109062792A (zh) * | 2018-07-21 | 2018-12-21 | 东南大学 | 一种基于串匹配和特征匹配的开源代码检测方法 |
US20210064515A1 (en) * | 2019-08-27 | 2021-03-04 | Nec Laboratories America, Inc. | Deep q-network reinforcement learning for testing case selection and prioritization |
CN112559365A (zh) * | 2020-12-23 | 2021-03-26 | 上海品顺信息科技有限公司 | 一种测试用例筛选方法、装置、计算机设备和存储介质 |
CN112948193A (zh) * | 2021-03-08 | 2021-06-11 | 北京理工大学 | 一种基于差异测试的fpga综合工具缺陷检测方法 |
CN113010427A (zh) * | 2021-03-22 | 2021-06-22 | 大连理工大学 | 一种基于等价取模测试的高级综合工具缺陷检测方法 |
CN113268429A (zh) * | 2021-06-17 | 2021-08-17 | 大连理工大学 | 一种基于多样性导向变异的高级综合工具缺陷检测方法 |
CN113377675A (zh) * | 2021-07-07 | 2021-09-10 | 大连理工大学 | 基于反馈的smt求解器性能测试用例约简方法 |
Non-Patent Citations (2)
Title |
---|
牟永敏;李慧丽: "基于函数调用路径的测试用例优先级排序", 计算机工程, vol. 40, no. 7, 31 December 2014 (2014-12-31) * |
郑锦勤;牟永敏: "基于函数调用路径的回归测试用例选择排序方法研究", 计算机应用研究, vol. 33, no. 7, 31 December 2016 (2016-12-31) * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102495789B (zh) | 一种自动化测试方法和设备 | |
US10296447B2 (en) | Automated software program repair | |
US7490307B2 (en) | Automatic generating of timing constraints for the validation/signoff of test structures | |
EP2960799A1 (en) | Defect localization in software integration tests | |
CN109189479B (zh) | 一种用于处理器指令集的并行自动化验证方法 | |
US20070061641A1 (en) | Apparatus and method for generating test driver | |
CN112380120B (zh) | 单元测试代码结构自动解析与路径分析方法 | |
CN112444731B (zh) | 芯片测试方法、装置、处理器芯片及服务器 | |
US7539977B1 (en) | Automatic bug isolation in computer programming languages | |
CN107329889B (zh) | 一种c编译器自动化测试的方法 | |
CN105512021A (zh) | 用于软件测试的Diff分析方法及装置 | |
US6707313B1 (en) | Systems and methods for testing integrated circuits | |
Omar et al. | HOMAJ: A tool for higher order mutation testing in AspectJ and Java | |
US20190179733A1 (en) | Software test program generation | |
CN107622017B (zh) | 一种通用自动化软件测试的解析方法 | |
CN108563561B (zh) | 一种程序隐性约束提取方法及系统 | |
US20070150249A1 (en) | Verification Operation Supporting System and Method of the Same | |
CN113010427A (zh) | 一种基于等价取模测试的高级综合工具缺陷检测方法 | |
CN106546910A (zh) | 基于位流回读的fpga测试平台 | |
US10761962B1 (en) | Automated software program repair | |
CN114385492A (zh) | 一种基于差分测试的高级综合工具优化选项缺陷检测方法 | |
CN115656791B (zh) | 芯片可测性设计的测试方法及测试平台 | |
CN109101355B (zh) | 一种提取错误现场特征测试激励的处理器调试方法 | |
Kitaura et al. | Random testing of compilers’ performance based on mixed static and dynamic code comparison | |
US7506279B2 (en) | Design supporting apparatus capable of checking functional description of large-scale integrated circuit to detect fault in said circuit |
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 |