掌桥专利:专业的专利平台
掌桥专利
首页

一种模型与模型代码的测试方法及装置

文献发布时间:2023-06-19 11:39:06


一种模型与模型代码的测试方法及装置

技术领域

本发明涉及测试技术领域,具体而言,涉及一种模型与模型代码等效性的测试方法及装置。

背景技术

为了提高软件开发效率,自动代码生成技术或者说基于模型的设计的应用越来越普遍。在基于模型的设计的软件开发流程中,首先开发出软件模型,进而,使用EmbeddedCoder(嵌入式代码生成器),将软件模型或软件模型的部分子模型,转化为其对应的嵌入式代码,对所转化的嵌入式程序代码进行测试,测试所转化的嵌入式程序代码是否可实现与其对应的软件模型或软件模型的部分子模型相同的功能。在对使用Embedded Coder(嵌入式代码生成器)生成的基于模型的设计的软件对应的嵌入式代码进行测试的过程中,一般使用等效性测试方法对其进行测试。

目前的等效性测试方法一般为处理器在环(PIL)测试,处理器在环测试的过程,一般是:Simulink仿真软件利用待测试模型以及待测试模型对应的激励信号,生成可在嵌入式平台上运行的C代码,其中,待测试模型为待测试的顶层模型或顶层模型嵌入的部分子模型;使用交叉编译环境将待测试模型生成的C代码编译成可执行程序,作为目标程序。将该目标程序下载到嵌入式平台上;在待测试模型所在模型中手动标定出待测试模型,进而生成待测试模型对应的PIL模块,该PIL模块可用于仿真时与嵌入式平台上的目标程序交换数据。利用PIL模块以及激励信号,进行待测试模型仿真,获得待测试模型对应的模型仿真结果;并在待测试模型的仿真过程的每个采样间隔内,通过网口或者串口将该激励信号,发送到嵌入式平台上,以使嵌入式平台利用目标程序对该激励信号进行运算,得到运算结果并发送至Simulink仿真软件;Simulink仿真软件接收嵌入式平台反馈的运算结果后,对比待测试模型对应的模型仿真结果和运算结果,实现对待测试模型和及其对应程序代码的等效性验证。

在上述过程中,由于Simulink仿真软件默认支持串口和以太网两种通信接口的PIL仿真,仅提供了Simulink运行环境中的通信程序和接口。要实现仿真时嵌入式平台与Simulink仿真软件的通信,即嵌入式平台获得目标程序,并在得到运算结果后将运算结果反馈至Simulink仿真软件,需要在嵌入式平台上移植PIL仿真的通信协议层代码。而该部分移植工作难度比较大,且不同嵌入式平台定制方法不同,不具有通用性,扩展性弱。

那么,如何提供一种对基于模型的设计的软件所对应程序代码进行自动且便捷地测试方法成为亟待解决的问题。

发明内容

本发明提供了一种模型与模型代码等效性的测试方法及装置,以实现自动且便捷地对基于模型的设计的软件所对应程序代码的测试,提高测试效率。具体的技术方案如下:

第一方面,本发明实施例提供了一种模型与模型代码等效性的测试方法,所述方法包括:

电子设备根据被测模型及其对应的激励输入数据和数据收发结构,构建所述被测模型对应的模型测试框架;

获得所述模型测试框架对应的模型测试工程,以使所述模型测试工程对应的仿真工具可管理所述模型测试框架的仿真过程;

利用所述模型测试框架、目标嵌入式平台对应的数据收发模块以及所述模型测试工程,确定所述模型测试框架对应的代码测试框架以及所述代码测试框架对应的代码测试工程,其中,所述代码测试框架包含等效模型以及待部署于所述目标嵌入式平台的包含所述目标嵌入式平台对应的数据收发模块的部署模型;

利用所述模型测试工程以及所述模型测试框架,确定所述被测模型对应的仿真结果数据;

在所述目标嵌入式平台运行的情况下,利用所述代码测试工程及所述等效模型,将所述激励输入数据发送至所述目标嵌入式平台,以使所述目标嵌入式平台运行部署模型对应的程序代码,确定所述激励输入数据对应的代码结果数据,并反馈至所述等效模型;

所述电子设备利用所述仿真结果数据及所述代码结果数据,确定所述被测模型与所述代码测试框架所对应程序代码之间的等效性。

可选的,所述根据被测模型及其对应的激励输入数据和数据收发结构,构建所述被测模型对应的模型测试框架的步骤,包括:

将所述被测模型集成至模型引用子系统,并基于所述被测模型对应的输入输出端口信息,设置所述模型引用子系统的数据传输端口;

构建用于存储所述被测模型及所对应激励输入数据的测试激励子系统,并生成所述测试激励子系统对应的数据发送端口;

构建用于存储结果数据的信号观测子系统,并生成所述测试激励子系统对应的数据接收端口;

利用所述模型引用子系统、所述测试激励子系统、所述信号观测子系统以及预设约束条件,构建所述被测模型对应的模型测试框架。

可选的,所述预设约束条件包括:所述测试激励子系统与所述模型引用子系统,以及所述模型引用子系统与所述信号观测子系统之间通过预设信号线连接,信号线所传输信号满足预设信号设置条件,其中,所述预设信号设置条件包括:所述预设信号线所传输的信号为一维向量,且该信号的数据类型为无符号8位。

