CN109542760A - 一种基于设备规约的虚拟原型变异测试用例生成方法 - Google Patents
一种基于设备规约的虚拟原型变异测试用例生成方法 Download PDFInfo
- Publication number
- CN109542760A CN109542760A CN201811176478.4A CN201811176478A CN109542760A CN 109542760 A CN109542760 A CN 109542760A CN 201811176478 A CN201811176478 A CN 201811176478A CN 109542760 A CN109542760 A CN 109542760A
- Authority
- CN
- China
- Prior art keywords
- register
- model
- virtual prototype
- fdm
- key component
- 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.)
- Granted
Links
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/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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种基于设备规约的虚拟原型变异测试用例生成方法,包括以下步骤:步骤1:使用SystemRDL语言描述设备规约;步骤2:将设备规约转化为一个由C/C++代码文件组成的可执行的FDM模型;步骤3:通过变异约束条件生成规则对FDM模型插桩;步骤4:使用符号执行的方式执行FDM模型,收集能够满足FDM模型中所插入的变异约束条件的路径,求解生成虚拟原型测试用例集。本发明基于设备的SystemRDL规约,通过自动转换工具得到对应设备的FDM模型,使用变异约束条件生成规则运行自动化脚本对FDM模型进行插桩,根据插桩信息利用符号执行引擎执行FDM模型,求解得到虚拟原型测试用例集,本发明可生成用于虚拟原型测试的高质量测试用例,具有较高的质量。
Description
技术领域
本发明属于计算机技术领域,涉及硬件设备规约转换技术、虚拟原型状态抓取技术及符号执行技术,尤其涉及到了对硬件设备规约的建立,将不可执行的设备规约转换为可执行的设备模型,并作为硬件设备的高阶参照标准,在此基础上结合符号执行方法实现了对硬件设备虚拟原型生成高质量的测试用例集的目的。
背景技术
规约(Specification)是指针对设计或协议所应该遵循的一组约束。它是作为后期实施行为的参照标准。硬件设备规约定义了一个设备在设计之初给定的设备应该遵循的约束并以此为参照。目前工业界广泛采用SystemRDL语言来描述一个硬件的设备规约,并且它贯穿于该硬件设备的整个生命周期。它不仅可以作为硬件设备后期具体实现的参照标准,还可以用于在不同组织或不同硬件厂商之间共享该硬件设备IP(IntellectualProperty)。SystemRDL语言的发展增强了传统使用说明文档来描述设备规约的可读性和可操作性,近年来伴随着硬件工程师需求的提高,SystemRDL的表达能力也在不断地增强。
然而,SystemRDL目前主要侧重于对硬件中的接口、存储等方面进行描述,对设备寄存器的行为逻辑的描述能力弱,难以直接在其上进行功能测试。所以,增强其表达能力已经成为一个迫切需要解决的问题。同时,使用SystemRDL描述的设备规约是不能直接执行的,需要对其加以转换才能使之成为可执行的设备模型。
符号执行(Symbolic Execution)是计算机领域中一种非常重要的方法,在计算机软硬件及控制系统的测试和验证中得到了广泛的应用。对于可执行程序中的某些变量可以设置为符号化的变量,通过在符号执行引擎中使用相应的符号值代替真实值加以执行。同时在执行过程中如果遇到了分支,并且该分支的判断条件中存在符号变量,那么符号执行引擎将会对该分支创建所有可能的分支进程来分别执行不同的情况。在程序执行的最后,符号执行引擎会将执行过程中记录的各个符号变量的表达式以合取的方式传递给约束求解器并返回相应符号变量的具体值。符号执行目前被广泛应用于程序分析、测试用例生成和程序一致性验证方面。
变异测试(Mutation Testing)是一种通过在源程序代码中插入变体(Mutant)让程序进入不正常的状态以帮助测试者发现测试数据的弱点以生成更有效的测试用例集或定位代码的弱点的测试方式。对于一个变体,若程序执行的过程中测试单元能够察觉到错误发生,则称该变体被杀死。变体的杀死分为强杀死和弱杀死。若执行变体对应操作时程序转入错误状态,称为弱杀死;若程序的错误状态能够被外部的监视程序捕获,则称该变体被强杀死。
发明内容
本发明的目的是提供一种基于设备规约的虚拟原型测试用例生成方法,该方法将使用SystemRDL语言来描述设备规约转换成一种可执行的FDM模型,由于使用SystemRDL语言来描述设备规约是一个硬件设备的参照标准,从而可以将可执行的FDM模型视作该设备的可执行参照模型,并在此基础上插入变异约束条件集,利用符号执行生成可满足变异约束条件的高质量测试用例集。
实现本发明目的的具体技术方案是:
一种基于设备规约的虚拟原型变异测试用例生成方法,该方法包括以下步骤:
步骤1:使用SystemRDL语言描述设备规约;
步骤2:将设备规约转化为一个由C/C++代码文件组成的能够执行的FDM模型;
步骤3:选择FDM模型中的语句,通过变异约束条件生成规则在其之前插入变异约束条件检查语句,对FDM模型插桩;
步骤4:使用符号执行的方式执行FDM模型,收集能够满足FDM模型中所插入的变异约束条件的路径,求解得到虚拟原型测试用例集。
步骤1所述SystemRDL语言包括:关键组件field、register、register file、address map、signal、macro和function及设备寄存器的属性;其中,
所述关键组件field用于指定设备寄存器的每一位所具备的属性和名称;
所述关键组件register用于描述设备所具有的寄存器,同时指定对应寄存器的属性、实例名称以及地址偏移量;
所述关键组件register file用于描述寄存器的划分;
所述关键组件address map用于指定寄存器或寄存器组组合成为一个设备地址空间;
所述关键组件signal用于定义一条连线连接其他组件的输入或输出;
所述关键组件macro用于定义在“function”组件中描述设备寄存器行为逻辑时要使用的宏,格式是macro_name=value;
所述关键组件function用于定义设备寄存器的行为逻辑,其格式是在该关键组件的代码描述部分按照C语言函数定义的格式进行描述;
所述设备寄存器的属性用于指定设备寄存器所应具备的特性,包括读写访问权限,寄存器的位宽。
所述能够执行的FDM模型,其组成是基于C/C++格式的源代码文件集合,包括设备模型的主函数和各个接口寄存器的行为逻辑;其中,
所述主函数用于控制设备模型的输入输出;
所述接口寄存器的行为逻辑用于描述接口寄存器在影响设备动作请求后的状态变迁。
所述通过变异约束条件生成规则在其之前插入变异约束条件检查语句,对FDM模型插桩,具体为:向FDM模型中的C/C++源代码中的部分语句前中插入判断所产生变异约束条件能否被满足的检查语句,若模型执行至该语句时,变异约束条件判断为真,则称为满足该变异约束条件。
所述测试用例由目标虚拟原型当时状态、符号执行生成的测试激励及所述测试激励执行时满足的变异约束条件组成。
本发明提出的基于设备规约的虚拟原型测试用例生成方法中,使用SystemRDL语言描述的设备规约是不可执行的,需将该设备规约转换为可执行的FDM模型。
本发明的有益效果:可以高效地将硬件工程师建立的使用SystemRDL语言描述的设备规约转换为一个可执行的FDM模型,并再次基础上直接生成基于变异测试的高质量测试用例集。这将大大缩短测试用例生成时间并提升测试的质量。
附图说明
图 1为本发明的流程图;
图 2为本发明变异规则示意图;
图3为本发明中的插入变异约束条件检查语句后的FDM模型部分代码示例图;
图4为本发明测试用例生成示意图。
具体实施方式
结合以下具体实施例和附图,对本发明作进一步的详细说明。
参阅图1,本发明包括以下步骤:
步骤1:使用SystemRDL语言描述设备规约;
步骤2:将设备规约转化为一个由C/C++代码文件组成的可执行的FDM模型;
步骤3:选择FDM模型中的一些语句,通过变异约束条件生成规则在其之前插入变异约束条件检查语句,对FDM模型插桩;
步骤4:使用符号执行的方式执行FDM模型,收集能够满足FDM模型中所插入的变异约束条件的路径,求解得到虚拟原型测试用例集。
本发明中对SystemRDL语言进行拓展,提出了FDM模型(Formal Device Model,标准设备模型),扩展内容包括:
关键组件macro:扩展该关键组件是用于定义在关键组件“function”中描述设备寄存器行为逻辑时要使用的宏,格式是macro_name=value;
关键组件function:扩展该关键组件是用于定义硬件设备寄存器的行为逻辑,其格式是在该组件的主体部分按照C语言函数定义的格式进行描述。
关键组件macro和关键组件function的语法格式遵循SystemRDL语言中原有的关键组件(如关键组件reg)的语法格式。
本发明中,将使用SystemRDL语言描述的设备规约转换为FDM模型,该转换包括以下内容:
关键组件macro的主体映射成FDM模型中的宏定义;例如:
macrogeneral_macro{
CTRL_RST=0x04000000;
TCTL_EN=0x00000002;
...
};
该macro的主体中的两条语句CTRL_RST=0x04000000和TCTL_EN=0x00000002将分别映射到FDM模型中#define CTRL_RST 0x04000000和#define TCTL_EN 0x00000002。
关键组件reg的regwidth属性和field主体映射成FDM模型中的union结构体,其中regwidth属性的值被用于限定寄存器变量的字节大小,如32限定了寄存器变量的长度大小为4字节,而reg组件中的每个field主体设定了FDM模型中该寄存器结构体中的对应的位域;例如:
regReg_CTRL_type {
regwidth = 32;
field {desc = "Link Reset"; swwe=true;} LRST[3:3] = 1'b1;
field {desc = "Currently Reserved";} Rsvd4[4:4] = 0;
...
};
其中的regwidth属性值32映射到FDM模型中CTRL寄存器变量的类型为uint32_t;而field主体将映射到
Union _Reg_CTRL_inst {
...
struct {
...
uint32_t LRST :1;
uint32_t Rsvd4 :1;
}。
关键组件function 的主体部分映射到FDM模型中的函数;例如
functionasyn_tctl_func{
voidrun_tctl(DeviceState* pdevState) {
pdevState->reg_TDT_inst.value&= 0xffff;
if(!(pdevState->reg_TCTL_inst.value& TCTL_EN))
...
}
}映射到FDM模型中的run_tctl(DeviceState* pdevState)函数(由runDeviceTransaction(DeviceState *pdevState)函数调用);
Function syn_tctl_func{
voidwrite_tctl (DeviceState *pdevState, uint32_t value, uint64_t offset){
...
}
}映射到FDM模型中的write_tctl_func(pdevState, value, offset)函数(由devRegWrite(DeviceState *pdevState, uint32_t value, uint64_t offset)函数调用)。
此外,关键组件reg的对象实例化语句(包含寄存器的地址)映射成FDM模型中的宏定义;例如Reg_TCTL_typereg_TCTL_inst @0x00400是表示TCTL寄存器的一个实例并指定了该寄存器的地址(或称为偏移量)为0x00400,这部分信息会映射到FDM模型中的宏定义#define Reg_TCTL_inst 0x00400。
最后,FDM模型中,使用具体的可执行代码来描述硬件寄存器在收到输入/输出请求时会进行的行为逻辑。
基于以上叙述,能够完成使用所提出的FDM模型来描述一个硬件设备包括行为逻辑的具体规约,且该模型是可运行的。
为了实现基于FDM模型的虚拟原型变异测试用例生成,使用图2所述的变异约束条件生成规则在其之前插入变异约束条件检查语句,以此来对FDM模型进行插桩操作。使用的变异条件如图2所示,其中,ROR规则针对关系语句,将关系语句的结果取反;LCR规则针对逻辑语句,改变逻辑运算的逻辑符号;AOR规则针对算术语句,更改其运算符;UOI规则改变语句中括号的顺序,进而改变运算的流程。RRVR语句屏蔽对接口寄存器部分位的修改,RRAR语句屏蔽对接口寄存器部分位的读取,返回0。接着使用定义的编译条件进行转化,得到变异约束条件生成规则,变异约束即是判断模型在执行到该语句时,如模型状态满足该变异约束,则说明该变体会被杀死。然后引入用于检查变异约束条件是否被满足的MutantCheck函数,对FDM代码中对应插入变异约束条件检查代码,如图3所示,分别MutantCheck函数在第5行,第16行,第21行的位置上对使用LCR、AOR、ROR规则进行变异的位置插入了变异约束条件检查代码。
为了实现基于FDM模型的虚拟原型变异测试用例生成,提出了图4所示的框架对测试用例集进行生成。
为获取虚拟原型当前状态并向虚拟原型输出操作,基于Memory Mapped I/O的映射机制设计了激励执行器、状态读取器两个内核模块。激励执行器用于将符号执行引擎生成的虚拟原型测试激励输入到虚拟原型中使虚拟原型做出反应,更改其当前状态;状态读取器用于读取虚拟原型当前状态,并装载进符号执行引擎模型中,作为虚拟原型测试用例的起始状态。
使用修改的KLEE符号执行引擎来符号执行的方式执行FDM模型,以状态读取器中得到的虚拟原型设备当前状态为符号执行的起始状态,执行到变异约束条件检查语句时,将变异约束条件加入路径约束中,尝试生成一条满足变异约束条件的测试路径,之后根据所求得的测试路径集合,在其中选择一条满足变异约束条件的测试路径进行约束求解,求解得到虚拟原型测试用例。然后将所得的虚拟原型测试用例通过激励执行器激励到运行中的虚拟原型,更新虚拟原型状态,并在更新后的虚拟原型状态上重新执行测试用例生成操作,直到满足一个人工定义的测试用例生成终止条件。定义的测试用例生成终止条件为生成的满足不同变异约束条件的测试用例数量达到一定数量。
Claims (5)
1.一种基于设备规约的虚拟原型变异测试用例生成方法,其特征在于,该方法包括以下步骤:
步骤1:使用SystemRDL语言描述设备规约;
步骤2:将设备规约转化为一个由C/C++代码文件组成的能够执行的FDM模型;
步骤3:选择FDM模型中的语句,通过变异约束条件生成规则在其之前插入变异约束条件检查语句,对FDM模型插桩;
步骤4:使用符号执行的方式执行FDM模型,收集能够满足FDM模型中所插入的变异约束条件的路径,求解得到虚拟原型测试用例集。
2.根据权利要求1所述的虚拟原型变异测试用例生成方法,其特征在于,步骤1所述SystemRDL语言包括:关键组件field、register、register file、address map、signal、macro和function及设备寄存器的属性;其中,
所述关键组件field用于指定设备寄存器的每一位所具备的属性和名称;
所述关键组件register用于描述设备所具有的寄存器,同时指定对应寄存器的属性、实例名称以及地址偏移量;
所述关键组件register file用于描述寄存器的划分;
所述关键组件address map用于指定寄存器或寄存器组组合成为一个设备地址空间;
所述关键组件signal用于定义一条连线连接其他组件的输入或输出;
所述关键组件macro用于定义在“function”组件中描述设备寄存器行为逻辑时要使用的宏,格式是macro_name=value;
所述关键组件function用于定义设备寄存器的行为逻辑,其格式是在该关键组件的代码描述部分按照C语言函数定义的格式进行描述;
所述设备寄存器的属性用于指定设备寄存器所应具备的特性,包括读写访问权限,寄存器的位宽。
3.根据权利要求1所述的虚拟原型变异测试用例生成方法,其特征在于,所述能够执行的FDM模型,其组成是基于C/C++格式的源代码文件集合,包括设备模型的主函数和各个接口寄存器的行为逻辑;其中,
所述主函数用于控制设备模型的输入输出;
所述接口寄存器的行为逻辑用于描述接口寄存器在影响设备动作请求后的状态变迁。
4.根据权利要求1所述的虚拟原型变异测试用例生成方法,其特征在于,所述通过变异约束条件生成规则在其之前插入变异约束条件检查语句,对FDM模型插桩,具体为:向FDM模型中的C/C++源代码中的部分语句前中插入判断所产生变异约束条件能否被满足的检查语句,若模型执行至该语句时,变异约束条件判断为真,则称为满足该变异约束条件。
5.根据权利要求1所述的虚拟原型变异测试用例生成方法,其特征在于,所述测试用例由目标虚拟原型当时状态、符号执行生成的测试激励及所述测试激励执行时满足的变异约束条件组成。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811176478.4A CN109542760B (zh) | 2018-10-10 | 2018-10-10 | 一种基于设备规约的虚拟原型变异测试用例生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811176478.4A CN109542760B (zh) | 2018-10-10 | 2018-10-10 | 一种基于设备规约的虚拟原型变异测试用例生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109542760A true CN109542760A (zh) | 2019-03-29 |
CN109542760B CN109542760B (zh) | 2021-07-27 |
Family
ID=65843609
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811176478.4A Active CN109542760B (zh) | 2018-10-10 | 2018-10-10 | 一种基于设备规约的虚拟原型变异测试用例生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109542760B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111459808A (zh) * | 2020-03-20 | 2020-07-28 | 西北大学 | 一种基于类型推断的具有引导性的测试用例变异方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140123113A1 (en) * | 2011-02-04 | 2014-05-01 | Seimens Aktiengesellschaft | System and a method for analyzing a piece of code |
CN104572629A (zh) * | 2013-10-18 | 2015-04-29 | 富士通株式会社 | 生成单语解析模型的方法和装置以及语言转换装置 |
CN106598861A (zh) * | 2016-12-19 | 2017-04-26 | 广州爱九游信息技术有限公司 | 测试用例生成方法、装置及电子设备 |
-
2018
- 2018-10-10 CN CN201811176478.4A patent/CN109542760B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140123113A1 (en) * | 2011-02-04 | 2014-05-01 | Seimens Aktiengesellschaft | System and a method for analyzing a piece of code |
CN104572629A (zh) * | 2013-10-18 | 2015-04-29 | 富士通株式会社 | 生成单语解析模型的方法和装置以及语言转换装置 |
CN106598861A (zh) * | 2016-12-19 | 2017-04-26 | 广州爱九游信息技术有限公司 | 测试用例生成方法、装置及电子设备 |
Non-Patent Citations (4)
Title |
---|
C KAI等: "Coverage evaluation of post-silicon validation tests with virtual prototypes", 《IEEEXPLORE》 * |
D GABBAY等: "RDL: an executable temporal logic for the specification and designof real-time systems", 《IEEEXPLORE》 * |
张莹等: "基于规则的用例规约验证方法", 《计算机科学》 * |
王砺磊: "基于多项式约束求解的程序路径测试用例生成研究", 《中国优秀硕士论文电子期刊网》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111459808A (zh) * | 2020-03-20 | 2020-07-28 | 西北大学 | 一种基于类型推断的具有引导性的测试用例变异方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109542760B (zh) | 2021-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Thompson et al. | Specification-based prototyping for embedded systems | |
EP3745256B1 (en) | External code integrations within a computing environment | |
US6385765B1 (en) | Specification and verification for concurrent systems with graphical and textual editors | |
CN102402214B (zh) | 用于显示过程控制信息的方法和装置 | |
US8856726B2 (en) | Verification of computer-executable code generated from a slice of a model | |
US9418230B2 (en) | Automated tools for building secure software programs | |
US9594543B2 (en) | Activity diagram model-based system behavior simulation method | |
Silva et al. | Model-based user interface testing with spec explorer and concurtasktrees | |
Rose et al. | A comparison of model migration tools | |
US9507680B2 (en) | Verification system and method for automated verification of register information for an electronic system | |
JP2021501953A (ja) | エンジンデバッグ、テスト、較正、及び調節を制御するためのソフトウェア環境 | |
Torlak et al. | Applications and extensions of Alloy: past, present and future | |
CN116680885A (zh) | 一种基于SysML和Tango的复杂装置控制软件建模与验证方法 | |
Wiesmayr et al. | Requirements for a dynamic interface model of IEC 61499 Function Blocks | |
Engels et al. | Model-based verification and validation of properties | |
CN109542760A (zh) | 一种基于设备规约的虚拟原型变异测试用例生成方法 | |
Lian et al. | Simulation-based analysis of UML statechart diagrams: methods and case studies | |
US10816600B1 (en) | Protocol analysis and visualization during simulation | |
Wen et al. | “Integrare”, a collaborative environment for behavior-oriented design | |
CN108228314A (zh) | 一种基于设备规约的虚拟原型错误检测方法 | |
CN109542698A (zh) | 一种基于变异测试的虚拟原型错误检测方法 | |
Botham et al. | PICASSOS–Practical applications of automated formal methods to safety related automotive systems | |
Ferro et al. | Generation of test programs for the assertion-based verification of TLM models | |
Seybold et al. | Simulation-based validation and defect localization for evolving, semi-formal requirements models | |
CN116069318B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |