一种基于设备规约的虚拟原型变异测试用例生成方法技术

技术编号:20724444 阅读:30 留言:0更新日期:2019-03-30 17:35
本发明专利技术公开了一种基于设备规约的虚拟原型变异测试用例生成方法,包括以下步骤:步骤1:使用SystemRDL语言描述设备规约;步骤2:将设备规约转化为一个由C/C++代码文件组成的可执行的FDM模型;步骤3:通过变异约束条件生成规则对FDM模型插桩;步骤4:使用符号执行的方式执行FDM模型,收集能够满足FDM模型中所插入的变异约束条件的路径,求解生成虚拟原型测试用例集。本发明专利技术基于设备的SystemRDL规约,通过自动转换工具得到对应设备的FDM模型,使用变异约束条件生成规则运行自动化脚本对FDM模型进行插桩,根据插桩信息利用符号执行引擎执行FDM模型,求解得到虚拟原型测试用例集,本发明专利技术可生成用于虚拟原型测试的高质量测试用例,具有较高的质量。

【技术实现步骤摘要】
一种基于设备规约的虚拟原型变异测试用例生成方法
本专利技术属于计算机
,涉及硬件设备规约转换技术、虚拟原型状态抓取技术及符号执行技术,尤其涉及到了对硬件设备规约的建立,将不可执行的设备规约转换为可执行的设备模型,并作为硬件设备的高阶参照标准,在此基础上结合符号执行方法实现了对硬件设备虚拟原型生成高质量的测试用例集的目的。
技术介绍
规约(Specification)是指针对设计或协议所应该遵循的一组约束。它是作为后期实施行为的参照标准。硬件设备规约定义了一个设备在设计之初给定的设备应该遵循的约束并以此为参照。目前工业界广泛采用SystemRDL语言来描述一个硬件的设备规约,并且它贯穿于该硬件设备的整个生命周期。它不仅可以作为硬件设备后期具体实现的参照标准,还可以用于在不同组织或不同硬件厂商之间共享该硬件设备IP(IntellectualProperty)。SystemRDL语言的发展增强了传统使用说明文档来描述设备规约的可读性和可操作性,近年来伴随着硬件工程师需求的提高,SystemRDL的表达能力也在不断地增强。然而,SystemRDL目前主要侧重于对硬件中的接口、存储等方面进行描述,对设备寄存器的行为逻辑的描述能力弱,难以直接在其上进行功能测试。所以,增强其表达能力已经成为一个迫切需要解决的问题。同时,使用SystemRDL描述的设备规约是不能直接执行的,需要对其加以转换才能使之成为可执行的设备模型。符号执行(SymbolicExecution)是计算机领域中一种非常重要的方法,在计算机软硬件及控制系统的测试和验证中得到了广泛的应用。对于可执行程序中的某些变量可以设置为符号化的变量,通过在符号执行引擎中使用相应的符号值代替真实值加以执行。同时在执行过程中如果遇到了分支,并且该分支的判断条件中存在符号变量,那么符号执行引擎将会对该分支创建所有可能的分支进程来分别执行不同的情况。在程序执行的最后,符号执行引擎会将执行过程中记录的各个符号变量的表达式以合取的方式传递给约束求解器并返回相应符号变量的具体值。符号执行目前被广泛应用于程序分析、测试用例生成和程序一致性验证方面。变异测试(MutationTesting)是一种通过在源程序代码中插入变体(Mutant)让程序进入不正常的状态以帮助测试者发现测试数据的弱点以生成更有效的测试用例集或定位代码的弱点的测试方式。对于一个变体,若程序执行的过程中测试单元能够察觉到错误发生,则称该变体被杀死。变体的杀死分为强杀死和弱杀死。若执行变体对应操作时程序转入错误状态,称为弱杀死;若程序的错误状态能够被外部的监视程序捕获,则称该变体被强杀死。
技术实现思路
本专利技术的目的是提供一种基于设备规约的虚拟原型测试用例生成方法,该方法将使用SystemRDL语言来描述设备规约转换成一种可执行的FDM模型,由于使用SystemRDL语言来描述设备规约是一个硬件设备的参照标准,从而可以将可执行的FDM模型视作该设备的可执行参照模型,并在此基础上插入变异约束条件集,利用符号执行生成可满足变异约束条件的高质量测试用例集。实现本专利技术目的的具体技术方案是:一种基于设备规约的虚拟原型变异测试用例生成方法,该方法包括以下步骤:步骤1:使用SystemRDL语言描述设备规约;步骤2:将设备规约转化为一个由C/C++代码文件组成的能够执行的FDM模型;步骤3:选择FDM模型中的语句,通过变异约束条件生成规则在其之前插入变异约束条件检查语句,对FDM模型插桩;步骤4:使用符号执行的方式执行FDM模型,收集能够满足FDM模型中所插入的变异约束条件的路径,求解得到虚拟原型测试用例集。步骤1所述SystemRDL语言包括:关键组件field、register、registerfile、addressmap、signal、macro和function及设备寄存器的属性;其中,所述关键组件field用于指定设备寄存器的每一位所具备的属性和名称;所述关键组件register用于描述设备所具有的寄存器,同时指定对应寄存器的属性、实例名称以及地址偏移量;所述关键组件registerfile用于描述寄存器的划分;所述关键组件addressmap用于指定寄存器或寄存器组组合成为一个设备地址空间;所述关键组件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模型(FormalDeviceModel,标准设备模型),扩展内容包括:关键组件macro:扩展该关键组件是用于定义在关键组件“function”中描述设备寄存器行为逻辑时要使用的宏,格式是macro_name=value;关键组件function:扩展该关键组件是用于定义硬件设备寄存器的行为逻辑,其格式是在该组件的主体部分按照C语言函数定义的格式进行描述。关键组件macro和关键组件function的语法格式遵循Syste本文档来自技高网
...