可选的,所述利用所述模型测试工程以及所述模型测试框架,确定所述被测模型对应的仿真结果数据的步骤包括:

利用所述模型测试工程,控制所述测试激励子系统通过其对应的数据发送端口,将所述激励输入数据发送至所述模型引用子系统,以使所述模型引用子系统通过其数据接收端口接收所述激励输入数据,并基于所集成的被测模型,确定出所述激励输入数据对应的仿真结果数据,并通过所述模型引用子系统的数据发送端口发送至所述信号观测子系统;所述信号观测子系统通过其数据接收端口接收所述仿真结果数据,并存储。

可选的,所述模型测试框架包括通过预设信号线连接的测试激励子系统、模型引用子系统以及信号观测子系统,其中,所述测试激励子系统用于存储所述激励输入数据,所述模型引用子系统集成有所述被测模型,所述信号观测子系统用于存储结果数据;

所述利用所述模型测试框架、目标嵌入式平台对应的数据收发模块以及所述模型测试工程,确定所述模型测试框架对应的代码测试框架以及所述代码测试框架对应的代码测试工程的步骤,包括:

构建第一空白模型;

将所述模型测试框架的测试激励子系统以及所述信号观测子系统复制到所述第一空白模型;并根据所述测试激励子系统的数据发送端口和所述信号观测子系统的数据接收端口,在所述第一空白模型中构建所述测试激励子系统对应的信号数据发送模块,以及所述信号观测子系统对应的信号数据接收模块,以构建得到所述等效模型;

构建第二空白模型;

将所述被测模型复制到所述第二空白模型,并在所述第二空白模型中添加目标嵌入式平台对应的数据收发模块,以构建得到所述部署模型,得到模型测试框架对应的代码测试框架;

基于所述模型测试工程的配置参数,确定所述代码测试框架对应的代码测试工程,并绑定所述代码测试工程与所述等效模型,以使所述代码测试工程管理所述等效模型的运行过程。

可选的,所述目标嵌入式平台对应的数据收发模块包括目标嵌入式平台对应的平台数据接收模块和平台数据发送模块;

所述利用所述代码测试工程及所述等效模型,将所述激励输入数据发送至所述目标嵌入式平台,以使所述目标嵌入式平台运行部署模型,确定所述激励输入数据对应的代码结果数据,并反馈至所述等效模型的步骤,包括:

利用所述代码测试工程,控制所述等效模型的测试激励子系统,将所述激励输入数据通过所述信号数据发送模块,发送至所述目标嵌入式平台;所述目标嵌入式平台通过部署模型中的数据接收模块,接收所述激励输入数据;并通过所述部署模型中的被测模型,确定所述激励输入数据对应的代码结果数据;通过所述部署模型中的数据发送模块以及所述信号数据接收模块,将所述代码结果数据发送至所述信号观测子系统。

可选的,在所述利用所述代码测试工程及所述等效模型,将所述激励输入数据发送至所述目标嵌入式平台的步骤之前,所述方法还包括:

将所述部署模型转换为其对应的程序代码;并将所述部署模型对应的程序代码下载至所述目标嵌入式平台,以使所述目标嵌入式平台部署所述部署模型对应的程序代码。

第二方面,本发明实施例提供了一种模型与模型代码等效性的测试装置,所述装置包括:

第一构建模块,被配置为根据被测模型及其对应的激励输入数据和数据收发结构,构建所述被测模型对应的模型测试框架;

获得模块,被配置为获得所述模型测试框架对应的模型测试工程,以使所述模型测试工程对应的仿真工具可管理所述模型测试框架的仿真过程;

第一确定模块,被配置为利用所述模型测试框架、目标嵌入式平台对应的数据收发模块以及所述模型测试工程,确定所述模型测试框架对应的代码测试框架以及所述代码测试框架对应的代码测试工程,其中,所述代码测试框架包含等效模型以及待部署于所述目标嵌入式平台的包含所述目标嵌入式平台对应的数据收发模块的部署模型;

第二确定模块,被配置为利用所述模型测试工程以及所述模型测试框架,确定所述被测模型对应的仿真结果数据;

数据发送模块,被配置为在所述目标嵌入式平台运行的情况下,利用所述代码测试工程及所述等效模型,将所述激励输入数据发送至所述目标嵌入式平台,以使所述目标嵌入式平台运行部署模型对应的程序代码,确定所述激励输入数据对应的代码结果数据,并反馈至所述等效模型;

第三确定模块,被配置为利用所述仿真结果数据及所述代码结果数据,验证所述被测模型与所述代码测试框架所对应程序代码之间的等效性。

可选的,所述第一构建模块,被具体配置为将所述被测模型集成至模型引用子系统,并基于所述被测模型对应的输入输出端口信息,设置所述模型引用子系统的数据传输端口;

构建用于存储所述被测模型及所对应激励输入数据的测试激励子系统,并生成所述测试激励子系统对应的数据发送端口;

构建用于存储结果数据的信号观测子系统,并生成所述测试激励子系统对应的数据接收端口;

利用所述模型引用子系统、所述测试激励子系统、所述信号观测子系统以及预设约束条件,构建所述被测模型对应的模型测试框架。

