CN116340145A - 一种基于休眠区变异的仿真软件测试方法 - Google Patents
一种基于休眠区变异的仿真软件测试方法 Download PDFInfo
- Publication number
- CN116340145A CN116340145A CN202310123179.9A CN202310123179A CN116340145A CN 116340145 A CN116340145 A CN 116340145A CN 202310123179 A CN202310123179 A CN 202310123179A CN 116340145 A CN116340145 A CN 116340145A
- Authority
- CN
- China
- Prior art keywords
- test
- time delay
- new
- test cases
- simulation software
- 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
- 238000000034 method Methods 0.000 title claims abstract description 30
- 238000013522 software testing Methods 0.000 title claims abstract description 14
- 238000012360 testing method Methods 0.000 claims abstract description 78
- 238000013461 design Methods 0.000 claims abstract description 22
- 230000014509 gene expression Effects 0.000 claims abstract description 15
- 238000004088 simulation Methods 0.000 claims abstract description 13
- 238000007781 pre-processing Methods 0.000 claims abstract description 11
- 230000001934 delay Effects 0.000 claims abstract description 10
- 238000010998 test method Methods 0.000 claims abstract description 7
- 230000003068 static effect Effects 0.000 claims abstract description 4
- 230000035772 mutation Effects 0.000 claims description 20
- 238000012423 maintenance Methods 0.000 claims description 12
- 238000010586 diagram Methods 0.000 claims description 11
- 230000005284 excitation Effects 0.000 claims description 6
- 230000000903 blocking effect Effects 0.000 claims description 3
- 230000007547 defect Effects 0.000 abstract description 6
- 238000005516 engineering process Methods 0.000 abstract description 6
- 238000004519 manufacturing process Methods 0.000 abstract description 3
- 238000011161 development Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 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/3688—Test management for test execution, e.g. scheduling of test suites
-
- 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/3696—Methods or tools to render software testable
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明公开了一种基于休眠区变异的仿真软件测试方法,包括:将测试用例放入测试用例池进行静态规范化检查,逐个编译测试用例,判读测试用例是否正常编译并生成图形化预处理结果;对完成预处理的测试用例进行时延信息收集,将符合条件的时延拆分为两个新时延;在符合惯性时延条件的新时延后生成新的表达式从而构建休眠区;对休眠区代码进行组合逻辑环路破除操作并生成新的等价变体;采用等效模输入的差分测试方法比较等价变体与测试用例的输出结果以查找编译问题。基于本方法中的测试技术可以生成更多样化的测试变体,在已有的测试条件下已经可以测试出仿真软件的缺陷,保证了在芯片设计及高端制造业领域仿真工具的稳定性。
Description
技术领域
本发明涉及软件测试领域,尤其涉及一种基于休眠区变异的仿真软件测试方法。
背景技术
在数位电路设计中,寄存器传输级(英语:register-transfer level,RTL)是一种对同步数位电路的抽象模型,寄存器传输级抽象模型在诸如Verilog和VHDL的硬件描述语言中被用于创建对实际电路的高层次描述。在现代的数位设计中,寄存器传输级上的设计是最典型的工作流程。
仿真软件作为验证寄存器传输级代码的工具,其输出的波形图可以以一种直观的描述帮助开发人员了解整个模型的运行效果。这样可发人员就可以使用更小的代价定位抽象模型的可能的缺陷。因此保证仿真软件的可靠性与稳定性至关重要。
目前针对仿真软件的测试方法主要是应用模糊测试的用例生成类测试,其中具有代表性的是VeriSmith。其通过基于AST模糊生成方式生成随机的Verilog代码,并将其应用于综合工具或仿真软件的测试。
在芯片设计及高端制造业领域对于开发工具的稳定性以及开发工具的正确性均有很高的要求。已有的测试技术存在两个方面的不足,首先测试工具无法保证自身的稳定性,基于AST生成的Verilog代码有一定的不可用性。这也就导致了工具所发现的缺陷有着假阳性的问题。其次基于AST生成的Verilog代码多样性不足,实现的功能较为单一,这也限制了工具探索缺陷的空间。
发明内容
根据现有技术存在的问题,本发明公开了一种基于休眠区变异的仿真软件测试方法,具体包括如下步骤:
将生成的测试用例放入测试用例池进行静态规范化检查,采用仿真软件逐个编译测试用例,判读测试用例是否正常编译并生成图形化预处理结果;
对完成预处理的测试用例进行时延信息收集,将符合条件的时延拆分为两个新时延;
在符合惯性时延条件的新时延后生成新的表达式从而构建休眠区;
对休眠区代码进行组合逻辑环路破除操作并生成新的等价变体;
采用等效模输入的差分测试方法比较等价变体与测试用例的输出结果以查找编译问题。
所述测试用例包括仿真激励文件和设计模型文件,判读测试用例是否正常编译时,如果测试用例正常编译则放入测试池,否则删除测试用例并打印输出错误,根据路径覆盖收集测试用例的变量数值和时延,将收集到的变量和时延信息保存到维护表中,依据正常编译的比率生成图形化的预处理结果图。
在构建休眠区时:获取测试用例在预处理时维护表中所有的时延及变量数值信息,在仿真激励文件中随机选定一个程序点,依据对应程序点中变量从维护表中的读取对应时延,如果是则继续执行,如果否,则重新选择程序点;随机将时延拆分两个新的时延,判断新生成的时延是否有一个大于设计模型文件中指定的时延,如果是则继续执行,如果否,则重新进行时延拆分;将拆分后小于设计模型文件中指定的时延的新时延指定给程序点中的表达式,在程序点之后加入拆分后大于设计模型文件中指定的时延的新时延构建休眠区。
在符合惯性时延条件的新时延后生成新的表达式时:定义变异算子库,将选定程序点的变量作为变异变量库,随机选取变异变量库中的两个变量并结合变异算子形成新的变异表达式,将表达式插入休眠区,编译经过变异操作后的测试用例并检查,若测试用例正常运行则进行下一步,否则重新选择程序点执行变异操作。
对休眠区代码进行组合逻辑环路破除操作时:使用仿真软件中的逻辑环路警告性质输出组合逻辑环路信息,根据组合逻辑环路信息定位组合逻辑环路;判断组合逻辑环路类型是否为异步复位或异步置位,如果不是,则选定逻辑环路的输出端所在的程序点并更改组合逻辑环路的数据流向,将逻辑环内的赋值语句改为阻塞赋值,如果是则依据维护表对应的变量信息,插入设计模型文件中对应的时延。
采用等效模输入的差分测试方法比较等价变体与测试用例的输出结果时:保存破坏操作后的测试用例为新的等价变体程序,编译运行并检查等价变体程序,如果编译运行出现错误,则将错误信息写入bug表中,如果没有编译错误,则编译该程序并生成波形图,将生成的波形图与原始测试用例编译后的波形图进行比较,如果产生差异,则将差异信息写入bug表当中,否则结束比较程序。
由于采用了上述技术方案,本发明提供的一种基于休眠区变异的仿真软件测试方法,基于本方法中的测试技术可以生成更多样化的测试变体,在已有的测试条件下已经可以测试出仿真软件的缺陷,保证了在芯片设计及高端制造业领域仿真工具的稳定性。相比于以往的技术,我们所使用的技术覆盖范围更广,技术成熟度更高。目前我们已经测试出多个有效的仿真工具缺陷,包括Iverilog、vivado、modelsim等。其中被官方确认的漏洞有多个,这些都在一定程度上维护了仿真工具的稳定与可靠。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明方法的流程图
具体实施方式
为使本发明的技术方案和优点更加清楚,下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚完整的描述:
如图1所示的一种基于休眠区变异的仿真软件测试方法,具体包括如下步骤:
S1:预处理阶段
S11:采用测试用例生成工具VeriSimth生成测试用例,测试用例包含仿真激励文件与设计模型文件
S12:将生成的测试用例放入测试用例池,并进行预处理前的静态规范化检查
S13:测试程序预处理开始,使用仿真软件逐个编译测试用例以检查测试用例的可用性
S14:检测模型能够否正常编译,如果模型可以正常编译则放入测试池,否则删除用例并打印输出错误
S15:根据路径覆盖收集测试用例的变量数值与时延
S16:将收集到的变量及时延信息保存到维护表中,依据括正常编译的比率生成图形化的预处理结果图
S17:预处理结束转入测试用例变异阶段
S2:对预处理结束后的每一个测试用例进行休眠区判断步骤如下,具体步骤如下:
S21:获取测试用例在预处理过程中维护表中所有的时延及变量数值信息
S22:在仿真激励文件中随机选定一个程序点
S23:依据对应程序点中变量从维护表中的读取对应时延
S24:判定时延是否小于设计模型文件中指定的时延,是,则继续下一步。
否,则重新选择程序点
S25:随机将时延拆分两个新的时延,判定新生成的时延是否有一个大于设计模型文件中指定的时延,是,则继续下一步。否,则重新进行时延拆分
S26:将拆分后小于设计模型文件中指定的时延的新时延指定给程序点中的表达式
S27:在程序点之后加入拆分后大于设计模型文件中指定的时延的新时延构建休眠区
S3:在新时延插入之后,我们开始生成新的表达式以增加整体程序的复杂度
S31:定义变异算子库,包含加、减、乘、除、位或、位与等Verilog算子
S32:将选定程序点的变量作为变异变量库
S33:随机选取变异变量库中的两个变量并结合变异算子形成新的变异表达式
S34:将表达式插入休眠区
S35:编译经过变异操作后的测试用例并检查
S36:若测试用例可以正常运行则进行下一步,否则重新选择程序点执行变异操作
S4:经过对于休眠区的构建和改动,为了提高测试用例的可靠性,我们进行组合逻辑环路破除操作,具体步骤如下
S41:使用仿真软件中的逻辑环路警告功能,输出组合逻辑环路信息
S42:根据组合逻辑环路信息定位组合逻辑环路
S43:判断组合逻辑环路类型是否为异步复位或异步置位
S44:如果不是,则选定逻辑环路的输出端所在的程序点
S45:依据维护表对应的变量信息,插入设计模型文件中对应的时延
S46:如果是异步复位或异步置位的组合逻辑环路
S47:更改组合逻辑环路的数据流向,将逻辑环内的赋值语句改为阻塞赋值S5:经过上述步骤便完成了整体的休眠区变异程序。接下来进入保存测试用例并报告测试过程阶段。
本方法使用了一种新的技术名为等效模输入(EMI)测试。这是过程语言编译器差分测试的一个新进展。其思想是系统地变异一个源程序,只要它的语义在给定的输入数据下保持等价,那么其输出也应该等价。作为一种特殊情况,如果成功仿真模型的某些变量没有编译,或者将变量仿真后的信号数据与原程序变量仿真数据进行比较时产生了比较误差。这些误差并不是由于人为因素产生的,属于编译器自身的问题。这样我们就可以说这是编译器出现bug。于是利用等效模输入的差分测试可以有效的发现容易被忽视的编译器问题。其步骤如下
S51:保存破坏操作后的测试用例为新的等价变体程序
S52:编译运行并检查等价变体程序
S53:如果编译运行出现错误,则将错误信息写入bug表中
S54:如果没有编译错误,则编译该程序并生成波形图
S55:将生成的波形图与原始测试用例编译后的波形图进行比较
S56:如果产生差异,则将差异信息写入bug表当中
S57:否则结束比较程序:
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。
Claims (6)
1.一种基于休眠区变异的仿真软件测试方法,其特征在于包括:
将生成的测试用例放入测试用例池进行静态规范化检查,采用仿真软件逐个编译测试用例,判读测试用例是否正常编译并生成图形化预处理结果;
对完成预处理的测试用例进行时延信息收集,将符合条件的时延拆分为两个新时延;
在符合惯性时延条件的新时延后生成新的表达式从而构建休眠区;
对休眠区代码进行组合逻辑环路破除操作并生成新的等价变体;
采用等效模输入的差分测试方法比较等价变体与测试用例的输出结果以查找编译问题。
2.根据权利要求1所述的基于休眠区变异的仿真软件测试方法,其特征在于:所述测试用例包括仿真激励文件和设计模型文件,判读测试用例是否正常编译时,如果测试用例正常编译则放入测试池,否则删除测试用例并打印输出错误,根据路径覆盖收集测试用例的变量数值和时延,将收集到的变量和时延信息保存到维护表中,依据正常编译的比率生成图形化的预处理结果图。
3.根据权利要求1所述的基于休眠区变异的仿真软件测试方法,其特征在于:在构建休眠区时:获取测试用例在预处理时维护表中所有的时延及变量数值信息,在仿真激励文件中随机选定一个程序点,依据对应程序点中变量从维护表中的读取对应时延,如果是则继续执行,如果否,则重新选择程序点;随机将时延拆分两个新的时延,判断新生成的时延是否有一个大于设计模型文件中指定的时延,如果是则继续执行,如果否,则重新进行时延拆分;将拆分后小于设计模型文件中指定的时延的新时延指定给程序点中的表达式,在程序点之后加入拆分后大于设计模型文件中指定的时延的新时延构建休眠区。
4.根据权利要求1所述的基于休眠区变异的仿真软件测试方法,其特征在于:在符合惯性时延条件的新时延后生成新的表达式时:定义变异算子库,将选定程序点的变量作为变异变量库,随机选取变异变量库中的两个变量并结合变异算子形成新的变异表达式,将表达式插入休眠区,编译经过变异操作后的测试用例并检查,若测试用例正常运行则进行下一步,否则重新选择程序点执行变异操作。
5.根据权利要求1所述的基于休眠区变异的仿真软件测试方法,其特征在于:对休眠区代码进行组合逻辑环路破除操作时:使用仿真软件中的逻辑环路警告性质输出组合逻辑环路信息,根据组合逻辑环路信息定位组合逻辑环路;判断组合逻辑环路类型是否为异步复位或异步置位,如果不是,则选定逻辑环路的输出端所在的程序点并更改组合逻辑环路的数据流向,将逻辑环内的赋值语句改为阻塞赋值,如果是则依据维护表对应的变量信息,插入设计模型文件中对应的时延。
6.根据权利要求1所述的基于休眠区变异的仿真软件测试方法,其特征在于:采用等效模输入的差分测试方法比较等价变体与测试用例的输出结果时:保存破坏操作后的测试用例为新的等价变体程序,编译运行并检查等价变体程序,如果编译运行出现错误,则将错误信息写入bug表中,如果没有编译错误,则编译该程序并生成波形图,将生成的波形图与原始测试用例编译后的波形图进行比较,如果产生差异,则将差异信息写入bug表当中,否则结束比较程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310123179.9A CN116340145A (zh) | 2023-02-16 | 2023-02-16 | 一种基于休眠区变异的仿真软件测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310123179.9A CN116340145A (zh) | 2023-02-16 | 2023-02-16 | 一种基于休眠区变异的仿真软件测试方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116340145A true CN116340145A (zh) | 2023-06-27 |
Family
ID=86890596
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310123179.9A Pending CN116340145A (zh) | 2023-02-16 | 2023-02-16 | 一种基于休眠区变异的仿真软件测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116340145A (zh) |
-
2023
- 2023-02-16 CN CN202310123179.9A patent/CN116340145A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Kugler et al. | Temporal logic for scenario-based specifications | |
US8875110B2 (en) | Code inspection executing system for performing a code inspection of ABAP source codes | |
US6173440B1 (en) | Method and apparatus for debugging, verifying and validating computer software | |
US6931611B2 (en) | Design verification system for avoiding false failures and method therefor | |
US7308660B2 (en) | Calculation system of fault coverage and calculation method of the same | |
CN109189479B (zh) | 一种用于处理器指令集的并行自动化验证方法 | |
US7093216B2 (en) | Apparatus connectable to a computer network for circuit design verification, computer implemented method for circuit design verification, and computer program product for controlling a computer system so as to verify circuit designs | |
US7603647B2 (en) | Recognition of a state machine in high-level integrated circuit description language code | |
US7216318B1 (en) | Method and system for false path analysis | |
CN103914374A (zh) | 基于程序切片和频繁模式提取的代码缺陷检测方法及装置 | |
CN114880975A (zh) | 一种硬件木马的生成方法、系统、设备以及介质 | |
Liuying et al. | Test selection from UML statecharts | |
JP4541196B2 (ja) | 故障検出改善装置、故障検出改善プログラム、故障検出改善方法 | |
CN116227398B (zh) | 一种自动化生成ip核测试激励的方法及系统 | |
Bruschi et al. | A framework for the functional verification of SystemC models | |
CN116340145A (zh) | 一种基于休眠区变异的仿真软件测试方法 | |
US20100269003A1 (en) | Delay fault diagnosis program | |
CN111782553B (zh) | 一种基于故障注入的软件反应缺陷分析方法 | |
CN109374038B (zh) | 一种基于应用样机的核安全级仪控产品的变更测试方法 | |
CN113688403A (zh) | 一种基于符号执行验证的智能合约漏洞检测方法及装置 | |
Liang et al. | Randomization for testing systems of systems | |
JP4899927B2 (ja) | テストパターン自動生成方法およびテストパターン自動生成プログラム | |
CN110750449A (zh) | 一种测试驱动的网页构件功能抽取方法 | |
CN112148608B (zh) | 一种基于控件功能标注的移动端自动化软件测试方法 | |
CN115470104A (zh) | 一种基于等价模变异的仿真软件测试方法 |
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 |