【技术保护点】
1.一种基于设备规约的虚拟原型变异测试用例生成方法,其特征在于,该方法包括以下步骤:步骤1:使用SystemRDL语言描述设备规约;步骤2:将设备规约转化为一个由C/C++代码文件组成的能够执行的FDM模型;步骤3:选择FDM模型中的语句,通过变异约束条件生成规则在其之前插入变异约束条件检查语句,对FDM模型插桩;步骤4:使用符号执行的方式执行FDM模型,收集能够满足FDM模型中所插入的变异约束条件的路径,求解得到虚拟原型测试用例集。

【技术特征摘要】
1.一种基于设备规约的虚拟原型变异测试用例生成方法,其特征在于,该方法包括以下步骤:步骤1:使用SystemRDL语言描述设备规约;步骤2:将设备规约转化为一个由C/C++代码文件组成的能够执行的FDM模型;步骤3:选择FDM模型中的语句,通过变异约束条件生成规则在其之前插入变异约束条件检查语句,对FDM模型插桩;步骤4:使用符号执行的方式执行FDM模型,收集能够满足FDM模型中所插入的变异约束条件的路径,求解得到虚拟原型测试用例集。2.根据权利要求1所述的虚拟原型变异测试用例生成方法,其特征在于,步骤1所述SystemRDL语言包括:关键组件field、register、registerfile、addressmap、signal、macro和function及设备寄存器的属性;其中,所述关键组件field用于指定设备寄存器的每一位所具备的属性和名称;所述关键组件register用于描述设备所具有的寄存器,同时指定对应寄存器的属性、实例名称以及地址偏移量;所述关键组件registerfile用于描述寄存器的划分;所述关键组件addressmap用于指定寄存器或寄存器组组合成为一个设备地址空间;所述关键组件signal用于定义一条连线连接其他组件的输入或输出;所述关键组件macro用于定义...

【专利技术属性】
技术研发人员:陈铭松张健宁顾海峰邵明莉曹鄂韦璠江岚宋云飞谢永康
申请(专利权)人:华东师范大学
类型:发明
国别省市:上海,31

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

1