可选的,所述预设约束条件包括:所述测试激励子系统与所述模型引用子系统,以及所述模型引用子系统与所述信号观测子系统之间通过预设信号线连接,信号线所传输信号满足预设信号设置条件,其中,所述预设信号设置条件包括:所述预设信号线所传输的信号为一维向量,且该信号的数据类型为无符号8位。

可选的,所述第二确定模块,被具体配置为利用所述模型测试工程,控制所述测试激励子系统通过其对应的数据发送端口,将所述激励输入数据发送至所述模型引用子系统,以使所述模型引用子系统通过其数据接收端口接收所述激励输入数据,并基于所集成的被测模型,确定出所述激励输入数据对应的仿真结果数据,并通过所述模型引用子系统的数据发送端口发送至所述信号观测子系统;所述信号观测子系统通过其数据接收端口接收所述仿真结果数据,并存储。

可选的,所述模型测试框架包括通过预设信号线连接的测试激励子系统、模型引用子系统以及信号观测子系统,其中,所述测试激励子系统用于存储所述激励输入数据,所述模型引用子系统集成有所述被测模型,所述信号观测子系统用于存储结果数据;

所述第一确定模块,被具体配置为构建第一空白模型;

将所述模型测试框架的测试激励子系统以及所述信号观测子系统复制到所述第一空白模型;并根据所述测试激励子系统的数据发送端口和所述信号观测子系统的数据接收端口,在所述第一空白模型中构建所述测试激励子系统对应的信号数据发送模块,以及所述信号观测子系统对应的信号数据接收模块,以构建得到所述等效模型;

构建第二空白模型;

将所述被测模型复制到所述第二空白模型,并在所述第二空白模型中添加目标嵌入式平台对应的数据收发模块,以构建得到所述部署模型,得到模型测试框架对应的代码测试框架;

基于所述模型测试工程的配置参数,确定所述代码测试框架对应的代码测试工程,并绑定所述代码测试工程与所述等效模型,以使所述代码测试工程管理所述等效模型的运行过程。

可选的,所述目标嵌入式平台对应的数据收发模块包括目标嵌入式平台对应的平台数据接收模块和平台数据发送模块;

所述发送模块,被具体配置为利用所述代码测试工程,控制所述等效模型的测试激励子系统,将所述激励输入数据通过所述信号数据发送模块,发送至所述目标嵌入式平台;所述目标嵌入式平台通过部署模型中的数据接收模块,接收所述激励输入数据;并通过所述部署模型中的被测模型,确定所述激励输入数据对应的代码结果数据;通过所述部署模型中的数据发送模块以及所述信号数据接收模块,将所述代码结果数据发送至所述信号观测子系统。

可选的,所述装置还包括:

转换发送模块,被配置为在所述利用所述代码测试工程及所述等效模型,将所述激励输入数据下载至所述目标嵌入式平台之前,将所述部署模型转换为其对应的程序代码;并将所述部署模型对应的程序代码发送至所述目标嵌入式平台,以使所述目标嵌入式平台部署所述部署模型对应的程序代码。

由上述内容可知,本发明实施例提供的一种模型与模型代码等效性的测试方法、系统及装置,电子设备根据被测模型及其对应的激励输入数据和数据收发结构,构建被测模型对应的模型测试框架;获得模型测试框架对应的模型测试工程,以使模型测试工程对应的仿真工具可管理模型测试框架的仿真过程;利用模型测试框架、目标嵌入式平台对应的数据收发模块以及模型测试工程,确定模型测试框架对应的代码测试框架以及代码测试框架对应的代码测试工程,其中,代码测试框架包含等效模型以及待部署于目标嵌入式平台的包含目标嵌入式平台对应的数据收发模块的部署模型;利用模型测试工程以及模型测试框架,确定被测模型对应的仿真结果数据;在目标嵌入式平台运行的情况下,利用代码测试工程及等效模型,将激励输入数据发送至目标嵌入式平台,以使目标嵌入式平台运行部署模型对应的程序代码,确定激励输入数据对应的代码结果数据,并反馈至等效模型;电子设备利用仿真结果数据及代码结果数据,验证被测模型与代码测试框架所对应程序代码之间的等效性。

应用本发明实施例,可以在获得被测模型及其对应的激励输入数据之后,自动生成用于仿真的模型测试框架以及模型测试工程,进而在自动生成被测模型对应的程序代码即代码测试框架的过程中,在部署模型中添加目标嵌入式平台对应的数据收发模块,部署模型经过编译生成其对应的程序代码,在目标嵌入式平台上运行可自行收发数据,无需在目标嵌入式平台上移植PIL仿真的通信协议层代码,节省测试过程中的移植工作量,且直接生成可自动收发数据的部署模型对应的程序代码,适用性更强,以实现自动且便捷地对基于模型的设计的软件所对应程序代码的测试,提高测试效率。当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。

本发明实施例的创新点包括:

1、在部署模型中添加目标嵌入式平台对应的数据收发模块,部署模型经过编译生成其对应的程序代码,在目标嵌入式平台上运行可自行收发数据,无需在目标嵌入式平台上移植PIL仿真的通信协议层代码,节省测试过程中的移植工作量,且直接生成可自动收发数据的部署模型对应的程序代码,适用性更强,以实现自动且便捷地对基于模型的设计的软件所对应程序代码的测试,提高测试效率。

