CN113282494B - 一种对vaps生成的代码进行测试的方法 - Google Patents
一种对vaps生成的代码进行测试的方法 Download PDFInfo
- Publication number
- CN113282494B CN113282494B CN202110570188.3A CN202110570188A CN113282494B CN 113282494 B CN113282494 B CN 113282494B CN 202110570188 A CN202110570188 A CN 202110570188A CN 113282494 B CN113282494 B CN 113282494B
- Authority
- CN
- China
- Prior art keywords
- data
- channel
- test
- data channel
- vaps
- 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.)
- Active
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
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)
Abstract
本发明公开了一种对Vaps XT生成的代码进行测试的方法,包含如下步骤:将VAPS模型中的各图形属性与数据通道关联并实例化后,提取数据通道定义信息,生成数据通道结构体定义文件;生成应用驱动程序和测试驱动程序及编译用Makefile文件。应用驱动程序利用共享内存与测试驱动程序进行通信;测试驱动程序接收来自测试用例的激励数据,并写入到共享内存相应输入段;应用驱动程序周期性读取激励数据,驱动图形画面显示,并将画面输出数据写入到共享内存输出段;测试激励程序读取输出数据用于测试用例的结果验证。本发明极大节省了开发用于项目测试专用的应用驱动程序的时间,降低了开发测试环境的难度。
Description
技术领域
本发明涉及航空嵌入式软件测试领域,尤其是涉及一种对Vaps XT生成的代码(简称:VAPS代码)进行测试的方法。
背景技术
随着航空嵌入式软件的综合化、模块化发展趋势,软件规模也越来越庞大,利用一些建模设计工具进行软件开发,以提高软件开发的效率,标准化与可重用性,成为航空嵌入式软件开发的一大趋势。航空嵌入式软件开发领域,常用的建模设计工具主要有Simulink,Vaps XT以及SCADE,其中Vaps XT软件在机载人机交互与图形化软件开发方面被越来越广泛的使用。
利用Vaps XT软件生成的VAPS代码仅具有图形显示功能,在VAPS代码与其他应用程序交互时,需要首先定义VAPS代码的数据发送/接收通道,并将图形页面属性与数据发送/接收通道关联并实例化,编译为静态链接库后,可利用Vaps XT提供的用户编程接口,调用图形绘制接口驱动图形画面显示。此外,Vaps XT软件还提供了nCOM组件,支持通过TCP、UDP或共享内存方式与外部应用通信。对于VAPS代码的测试,目前普遍的做法是,针对不同VAPS代码,开发团队耗费大量人力与时间开发测试专用的应用驱动程序,用于进行外部数据激励;组织测试人员利用专用的应用驱动程序,手工进行数据激励以完成测试。而对于不同功能的VAPS代码或当前VAPS代码版本变更时,均需重新开发或更新专用的应用驱动程序。
以上做法,使得对VAPS代码进行测试较为困难,测试环境开发耗时耗力,手工测试效率低下。改进用于测试VAPS代码的应用驱动程序的开发过程,并结合自动化测试技术,能够减轻开发人员与测试人员的工作负担,提高软件测试工作效率。
发明内容
为克服测试VAPS代码耗时耗力、人工测试效率低下的问题,本发明提出了一种对VAPS生成的代码进行测试的方法,能够快速生成测试VAPS代码的应用驱动程序,并结合自动化测试技术,可以提高测试环境开发效率及软件测试效率。
本发明的发明目的通过以下技术方案实现:
一种对Vaps XT生成的代码进行测试的方法,包含如下步骤:
(1)利用Vaps XT将各数据通道与Vaps模型中图形属性关联,配置项目信息;其中项目信息包含项目的所在文件目录、根文件名称、生成模块名称、数据通道文件名称;
(2)从配置的项目信息中获取数据通道文件,再从数据通道文件中获取通道数据类型定义文件信息,生成工程需要的数据通道结构体定义文件;其中:数据通道文件中包含数据通道名称、通道属性、通道数据类型;通道数据类型定义文件中包含通道中各字段的名称、字段的类型、字段的数组元素个数;
(3)结合应用程序驱动程序框架模板和数据通道结构体定义文件,生成对应的应用驱动程序及编译应用驱动程序的Makefile文件;其中:应用驱动程序包含:
(A)数据通道信息结构体,包括:各数据通道名称,应用驱动程序中数据通道缓冲区地址,共享内存中数据通道地址(首地址,偏移量),数据通道大小,数据通道方向(接收/发送);
(B)在应用驱动程序初始化时完成共享内存区的建立,并获取各数据通道缓冲区地址,完成数据通道信息结构体及其他数据结构的初始化;其中,共享内存区划分为共享内存输入段和共享内存输出段;
(C)结合数据通道信息结构体,周期性将共享内存输入段中激励数据拷贝至各数据接收通道缓冲区;
(D)结合数据通道信息结构体,周期性将数据发送通道缓冲区中数据拷贝至共享内存输出段;
(4)结合具体采用的自动化测试工具及测试环境生成测试驱动程序及编译测试驱动程序的Makefile文件;其中测试驱动程序周期性将测试激励数据写入应用驱动程序中共享内存输入段,并获取共享内存输出段上的数据。
应用驱动程序、测试驱动程序及编译所需Makefile文件的生成均由脚本自动完成。
本发明的有益效果在于:
通过配置项目信息,利用程序提取Vaps XT工程项目信息,自动生成应用驱动程序及测试驱动程序并编译,极大节省了开发用于项目测试专用的应用驱动程序的时间,降低了开发测试环境的难度。为支持项目测试,以前由项目开发人员开发的应用驱动程序,可由测试人员进行项目配置后自动生成。当项目更新或进行不同项目测试时,仅需修改相应项目配置信息,即可快速完成。同时,通过共享内存通信,屏蔽了Vaps应用与外部测试程序的编译等不一致性,有利于结合自动化测试技术,提高测试工作效率。
附图说明
图1是本发明技术方案的总体步骤。
图2是本发明的技术原理。
图3是应用驱动程序的基本流程。
图4是测试驱动程序的基本流程。
图5是通道数据类型定义文件的示意图。
图6是ADS2接口定义文件的示意图。
图7是ADS2测试驱动程序的流程示意图。
具体实施方式
本发明的基本构思是:将Vaps代码中的各图形属性与数据通道关联并实例化后,利用脚本程序提取数据通道定义信息,生成数据通道结构体定义;利用脚本程序生成驱动该Vaps应用静态链接库的应用驱动程序及其编译所需Makefile文件,自动化测试所需的测试驱动程序及其编译所需Makefile文件。应用驱动程序利用共享内存与测试驱动程序进行通信;测试驱动程序接收来自测试用例的激励数据,并写入到共享内存相应输入段;应用驱动程序周期性读取激励数据,驱动图形画面显示,并将画面输出数据写入到共享内存输出段;测试驱动程序读取输出数据用于测试结果验证。下面通过附图和某机载显控项目为例,对本发明做进一步详细说明。
本实施例所示的一种对Vaps XT生成的代码进行测试的方法包含如下步骤:
(1)利用Vaps XT将各数据通道与Vaps代码中的Vaps图形属性关联,并配置项目信息。
本步骤在Vaps XT中进行,首先在Vaps XT中通过菜单File>New中Object选项卡中“Data Sender/Receiver”完成各数据通道与Vaps图形属性关联。然后在项目配置信息文件(用户自定义,本项目采用“vxtPrj.ini”文件)中添加项目信息完成实例化。项目信息主要包含项目的目录(用于数据通道文件等文件的检索)、项目的名称(*.vrpj,如“Y_FQA_Project.vrpj”)、生成模块的名称(*.vimp,用于生成项目静态链接库,如“Y_Total_Display.vimp”)、数据通道文件的名称(*.vcls,为方便区分数据发送通道与数据接收通道,前缀分别设为snd和rcv,如sndFMS_O_PLN_LAND_DATA”、“rcvPage_Total_Dd”)等信息。
完成操作后,Vaps XT生成的静态链接库文件将建立数据通道,外部应用可利用Vaps XT提供的用户编程接口,对数据通道缓冲区进行存取操作。
(2)利用脚本程序从项目配置信息文件获取数据通道文件,再从数据通道定义文件中获取通道数据类型定义文件,生成工程需要的通道结构体定义文件。
数据通道定义文件(*.vcls)的内容为XML编码文本文件,通道结构体定义包含通道属性、通道类型等属性信息,例如,“<structprop_decl></structprop_decl>”域中为通道结构体定义,“access”为通道属性(“Output”为数据发送通道,“Input”为数据接收通道);“type”为通道类型的名称;如“rcvPage_Total_Dd”,通道结构体为“access="Output"type="Page_Total_Dd"”。
通道数据类型定义文件(*.dd)为XML编码文本文件,内部包含通道各字段的名称、字段的类型、字段的数组元素个数等属性信息。通道数据类型定义文件如图5中所示;其“<dataDescription></dataDescription>”域中包含该通道类型下的各字段(变量)属性,“<field></field>”中为单个字段描述,“<name><type><cardinality>”分别表示字段的名称、类型和数组元素个数(单个字段为1)。
在本步骤中,根据项目配置信息文件中的数据通道定义文件的名称可以找到对应的数据通道定义文件,利用脚本程序(可选用Python、C/C++等)先解析数据通道定义文件,提取通道类型的名称。
然后,脚本程序根据通道类型的名称检索项目配置信息文件中的项目目录,查找相应的通道数据类型定义文件(如“Page_Total_Dd.dd”)。
通过提取通道数据类型定义文件中的各属性信息可以生成工程需要的数据通道结构体定义(如“struct Page_Total_Dd,struct FMS_O_PLN_LAND_DATA”),并保存为C语言的数据通道结构体定义文件(如“vxtIoStructDef.h”)。
(3)利用脚本程序结合应用程序驱动框架模板、编译用Makefile文件模板、数据通道结构体定义文件,生成对应的应用驱动程序和Makefile文件。
应用驱动程序的主要功能有:(a)在初始化阶段,除完成应用驱动程序各数据结构的初始化外,还需建立与测试驱动程序通信的共享内存区。其中,共享内存区分为共享内存输入段和共享内存输出段,具体结构根据(2)中生成的各数据通道结构体定义文件确定,各数据通道排列可灵活确定,需保证各数据通道无重叠且与测试驱动程序通信的一致性。(b)在驱动图形画面显示前,从共享内存输入段读取激励数据,将激励数据写入到各数据接收通道缓冲区。(c)驱动图形画面显示。(d)完成画面显示后,将各数据发送通道缓冲区数据拷贝至共享内存相应输出段。其中,(b)(c)(d)为应用驱动程序图形显示的一个周期。
应用驱动程序主要包含(A)通道信息结构体,包括:各数据通道名称,应用驱动程序中数据通道缓冲区地址,共享内存中数据通道地址,数据通道在共享内存中偏移量,数据通道大小(字节),数据通道方向(接收/发送);(B)在应用驱动程序初始化时调用的初始化函数“vInitIOBuffersFunction()”,主要完成共享内存区的建立,并调用用户编程接口函数(“vxtRTCUI_pGetDataAddress()”,“vxtRTCUI_pGetIOBuffer()”等)获取应用驱动程序中各数据通道缓冲区地址,完成通道信息结构体及其他数据结构的初始化;通过WindowAPI函数“OpenFileMappingA()”,“MapViewOfFile()”完成建立共享内存;(C)在驱动图形画面显示前调用的函数“vPreUpdateFunction()”,根据数据通道信息结构体中通道信息,将共享内存输入段中激励数据拷贝至各数据接收通道缓冲区,并调用接口函数“vxtRTCUI_vNotifyDataUpdated()”通知应用驱动程序,通道数据已更新;(D)在图形画面完成显示后调用的函数“vPostUpdateFunction()”,利用数据通道结构体中信息,将数据发送通道缓冲区中数据拷贝至共享内存中相应输出段;(E)主函数“main()”的主要流程是:建立驱动程序句柄对象(“vxtRTCUserIntegrationCallbacksI”)并初始化,调用接口函数“vxtRTCUI_vMainLoop()”启动主循环。利用脚本生成编译应用驱动程序的Makefile文件,可参考Vaps XT示例项目中提供的Makefile的框架进行,这里不做赘述。
(4)结合具体采用的自动化测试工具及测试环境生成测试驱动程序。
测试驱动程序的主要工作是,与自动化测试工具(ADS2,QuickLab等)或测试脚本程序通信,接收来自测试用例的激励数据,将激励数据写入应用驱动程序中定义的共享内存输入段,并将应用驱动程序中定义的共享内存输出段上的数据发送至自动化测试工具或测试脚本程序,以完成测试结果验证。测试驱动程序可采用生成Makefile文件完成编译。
本实施例中以自动化测试工具ADS2+TFG(ADS2:TechSAT公司开发的用于航空航天领域应用的测试、集成、仿真环境;TFG:ADS2工具配备的自动化测试工具,用于执行测试用例)为例进行描述。ADS2测试工具上的应用工程,主要需要具备应用接口定义文件(*.cvt)及利用ADS2用户编程接口的可执行应用(Python或C程序,即测试驱动程序)。接口定义文件的格式如图6所示,其中,主要属性“DATATYPE/DATASIZE/ELEMENTS”分别对应变量的数据类型,长度及数组元素个数;因此,根据项目中通道类型定义信息,可以直接生成相应的接口定义文件(*.cvt)。
使用ADS2用户编程接口开发的测试驱动程序的基本流程如图7所示。获取与应用驱动程序通信的共享内存区,完成各数据结构初始化。调用ads_connect(),建立与ADS2测试工具连接;调用ads_attach_sampling()完成数据关联;调用ads_setup_simulation(),ads_start_simulation()等启动数据交互主循环。调用ads_sim_framestart(),等待数据交互周期开始。调用ads_get_simdata(),接收ADS2的测试激励数据。将激励数据更新至共享内存输入段中对应区域;读取共享内存输出段结果数据。调用ads_send_simdata()将结果数据发送回ADS2。调用ads_frame_end(),结束数据交互周期。
以上除步骤(1)和项目配置外,应用驱动程序及测试驱动程序的生成及利用Makefile编译,均可采用脚本自动完成。
Claims (3)
1.一种对Vaps XT生成的代码进行测试的方法,包含如下步骤:
(1)利用Vaps XT软件将各数据通道与VAPS模型中图形属性相关联,并配置项目信息;其中项目信息包含项目所在的目录、根文件名称、生成模块名称、数据通道文件的名称;
(2)从配置的项目信息中获取数据通道文件,查找并获取对应的通道数据类型定义文件,生成工程需要的数据通道结构体定义文件;其中:数据通道文件中包含数据通道名称、通道属性、通道类型;通道数据类型定义文件中包含字段的名称、字段的类型、字段的数组元素个数;
(3)结合项目信息、VAPS应用程序驱动框架模板及数据通道结构体定义文件,生成对应的应用驱动程序;其中:应用驱动程序包含:
(A)数据通道信息结构体,包括:各数据通道名称,应用驱动程序中数据通道缓冲区地址,共享内存中数据通道地址,数据通道在共享内存中偏移量,数据通道大小,数据通道方向;
(B)应用驱动程序初始化时建立与测试驱动程序通信的共享内存区,并获取各数据通道缓冲区地址,完成通道信息结构体及其他数据结构的初始化;其中,共享内存区分输入段和输出段;
(C)根据通道信息结构体的信息将共享内存输入段中激励数据拷贝至各接收通道缓冲区;
(D)根据通道信息结构体中信息将发送通道缓冲区中数据拷贝至共享输出段;
(4)结合具体采用的自动化测试工具及测试环境生成测试驱动程序;其中测试驱动程序将测试激励数据写入共享内存输入段,并获取共享内存输出段上的数据用于测试结果验证。
2.根据权利要求1所述的一种对Vaps XT生成的代码进行测试的方法,其特征在于所述步骤(3)中还包含生成编译需要的Makefile文件。
3.根据权利要求1所述的一种对Vaps XT生成的代码进行测试的方法,其特征在于应用驱动程序及测试驱动程序的生成由脚本自动完成。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110570188.3A CN113282494B (zh) | 2021-05-25 | 2021-05-25 | 一种对vaps生成的代码进行测试的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110570188.3A CN113282494B (zh) | 2021-05-25 | 2021-05-25 | 一种对vaps生成的代码进行测试的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113282494A CN113282494A (zh) | 2021-08-20 |
CN113282494B true CN113282494B (zh) | 2023-09-15 |
Family
ID=77281436
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110570188.3A Active CN113282494B (zh) | 2021-05-25 | 2021-05-25 | 一种对vaps生成的代码进行测试的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113282494B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106892134A (zh) * | 2017-03-20 | 2017-06-27 | 北京润科通用技术有限公司 | 一种虚拟仪表的测试方法和装置 |
CN109739767A (zh) * | 2018-12-29 | 2019-05-10 | 北京润科通用技术有限公司 | 一种人机交互界面逻辑功能测试方法及装置 |
CN110532145A (zh) * | 2019-07-15 | 2019-12-03 | 胡友彬 | 便携式机动卫星气象水文信息保障系统及方法 |
CN112162879A (zh) * | 2020-09-30 | 2021-01-01 | 中国科学院计算技术研究所 | 一种实时多核dsp软件的日志系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11539454B2 (en) * | 2014-12-31 | 2022-12-27 | Arris Enterprises Llc | Service validation using emulated virtual clients |
-
2021
- 2021-05-25 CN CN202110570188.3A patent/CN113282494B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106892134A (zh) * | 2017-03-20 | 2017-06-27 | 北京润科通用技术有限公司 | 一种虚拟仪表的测试方法和装置 |
CN109739767A (zh) * | 2018-12-29 | 2019-05-10 | 北京润科通用技术有限公司 | 一种人机交互界面逻辑功能测试方法及装置 |
CN110532145A (zh) * | 2019-07-15 | 2019-12-03 | 胡友彬 | 便携式机动卫星气象水文信息保障系统及方法 |
CN112162879A (zh) * | 2020-09-30 | 2021-01-01 | 中国科学院计算技术研究所 | 一种实时多核dsp软件的日志系统 |
Non-Patent Citations (3)
Title |
---|
Simulation of Multifunctional Airborne Display Device Based on VAPS XT;Tao Lin;《Proceedings 2013 International Conference on Mechatronic Sciences, Electric Engineering and Computer (MEC)》;第2821-2824页 * |
基于VAPS、FLSIM的FMS导航系统实时仿真系统设计;向明等;航空科学技术(第03期);第34-37页 * |
基于VAPS的机载多功能显示器的仿真研究;《电光与控制》;第12卷(第3期);第36-39页 * |
Also Published As
Publication number | Publication date |
---|---|
CN113282494A (zh) | 2021-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105843630B (zh) | 一种基于机器人图形化编程开发的方法 | |
CN102819492B (zh) | 一种基于Android的关键字驱动自动化测试框架 | |
US7856619B2 (en) | Method and system for automated testing of a graphic-based programming tool | |
CN103198009B (zh) | 一种通用测试方法、系统及相应装置 | |
CN108845940B (zh) | 一种企业级信息系统自动化功能测试方法和系统 | |
US20070005300A1 (en) | Systems and methods for graphically defining automated test procedures | |
US20090077422A1 (en) | Method and system for accelerating test automation of software applications | |
CN105260315A (zh) | 一种在嵌入式系统进程中调试日志的方法 | |
CN104679644A (zh) | 移动终端中应用程序的测试方法和系统 | |
CN109857663B (zh) | 关键字驱动与图像相似度结合的自动化测试平台 | |
CN110362490B (zh) | 融合iOS与Android移动应用的自动化测试方法及系统 | |
CN103544100A (zh) | 便携数据处理设备应用程序的测试方法、系统和客户端 | |
CN105117215A (zh) | 汽车功能的开发方法及装置 | |
CN108228173A (zh) | 一种可视化的数据接口开发系统和方法 | |
CN111913889A (zh) | 一种测试系统搭建方法及测试系统 | |
CN112328229A (zh) | 一种快速创建Jenkins流水线的方法 | |
CN111142861B (zh) | 结构化综控系统集成方法及装置 | |
CN112988588B (zh) | 客户端软件调试方法、装置、存储介质及电子设备 | |
CN108833005B (zh) | 光网络通信设备及其组网业务的自动化测试工具包及方法 | |
CN102609354A (zh) | 一种基于gnu开源软件的c++程序远程调试方法 | |
CN108287720B (zh) | 软件编译方法、装置、设备及存储介质 | |
CN108399122A (zh) | 测试脚本运行方法与系统 | |
CN113282494B (zh) | 一种对vaps生成的代码进行测试的方法 | |
KR20050034661A (ko) | 이동 통신 단말기 응용 프로그램 및 부가 서비스 기능 시험자동화 시스템 | |
CN116431103B (zh) | 一种面向嵌入式软件的数字化DevOps平台设计方法 |
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 |