2、分别基于被测模型、其对应的激励输入数据以及后续的仿真结果和所对应代码运行结果构建单独的子系统,进而通过预设约束条件约束各单独子系统之间的连接以及数据通信方式,得到模型测试框架,以可以统一不同类型的被测模型的输入输出端口,便于模型测试框架的自动生成。

3、提供具体的代码测试框架和代码测试工程的构建过程,以得到可以适应更多类型的目标嵌入式平台的代码框架,为减少对被测模型及其对应的程序代码的等效性测试过程中的开发和移植工作量提供基础。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单介绍。显而易见地,下面描述中的附图仅仅是本发明的一些实施例。对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的模型与模型代码等效性的测试方法的一种流程示意图;

图2为本发明实施例提供的模型测试框架的一种结构示意图;

图3A为本发明实施例提供的等效模型的一种结构示意图;

图3B为本发明实施例提供的部署模型的一种结构示意图;

图4为本发明实施例提供的代码测试框架进行代码测试流程的逻辑结构的一种示意图;

图5本发明实施例所提供的模型与模型代码等效性的测试流程中各模型之间的关系示意图;

图6为提供的装置的一种模型与模型代码等效性的测试结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述。显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明的是,本发明实施例及附图中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含的一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。

本发明提供了一种模型与模型代码等效性的测试方法及装置,以实现自动且便捷地对基于模型的设计的软件所对应程序代码的测试,提高测试效率。下面对本发明实施例进行详细说明。

图1为本发明实施例提供的模型与模型代码等效性的测试方法的一种流程示意图。该方法可以包括如下步骤:

S101:电子设备根据被测模型及其对应的激励输入数据和数据收发结构,构建所述被测模型对应的模型测试框架。

在一种实现中,实现该程序代码的测试方法的功能软件可以以单独的客户端软件的形式存在,也可以以目前相关的客户端软件的插件的形式存在,例如以Simulink仿真软件的插件的形式存在。

其中,电子设备可以是任一类型的可进行数据处理的设备,可以是服务器也可以是客户端,本发明实施例并不对电子设备的类型进行限定。在一种实现中,电子设备安装有Simulink仿真软件。

该被测模型可以是:顶层模型或顶层模型中所嵌入的子模型。其中,顶层模型为:基于图形化模型所开发的嵌入式软件。相应的,顶层模型中所嵌入的子模型为该嵌入式软件所嵌入的子系统。

该激励输入数据为基于被测模型所需测试的相应功能,预先设置的测试用例所对应的输入数据,用于激励被测模型的仿真运行以及后续所生成的代码测试框架对应的程序代码运行。其中,不同的测试用例对应的激励输入数据存在不同。

电子设备获得被测模型及其对应的激励输入数据之后,根据被测模型及其对应的激励输入数据和数据收发结构,构建被测模型对应的满足预设约束条件的模型测试框架,其中,模型测试框架包括分别用于存储激励输入数据的测试激励子系统,集成有被测模型的模型引用子系统,以及用于存储结果数据的信号观测子系统。该模型测试框架可以是电子设备通过调用Simulink仿真软件所生成的模型。

在本发明的另一实施例中,所述S101,可以包括如下步骤011-014:

011:将被测模型集成至模型引用子系统,并基于被测模型对应的输入输出端口信息,设置模型引用子系统的数据传输端口。

012:构建用于存储被测模型及所对应激励输入数据的测试激励子系统,并生成测试激励子系统对应的数据发送端口。

013:构建用于存储结果数据的信号观测子系统,并生成测试激励子系统对应的数据接收端口。

014:利用模型引用子系统、测试激励子系统、信号观测子系统以及预设约束条件,构建被测模型对应的模型测试框架。

本实现方式中,电子设备利用模型引用的方式,将被测模型集成至模型引用子系统,并基于被测模型对应的输入输出端口信息,设置模型引用子系统的数据传输端口。其中,模型引用子系统的数据传输端口包括:模型引用子系统的数据接收端口和模型引用子系统的数据发送端口;模型引用子系统的数据接收端口的端口信息与被测模型对应的输入端口信息相同;模型引用子系统的数据发送端口的端口信息与被测模型对应的输入端口信息相同。

构建测试激励子系统,并将被测模型及所对应激励输入数据保存入该的测试激励子系统,并基于被测模型的数据接收信息以及预设约束条件,设置测试激励子系统对应的数据发送端口的端口信息,如:端口的数据类型以及宽度,生成测试激励子系统对应的数据发送端口。其中,数据接收信息包括:被测模型所接收数据的长度信息以及宽度信息等。在一种情况中,该测试激励子系统电子设备基于Simulink仿真软件构建的。

构建信号观测子系统,用于存储后续被测模型仿真的结果数据以及后续的被测模型对应的程序代码运行的结果数据。并利用基于被测模型的数据发送信息,以及预设约束条件,设置信号观测子系统对应的数据接收端口的端口信息,如:端口的数据类型以及宽度,生成信号观测子系统对应的数据接收端口。其中,数据发送信息包括:被测模型所发送数据的长度信息以及宽度信息等。在一种情况中,该信号观测子系统为电子设备基于Simulink仿真软件构建的。

基于预设约束条件,将模型引用子系统、测试激励子系统、信号观测子系统组建成被测模型对应的模型测试框架。模型测试框架的结构示意图如图2所示。其中,图2中“数据激励子系统”为上述的测试激励子系统,“输出观察子系统”为上述的信号观测子系统,“被测模型”为上述的模型引用子系统。

其中,在本发明的另一实施例中,预设约束条件包括:测试激励子系统与模型引用子系统,以及模型引用子系统与信号观测子系统之间通过预设信号线连接,信号线所传输信号满足预设信号设置条件,其中,预设信号设置条件包括:预设信号线所传输的信号为一维向量,且该信号的数据类型为无符号8位。

在一种实现中,测试激励子系统Source是模型测试框架的激励部分,其可以放入Constant,SignalBuilder以及FromWorkspace等常用数据源模块。信号观测子系统Data_Scope可添加Scope,Display以及ToWorkspace等常用的数据显示和记录模块。

S102:获得模型测试框架对应的模型测试工程,以使模型测试工程对应的仿真工具可管理模型测试框架的仿真过程。

电子设备基于预设工程创建流程,创建得到模型测试框架对应的模型测试工程,并绑定模型测试框架以及该模型测试工程,以使模型测试工程对应的仿真工具可管理模型测试框架的仿真过程。其中,该模型测试工程对应的仿真工具为Simulink仿真软件所提供的SimulinkTest工具,该模型测试工程为基于Simulink仿真软件所创建的SimulinkTest测试工程。

S103:利用模型测试框架、目标嵌入式平台对应的数据收发模块以及模型测试工程,确定模型测试框架对应的代码测试框架以及代码测试框架对应的代码测试工程。

其中,代码测试框架包含等效模型以及待部署于目标嵌入式平台的包含目标嵌入式平台对应的数据收发模块的部署模型。该代码测试框架可以是电子设备通过调用Simulink仿真软件所生成的模型。

电子设备利用模型测试框架中的测试激励子系统、模型引用子系统和信号观测子系统、目标嵌入式平台对应的数据收发模块,构建模型测试框架对应的代码测试框架,并利用模型测试工程,构建代码测试框架对应的代码测试工程。具体的,电子设备利用测试激励子系统和信号观测子系统,构建代码测试框架的等效模型;并利用模型引用子系统和目标嵌入式平台对应的数据收发模块,构建代码测试框架的部署模型;利用模型测试工程的配置参数配置代码测试工程的配置参数,并绑定代码测试工程和等效模型,以使得代码测试工程对应的仿真工具可管理等效模型的运行过程。其中,该代码测试工程对应的仿真工具为Simulink仿真软件所提供的SimulinkTest工具,该代码测试工程为基于Simulink仿真软件所创建的SimulinkTest测试工程。

该代码测试工程可以为与该模型测试工程相同的工程,其两者绑定的对象不同。

该部署模型后续需被转化为程序代码,并部署于目标嵌入式平台,以在目标嵌入式平台中运行,得到相应的代码运行的结果,以用于后续的被测模型与其对应的程序代码的等效性测试。一种情况中,该目标嵌入式平台可以为不同于运行本发明实施例所提供的模型与模型代码等效性的测试电子设备的设备。

S104:利用模型测试工程以及模型测试框架,确定被测模型对应的仿真结果数据。

本步骤中,电子设备运行模型测试工程,通过模型测试工程对应的仿真工具控制模型测试框架的运行,实现对被测模型的仿真测试,记录并保存每一测试用例对应的仿真结果数据,即被测模型对应的仿真结果数据。该被测模型对应的仿真结果数据作为等效性测试的结果数据基准。其中,每一测试用例对应有相应的激励输入数据,模型测试框架中的被测模型在激励输入数据的激励下运行,生成激励输入数据对应的仿真结果数据,即该激励输入数据对应的测试用例所对应仿真结果数据。

S105:在目标嵌入式平台运行的情况下,利用代码测试工程及等效模型,将激励输入数据发送至目标嵌入式平台,以使目标嵌入式平台运行部署模型所对应的程序代码,确定激励输入数据对应的代码结果数据,并反馈至等效模型。

S106:电子设备利用仿真结果数据及代码结果数据,验证被测模型与其对应代码测试框架所对应程序代码之间的等效性。

电子设备在生成包含等效模型和部署模型之后,将部署模型转化为程序代码,并下载至目标嵌入式平台,以使目标嵌入式平台部署部署模型对应的程序代码。后续的,在目标嵌入式平台运行的情况下,电子设备运行代码测试工程,以通过代码测试工程对应的仿真工具控制等效模型,将激励输入数据发送至目标嵌入式平台,目标嵌入式平台运行部署的被激励输入数据所激励的部署模型对应的程序代码,确定激励输入数据对应的代码结果数据,并反馈至等效模型。电子设备获得激励输入数据对应的代码结果数据。调用SimulinkTest仿真工具,对比激励输入数据对应的代码结果数据与被测模型对应的仿真结果数据,验证被测模型与其对应代码测试框架所对应程序代码之间的等效性,即比较激励输入数据对应的代码结果数据与被测模型对应的仿真结果数据是否在允许的误差范围内,相应的,即确定代码测试框架对应的程序代码所实现的功能与被测试模型所实现的功能是否相同。若对比结果表征代码测试框架对应的程序代码所实现的功能与被测试模型所实现的功能或在允许的误差范围内,则表征被测模型与代码测试框架对应的程序代码之间存在等效性;反之,不存在等效性。

应用本发明实施例,可以在获得被测模型及其对应的激励输入数据之后,自动生成用于仿真的模型测试框架以及模型测试工程,进而在自动生成被测模型对应的程序代码即代码测试框架的过程中,在部署模型中添加目标嵌入式平台对应的数据收发模块,部署模型经过编译生成其对应的程序代码,在目标嵌入式平台上运行可自行收发数据,无需在目标嵌入式平台上移植PIL仿真的通信协议层代码,相比于传统的处理器在环测试,开发和移植工作量小,节省了测试过程中的移植工作量,且直接生成可自动收发数据的部署模型对应的程序代码,适用性更强即适用的嵌入式平台更多。并且,本发明实施例中,可重用模型测试的测试用例,显著降低和减少了模型和代码等效性测试的工作量,实现了自动且便捷地对基于模型的设计的软件所对应程序代码的测试,提高测试效率。

并且,本发明实施例中,利用Simulink仿真软件实现自动化构建被测模块对应的用于仿真测试的模型测试框架,以及用于模型与模型代码等效性测试的代码测试框架,且利用Simulink Test仿真工具控制模型测试框架和代码测试框架的运行,Simulink Test是Simulink仿真软件的自动化测试工具箱,可以为Simulink模型即被测模型生成仿真、基准和等价测试模板。通过Simulink Test仿真工具提供的功能接口,可以定制开发出可实现自动化生成Simulink Test工程和自动化配置的功能,实现程序代码的测试流程的自动化。

在本发明的另一实施例中,所述S104,可以包括如下步骤021:

021:利用模型测试工程,控制测试激励子系统通过其对应的数据发送端口,将激励输入数据发送至模型引用子系统,以使模型引用子系统通过其数据接收端口接收激励输入数据,并基于所集成的被测模型,确定出激励输入数据对应的仿真结果数据,并通过模型引用子系统的数据发送端口发送至信号观测子系统;信号观测子系统通过其数据接收端口接收仿真结果数据,并存储。

本实现方式中,模型测试框架包括存储有激励输入数据的测试激励子系统、集成有被测模型的模型引用子系统以及用于存储被测模型的仿真和所对应程序代码运行所得结果数据的信号观测子系统。电子设备运行模型测试工程,利用模型测试工程对应的仿真工具如SimulinkTest仿真工具,控制测试激励子系统通过其对应的数据发送端口,将各测试用例对应的激励输入数据发送至模型引用子系统。模型引用子系统通过其数据接收端口接收激励输入数据,以通过激励输入数据的激励运行被测模型,确定出激励输入数据对应的仿真结果数据,即各测试用例对应的仿真结果数据;通过模型引用子系统的数据发送端口发送至信号观测子系统。信号观测子系统通过其数据接收端口接收仿真结果数据,并存储。

在本发明的另一实施例中,模型测试框架包括通过预设信号线连接的测试激励子系统、模型引用子系统以及信号观测子系统,其中,测试激励子系统用于存储激励输入数据,模型引用子系统集成有被测模型,信号观测子系统用于存储结果数据;

所述S103,可以包括如下步骤031-035:

031:构建第一空白模型。

032:将模型测试框架的测试激励子系统以及信号观测子系统复制到第一空白模型;并根据测试激励子系统的数据发送端口和信号观测子系统的数据接收端口,在第一空白模型中构建测试激励子系统对应的信号数据发送模块,以及信号观测子系统对应的信号数据接收模块,以构建得到等效模型。

033:构建第二空白模型。

034:将被测模型复制到第二空白模型,并在第二空白模型中添加目标嵌入式平台对应的数据收发模块,以构建得到部署模型,得到模型测试框架对应的代码测试框架。

035:基于模型测试工程的配置参数,确定代码测试框架对应的代码测试工程,并绑定代码测试工程与等效模型,以使代码测试工程管理等效模型的运行过程。

为了降低被测模型及其对应的程序代码的等效性测试过程中的开发和移植工作量。本实现方式中,电子设备首先建立模型测试框架对应的代码测试框架,其中,代码测试框架包括等效模型和部署模型,并且,部署模型包括目标嵌入式平台对应的数据收发模块,实现对数据的收发。进而基于模型测试工程的配置参数,确定代码测试框架对应的代码测试工程,并绑定代码测试工程和等效模型,以使得代码测试工程对应的仿真工具可以管理等效模型的运行,进而管理部署模型对应的程序代码的运行,实现被测模型对应的等效性程序代码的运行。一种情况中,代码测试工程的配置参数与模型测试工程的配置参数相同。

本实现方式中,电子设备首先通过调用Simulink仿真软件的空白模型创建功能,构建空白模型,作为第一空白模型;将模型测试框架的测试激励子系统以及信号观测子系统复制到第一空白模型;根据测试激励子系统的数据发送端口和信号观测子系统的数据接收端口,在第一空白模型中,构建测试激励子系统对应的信号数据发送模块,以及信号观测子系统对应的信号数据接收模块,得到等效模型。

其中,该信号数据发送模块和信号数据接收模块可以是Simulink仿真软件支持的网口,也可以是Simulink仿真软件支持的串口数据发送模块和串口数据接收模块。

等效模型的结构示意图如图3A所示。其中,“Test_Data”表示测试激励子系统的数据发送端口,“Simulink数据发送模块”表示测试激励子系统即图3A中的“数据激励子系统”对应的信号数据发送模块;“Data_to_Scope”表示信号观测子系统即图3A中的“输出观察子系统”的数据接收端口,“Simulink数据接收模块”表示测试激励子系统对应的信号数据接收模块。

信号数据发送模块的相关参数基于测试激励子系统的数据发送端口对应的数据类型和宽度设置;信号数据接收模块的相关参数基于测试激励子系统的数据接收端口对应的数据类型和宽度设置。

电子设备首先通过调用Simulink仿真软件的空白模型创建功能,构建空白模型,作为第二空白模型;将被测模型复制到第二空白模型,并在第二空白模型中添加目标嵌入式平台对应的数据收发模块,以构建得到部署模型,得到模型测试框架对应的代码测试框架。其中,目标嵌入式平台对应的数据收发模块包括:目标嵌入式平台对应的平台数据接收模块和平台数据发送模块。平台数据接收模块与被测模型的数据接收端口连接,平台数据发送模块与被测模型的数据发送端口连接。部署模型的结构示意图如图3B所示。其中,“Test_Data_in”表示被测模型的数据接收端口,“嵌入式平台数据接收模块”表示平台数据接收模块;“Data_Upload”表示被测模型的数据发送端口;“嵌入式平台数据发送模块”表示平台数据发送模块。

相应的,在本发明的另一实施例中,在S105之前,所述方法还可以包括如下步骤041:

041:将部署模型转换为其对应的程序代码;并将部署模型对应的程序代码下载至目标嵌入式平台,以使目标嵌入式平台部署部署模型对应的程序代码。

一种情况中,电子设备通过Simulink仿真软件将部署模型转换为其对应的程序代码。

在本发明的另一实施例中,目标嵌入式平台对应的数据收发模块包括目标嵌入式平台对应的平台数据接收模块和平台数据发送模块;

所述S105,可以包括如下步骤051:

051:利用代码测试工程,控制等效模型的测试激励子系统,将激励输入数据通过信号数据发送模块,发送至目标嵌入式平台;目标嵌入式平台通过部署的部署模型中的数据接收模块,接收激励输入数据;并通过部署模型中的被测模型,确定激励输入数据对应的代码结果数据;通过部署模型中的数据发送模块以及信号数据接收模块,将代码结果数据发送至信号观测子系统。

本实现方式中,在将部署模型对应的程序代码部署于目标嵌入式平台之后,在目标嵌入式平台运行的情况下,运行代码测试工程,在每一个预设仿真步长内,仿真工具如SimulinkTest仿真工具,控制等效模型的测试激励子系统将各测试用例对应的激励输入数据,发送至目标嵌入式平台。

目标嵌入式平台通过部署模型中平台数据接收模块对应的程序代码获得激励输入数据;利用激励输入数据,激励部署模型中被测模型对应的程序代码运行,得到程序代码的运行结果,作为激励输入数据对应的代码结果数据;并通过部署模型中平台数据发送模块,将激励输入数据对应的代码结果数据反馈至等效模型的信号观测子系统,进行存储。后续的,电子设备调用SimulinkTest仿真工具对比信号观测子系统存储的仿真结果数据及代码结果数据,验证被测模型与代码测试框架所对应程序代码之间的等效性。

被测模型对应的代码测试框架进行代码测试流程的逻辑结构示意图如图4所示,其中,图4中所示的“模型代码测试工程”表示代码测试工程。等效模型运行于Simulink仿真软件提供的Simulink环境中,部署模型对应的程序代码运行于目标嵌入式平台即图4所示的“嵌入式平台”。图4中所示的“激励数据”表示激励输入数据;“计算结果”表示代码结果数据。

如图5所示,为本发明实施例所提供的程序代码的测试流程中各模型之间的关系示意图。其中,被测模型即“Simulink模型”通过模型引用的集成于模型测试框架中,模型测试框架与其对应的模型测试工程为绑定关系;模型测试工程与代码测试工程配置参数相同。代码测试框架基于模型测试框架构建,代码测试工程与代码测试框架中的等效模型为绑定关系,代码测试框架中的部署模型对应的程序代码部署于目标嵌入式平台即图5中所示的“嵌入式平台”。

相应于上述方法实施例,本发明实施例提供了一种模型与模型代码等效性的测试装置,如图6所示,所述装置可以包括:

第一构建模块610,被配置为根据被测模型及其对应的激励输入数据和数据收发结构,构建所述被测模型对应的模型测试框架;

获得模块620,被配置为获得所述模型测试框架对应的模型测试工程,以使所述模型测试工程对应的仿真工具可管理所述模型测试框架的仿真过程;

第一确定模块630,被配置为利用所述模型测试框架、目标嵌入式平台对应的数据收发模块以及所述模型测试工程,确定所述模型测试框架对应的代码测试框架以及所述代码测试框架对应的代码测试工程,其中,所述代码测试框架包含等效模型以及待部署于所述目标嵌入式平台的包含所述目标嵌入式平台对应的数据收发模块的部署模型;

第二确定模块640,被配置为利用所述模型测试工程以及所述模型测试框架,确定所述被测模型对应的仿真结果数据;

数据发送模块650,被配置为在所述目标嵌入式平台运行的情况下,利用所述代码测试工程及所述等效模型,将所述激励输入数据发送至所述目标嵌入式平台,以使所述目标嵌入式平台运行部署模型对应的程序代码,确定所述激励输入数据对应的代码结果数据,并反馈至所述等效模型;

第三确定模块660,被配置为利用所述仿真结果数据及所述代码结果数据,验证所述被测模型与所述代码测试框架所对应程序代码之间的等效性。

应用本发明实施例,可以在获得被测模型及其对应的激励输入数据之后,自动生成用于仿真的模型测试框架以及模型测试工程,进而在自动生成被测模型对应的程序代码即代码测试框架的过程中,在部署模型中添加目标嵌入式平台对应的数据收发模块,部署模型经过编译生成其对应的程序代码,在目标嵌入式平台上运行可自行收发数据,无需在目标嵌入式平台上移植PIL仿真的通信协议层代码,相比于传统的处理器在环测试,开发和移植工作量小,节省了测试过程中的移植工作量,且直接生成可自动收发数据的部署模型对应的程序代码,适用性更强即适用的嵌入式平台更多。并且,本发明实施例中,可重用模型测试的测试用例,显著降低和减少了模型和代码等效性测试的工作量,实现了自动且便捷地对基于模型的设计的软件所对应程序代码的测试,提高测试效率。

在本发明的另一实施例中,所述第一构建模块610,被具体配置为将所述被测模型集成至模型引用子系统,并基于所述被测模型对应的输入输出端口信息,设置所述模型引用子系统的数据传输端口;

构建用于存储所述被测模型及所对应激励输入数据的测试激励子系统,并生成所述测试激励子系统对应的数据发送端口;

构建用于存储结果数据的信号观测子系统,并生成所述测试激励子系统对应的数据接收端口;

利用所述模型引用子系统、所述测试激励子系统、所述信号观测子系统以及预设约束条件,构建所述被测模型对应的模型测试框架。

在本发明的另一实施例中,所述预设约束条件包括:所述测试激励子系统与所述模型引用子系统,以及所述模型引用子系统与所述信号观测子系统之间通过预设信号线连接,信号线所传输信号满足预设信号设置条件,其中,所述预设信号设置条件包括:所述预设信号线所传输的信号为一维向量,且该信号的数据类型为无符号8位。

在本发明的另一实施例中,所述第二确定模块640,被具体配置为利用所述模型测试工程,控制所述测试激励子系统通过其对应的数据发送端口,将所述激励输入数据发送至所述模型引用子系统,以使所述模型引用子系统通过其数据接收端口接收所述激励输入数据,并基于所集成的被测模型,确定出所述激励输入数据对应的仿真结果数据,并通过所述模型引用子系统的数据发送端口发送至所述信号观测子系统;所述信号观测子系统通过其数据接收端口接收所述仿真结果数据,并存储。

在本发明的另一实施例中,所述模型测试框架包括通过预设信号线连接的测试激励子系统、模型引用子系统以及信号观测子系统,其中,所述测试激励子系统用于存储所述激励输入数据,所述模型引用子系统集成有所述被测模型,所述信号观测子系统用于存储结果数据;

所述第一确定模块630,被具体配置为构建第一空白模型;

将所述模型测试框架的测试激励子系统以及所述信号观测子系统复制到所述第一空白模型;并根据所述测试激励子系统的数据发送端口和所述信号观测子系统的数据接收端口,在所述第一空白模型中构建所述测试激励子系统对应的信号数据发送模块,以及所述信号观测子系统对应的信号数据接收模块,以构建得到所述等效模型;

构建第二空白模型;

将所述被测模型复制到所述第二空白模型,并在所述第二空白模型中添加目标嵌入式平台对应的数据收发模块,以构建得到所述部署模型,得到模型测试框架对应的代码测试框架;

基于所述模型测试工程的配置参数,确定所述代码测试框架对应的代码测试工程,并绑定所述代码测试工程与所述等效模型,以使所述代码测试工程管理所述等效模型的运行过程。

在本发明的另一实施例中,所述目标嵌入式平台对应的数据收发模块包括目标嵌入式平台对应的平台数据接收模块和平台数据发送模块;

所述发送模块650,被具体配置为利用所述代码测试工程,控制所述等效模型的测试激励子系统,将所述激励输入数据通过所述信号数据发送模块,发送至所述目标嵌入式平台;所述目标嵌入式平台通过部署模型中的数据接收模块,接收所述激励输入数据;并通过所述部署模型中的被测模型,确定所述激励输入数据对应的代码结果数据;通过所述部署模型中的数据发送模块以及所述信号数据接收模块,将所述代码结果数据发送至所述信号观测子系统。

在本发明的另一实施例中,所述装置还包括:

转换发送模块(图中未示出),被配置为在所述利用所述代码测试工程及所述等效模型,将所述激励输入数据下载至所述目标嵌入式平台之前,将所述部署模型转换为其对应的程序代码;并将所述部署模型对应的程序代码发送至所述目标嵌入式平台,以使所述目标嵌入式平台部署所述部署模型对应的程序代码。

上述系统、装置实施例与系统实施例相对应,与该方法实施例具有同样的技术效果,具体说明参见方法实施例。装置实施例是基于方法实施例得到的,具体的说明可以参见方法实施例部分,此处不再赘述。本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。

本领域普通技术人员可以理解:实施例中的装置中的模块可以按照实施例描述分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。

相关技术
  • 一种模型与模型代码的测试方法及装置
  • 一种基于UPPAAL模型的汽车软件源代码仿真测试方法
技术分类

06120113008289