CN105528290A - 基于脚本的嵌入式软件仿真及测试一体化平台的构建方法 - Google Patents

基于脚本的嵌入式软件仿真及测试一体化平台的构建方法 Download PDF

Info

Publication number
CN105528290A
CN105528290A CN201510885404.8A CN201510885404A CN105528290A CN 105528290 A CN105528290 A CN 105528290A CN 201510885404 A CN201510885404 A CN 201510885404A CN 105528290 A CN105528290 A CN 105528290A
Authority
CN
China
Prior art keywords
script
test
task
real
module
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
Application number
CN201510885404.8A
Other languages
English (en)
Other versions
CN105528290B (zh
Inventor
周汉清
李海峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Aero Polytechnology Establishment
Original Assignee
China Aero Polytechnology Establishment
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Aero Polytechnology Establishment filed Critical China Aero Polytechnology Establishment
Priority to CN201510885404.8A priority Critical patent/CN105528290B/zh
Publication of CN105528290A publication Critical patent/CN105528290A/zh
Application granted granted Critical
Publication of CN105528290B publication Critical patent/CN105528290B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明属于自动化测试领域,是针对飞行器机载嵌入式软件的自动化测试技术,涉及一种基于脚本的嵌入式软件仿真及测试一体化平台的构建方法。本发明的实现是基于实时处理机和主控机的架构。在主控机上,测试用例和仿真模型采用测试脚本进行描述,并进行异常检测,经检测无误的脚本下发到实时处理机中。在实时处理机中,基于脚本实现了对被测设备的外部交联设备和测试设备的模拟。其中,仿真模型脚本模拟外部交联设备,测试用例脚本模拟测试设备。仿真模型和脚本和测试用例脚本都通过实时脚本解释器完成解析,并将所有的仿真和测试任务添加到任务注册及调度模块中,最后通过总线驱动模块实现与被测设备的交互。

Description

基于脚本的嵌入式软件仿真及测试一体化平台的构建方法
技术领域
本发明属于自动化测试领域,是针对飞行器机载嵌入式软件的自动化测试技术,涉及一种基于脚本的嵌入式软件仿真及测试一体化平台的构建方法。
背景技术
机载嵌入式系统复杂性的提高对装备软件的质量提出了更高的要求。在机载设备中,复杂任务通常需要多个设备交互合作完成。这就要求研制单位在开发测试过程中需要连接其他厂商的设备进行调试,导致资源协调周期冗长、项目进度无法得到保证。为了解决这一问题,出现了很多仿真工具平台,如Matlab,SCADE,Rhapsody等。开发人员借助这类工具实现了用仿真模型模拟外部交联设备,避免了多单位之间设备协调问题。
针对软件测试,目前型号研制过程中测试用例大多采用测试脚本的方式进行描述,测试脚本的引入可以减少测试人员的工作量,提高软件测试的可维护性以及测试的可重复性。嵌入式软件自动化测试领域有很多的测试脚本实现方案。如中国航空综合技术研究所研发的基于Python的实时脚本语言、北京航空航天大学研发的ESSTSL脚本语言、电子科技大学研发的CATScript脚本语言等。
但在研制一线仍然存在以下问题,一是传统的仿真工具平台使用门槛高,模型建立及校验周期长。二是采用传统的仿真工具平台进行仿真时,需要完成整个建模过程,其他单位积累的C/C++语言编写的模型库无法复用。三是目前的仿真及测试平台中由于采用不同的技术方案,测试和仿真过程相互隔离,导致测试脚本只能获取被测设备运行信息,无法获取与之交联的仿真模型的运行信息,因此,无法构建复杂场景的测试用例,测试不够充分。此外,由于测试脚本无法探测仿真模型在运行过程中的状态。导致最终测试用例不通过时,无法确定是仿真模型的问题还是被测设备自身的问题。
综上所述,传统的仿真和测试平台无法满足易用性、可复用性以及测试全面性的要求,因此,研究和实现一种解决上述问题的仿真及测试一体化平台具有重大的意义和紧迫性。
发明内容
本发明的目的是针对上述方法存在的问题,提出一种基于脚本的嵌入式软件仿真及测试一体化平台的构建方法,该方法的实现是基于主控机和实时处理机架构的嵌入式软件仿真测试环境,其中主控机是运行Windows系统的PC机,而实时处理机是运行VxWorks系统的工控机,
主控机部分,构建脚本开发模块及异常检测的模块,包括三个步骤:
步骤一、构建脚本开发模块,实现一个具备仿真模型导入功能的集成开发环境,用于开发测试用例脚本和仿真模型脚本;
首先在VisualStudio开发环境中导入SintillaNet窗体控件,然后基于该控件提供的API接口实现脚本编辑、脚本自动补全、代码折叠、语法高亮、代码注释功能,然后,使用混合编程技术实现模型导入功能,实现在脚本中调用C/C++语言编写的仿真模型;
步骤二、构建异常检测模块,包括脚本解释器和语义检查模块,
对Python标准解释器进行仿真和测试扩展获得一个用于语法检查的脚本解释器,仿真扩展包括扩展数据发送、数据接收以及任务注册的接口,测试扩展包括扩展测试激励、测试反馈和任务注册的接口,通过扫描脚本中的仿真及测试接口参数的有效性,实现语义检查;
步骤三、集成脚本开发模块与异常检测模块,将异常检测模块链接到脚本开发模块中;
实时处理机部分,采用Tornado开发环境构建总线驱动模块、任务注册及调度模块以及实时脚本解释器,并在运行前加载到实时处理机,具体包括以下三个步骤:
步骤一、采用总线、数据帧和帧变量的组织方式构建总线驱动模块;
首先,根据总线通信协议为每条总线设置通信参数,调用实时处理机板卡驱动提供的API实现数据收发;其次,将实时处理机与被测设备之间通信的数据以数据帧和帧变量的形式进行组织,并建立数据帧与总线的映射关系;最后,以数据帧为单位构建通信任务,在运行前将通信任务添加到任务注册及调度模块的任务容器中;
步骤二、构建任务注册及调度模块,
使用链表和数组实现容纳任务的容器,并提供一个仿真任务、测试任务以及通信任务注册的接口,接下来,实现任务调度算法,按照任务的周期和运行时间对任务进行调度;
步骤三、采用移植的方式在实时处理机中构建一个实时脚本解释器,解释执行仿真模型脚本和测试用例脚本;
对于仿真部分,数据发送、数据接收接口在实现时,调用总线驱动模块的功能实现与被测设备之间的信息交互;任务注册接口实现时,将仿真模型任务添加到任务注册及调度模块的任务容器中;对于测试部分,测试激励接口在实现时调用总线驱动模块向被测设备发送测试指令;测试反馈接口在实现时调用总线驱动模块接收被测设备的实际测试结果;任务注册接口在实现时,将测试任务添加到任务注册及调度模块的任务容器中;
所述一体化平台中的仿真模型和测试用例均采用脚本语言进行描述;
所述主控机和实时处理机中的两个解释器对脚本语言的语法支持能力一致;
所述主控机部分步骤二中在扩展任务注册接口时,注册任务包括仿真任务、测试任务以及总线通信任务三种,其中,每种任务都包括周期型和事件型两种类型,且能够指定任务的起止时间;
所述实时处理机中,仿真模型脚本和测试用例脚本的执行均通过实时脚本解释器,仿真模型和测试用例可以通过脚本解释器建立信息交互。
主控机部分步骤二中的异常检测模块不仅包括脚本语法检查,还包括仿真及测试相关的语义检查。
实时处理机中,实时脚本解释器的是通过移植的方式构建,在移植的过程中,删除了与仿真和测试无关的模块。
在实时处理机中构建实时脚本解释器时,将脚本解释器与系统映像模块分离。
本发明具有的优点和有益效果,
本发明的实现是基于实时处理机和主控机的架构。在主控机上,测试用例和仿真模型采用测试脚本进行描述,并进行异常检测,经检测无误的脚本下发到实时处理机中。在实时处理机中,基于脚本实现了对被测设备的外部交联设备和测试设备的模拟。其中,仿真模型脚本模拟外部交联设备,测试用例脚本模拟测试设备。仿真模型和脚本和测试用例脚本都通过实时脚本解释器完成解析,并将所有的仿真和测试任务添加到任务注册及调度模块中,最后通过总线驱动模块实现与被测设备的交互。最终,基于脚本构建了一个嵌入式软件仿真及测试的一体化平台,满足了嵌入式系统研制过程中仿真及测试的要求,大大降低了仿真及测试的成本,具有很好的通用性。本发明的优点与积极效果还在于,
(1)本发明中仿真及测试均采用脚本进行描述,并通过脚本解释器解析运行,最终由任务注册及调度模块统一管理,避免不同技术造成的仿真和测试相互隔离问题,便于更好的描述复杂的测试场景,测试用例覆盖更加全面,测试结果更加真实准确。
(2)本发明中仿真模型采用脚本描述,使用人员无需学习复杂的建模工具,通过编写简单的脚本即可建立仿真模型,降低了使用门槛。此外,脚本开发模块中的模型导入功能,能够复用C/C++语言编写的模型库,大大缩短了仿真模型建立的时间。
(3)本发明中的脚本模块被划分成两部分在不同的平台实现。脚本开发模块和异常检测在非实时的主控机中实现,提供良好的脚本开发体验和异常检测机制,实现了在仿真和测试执行前对脚本进行全面的异常检测,有效的解决了由脚本异常导致的仿真及测试中断问题。实时脚本解释器在实时处理机中实现,使构建的仿真模型脚本和测试用例脚本在执行时具备实时特性,仿真脚本所承载的数据收发以及测试脚本所承载的测试激励和结果收集的时间可以精确到1ms,提高了仿真和测试的精度和准确性。
(4)本发明在实时处理机中构建实时脚本解释器时,将脚本解释器与系统映像模块分离,便于启动时按需加载,提高了加载速度、减少资源占用。
(5)本发明在实时处理机中采用移植的方式构建实时脚本解释器,降低了构建成本,构建的实时脚本具有很好的稳定性和通用性。
(6)本发明提出的实时嵌入式测试脚本的构建方法具有普适性,适用于所有基于实时处理机和主控机架构的测试环境,可利用该方法在不同实时平台上构建不同的测试脚本。
附图说明
图1是本发明的示意图;
图2是实时处理机中总线驱动模块实现原理图;
图3是实时处理机中任务注册及调度模块实现原理图;
图4是实时处理机中脚本解释器与其他模块的关系;
具体实施方式
为了便于本领域普通技术人员理解和实施本发明,下面结合附图和实施例对本发明作进一步的详细和深入描述。
在主控机中构建具有异常检测功能的脚本开发模块具体包括下面步骤:
步骤一、构建脚本开发模块,实现一个具备仿真模型导入功能的集成开发环境,用于开发测试用例脚本和仿真模型脚本。
在主控机中构建脚本开发模块是由于主控机中Windows平台提供良好的图形用户界面,便于开发功能强大的集成开发环境,极大的提高脚本的开发效率。在实现时采用VisualStudio开发环境和SintillaNet窗体控件开发脚本开发集成环境。首先,将SintillaNet控件所在目录添加到环境变量中,然后将SintillaNet.dll添加到VisualStudio工具箱中。导入后可以调用scintilla.NativeInterface获取原生接口,利用其提供的API接口实现脚本编辑、脚本自动补全、代码折叠、语法高亮、代码注释等功能。
嵌入式系统中,仿真模型库大多采用C/C++语言编写,而Python脚本语言的底层采用C语言实现,因而采用Python脚本语言可以方便的通过混合编程技术导入仿真模型,复用已有的仿真模型库。具体地,模型导入功能的实现方法是:1)将已有的仿真模型的程序源代码制作成一个动态链接库。首先将代码导入Tornado开发环境创建downloadablevxworksproject工程,将每个仿真模型代码封装成可调用的函数,编写头文件指定函数调用约定方式、定义复杂数据结构的结构体和导入导出函数。如果采用C++的工程,导出的时候需要添加extern“C”,这样Python中才能识别导出的函数。最终生成.o格式的动态链接库。2)编写Python仿真模型脚本,在脚本中采用继承的方式构造和动态链接库中一致的数据结构,然后为每个调用的函数设置参数类型和返回值类型。该脚本不提供仿真模型的实现,只需要在Python脚本中导入制作好的动态链接库。
测试用例脚本和仿真模型脚本编辑完成以后,存放在主控机中。仿真和测试执行前,主控机将脚本文件的路径下发到实时处理机中,实时处理机中的实时脚本解释器采用FTP协议,根据路径读取主控机中的脚本解释执行。与测试脚本不同,导入的仿真模型被制作成.o动态链接库以后,在仿真执行前将会通过TCP/IP协议下发到实时处理机中。执行时,脚本解释器首先读取主控机中的脚本,执行时遇到导入语句时,直接读取实时处理机中的.o动态链接库执行。
步骤二、构建异常检测模块,包括脚本解释器和语义检查模块。
对于异常检测模块中的语法检查功能,并未采用传统的编译技术中的自动机理论,而是充分利用了Python脚本语言解释运行的特性,采用后台运行脚本的方式获取语法检查结果。仿真和测试脚本开发完成以后,首先在后台启动脚本解释器解释执行,并截获Python解释器解释运行的控制台信息作为语法检查的结果。为了方便用户完成仿真和测试,一体化平台的脚本中需要添加相应的接口,包括仿真中的数据发送接口send_var、数据接收接口recv_var以及任务注册接口reg_task。测试中的测试激励接口inject_var、测试反馈接口feedback_var和任务注册的接口reg_task。但是这些添加的接口无法被标准解释器识别,因此需要对标准解释器进行扩展,将这些接口内嵌入脚本解释器。由于主控机与实时处理机中的脚本解释器扩展接口的目的不同,因而对接口具有不同的实现。主控机中脚本解释器扩展接口的目的是执行脚本时能够识别这类接口,进而得到正确的语法检查结果。因而,此处对每个接口只需提供简单实现,无需完成真实的仿真和测试过程。其中,具有返回值的接口,实现是一条返回语句,返回的数值是与接口返回值类型相同且处于有效区间的任意值。对于没有返回值的接口,无需提供具体的实现。除了接口实现不同,主控机与实时处理机中的脚本解释器扩展接口的参数类型、参数个数、返回值类型必须完全一致,这是由于脚本的开发位于主控机,而脚本的执行位于实时处理机,脚本的开发和执行虽然处于两个不同的平台,但操作的是同一个脚本,主控机中脚本开发模块语法检查的结果必须与实时处理机中检查的结果保持一致。
对于异常检测中的语义检查功能,实现与仿真和测试相关的语义检查,仿真和测试相关接口的参数进行语义检查。由于测试脚本与其他模块进行交互主要通过三种方式,分别是变量赋值(仿真中的数据发送和测试中的测试激励),变量取值(仿真中的数据接收和测试中的测试反馈),以及任务注册(仿真和测试中的任务注册)。因此,仿真和测试相关的语义检查主要包含以下三类:1)变量赋值中可能引发的异常主要有:变量名错误、变量长度或变量类型错误。进行语义检查时,需要到变量表里查询测试激励变量,如果从变量表中找到相同名称的变量,且测试激励变量值的长度和类型与变量表中描述一致,则认为脚本未出现测试激励语义异常,否则,抛出异常,提示用户修改脚本。2)变量取值中可能引发的异常是变量名错误。语义检查时,到变量表中查询测试反馈变量,如果能找到该变量,则认为脚本未出现测试反馈语义异常,否则抛出异常。3)任务注册中可能引发语义异常的主要有:任务的周期错误、任务起始时间错误、任务结束时间错误。如果任务的周期、任务的起始时间和任务的结束时间均为大于等于零的整数,且任务的结束时间大于任务的起始时间,则认为脚本未出现任务注册语义异常,否则抛出异常。
步骤三、集成脚本开发模块与异常检测模块,将异常检测模块链接到脚本开发模块中。
脚本开发模块与异常检测模块集成包括两部分内容,分别是负责语法检查的脚本解释器与脚本开发模块集成以及语义检查与脚本开发模块集成。脚本解释器与脚本开发模块集成的主要工作是信息流重定向。脚本解释器采用模拟运行的方式进行语法检查,由于脚本运行时解释器无法获得控制台输出,为了使用户能够看到提示信息,需要将脚本中输出语句的输出信息重定向到脚本开发模块的界面中。脚本的语法错误信息也要重定向到脚本开发模块的界面中。语义检查模块与脚本开发模块集成时,完成的交互主要包含两部分,一是语义检查模块从脚本开发模块中导入变量表,根据变量表中变量的名称、类型等信息进行测试相关的语义检查。二是语义检查结果发送给脚本开发模块,最终通过脚本开发模块显示给用户。
实时处理机部分,采用Tornado开发环境构建总线驱动模块、任务注册及调度模块以及实时脚本解释器,并在运行前加载到实时处理机。具体包括以下三个步骤:
步骤一、采用总线、数据帧和帧变量的组织方式构建总线驱动模块。
在仿真及测试一体化平台出现以前,研制单位采用真实的设备进行仿真测试,被测设备通常需要与多个外部交联设备及测试设备通过总线进行连接(图1中虚线部分)。而构建仿真及测试一体化平台时,采用一台实时处理机代替了所有的外部交联设备和测试设备,其中,仿真模型脚本代替了外部交联设备,测试用例脚本代替了测试设备。此时,被测设备与实时处理机之间的总线需要通过总线驱动模块进行管理。对总线信息的描述采用总线-数据帧-帧变量的三级层次结构。下面通过实例讲解总线通讯模块的实现。如图2所示,总线驱动模块管理了两条通信总线,分别是RS-422总线和ARINC429总线,总线通信模块中记录每条总线的通信属性,如通信地址、波特率等。每条总线上传输一个或多个数据帧,每个数据帧具有传输周期、传输方向、数据帧长度等数据帧属性。如图2中的数据帧Frame1的传输周期为5ms,方向为箭头所指示的方向。每个数据帧是由多个帧变量构成,每个帧变量有变量类型,变量长度等信息。如图2中Frame1由三个帧变量构成。帧变量是仿真模型脚本和测试用例脚本操作的对象,仿真模型通过改变帧变量的值实现模型计算结果的发送,测试用例通过改变帧变量的值进行测试激励。仿真模型和测试用例对帧变量的值的修改,最终都在任务注册及调度模块的调度下,通过总线驱动模块在发送给被测设备。
步骤二、构建任务注册及调度模块,该模块接收脚本解释器在执行脚本时注册的仿真及测试任务、总线通信模块中的通信任务,总线通信模块中的通信任务,并按照周期及优先级属性执行调度算法对任务进行排序。
任务注册及调度模块管理的任务包括三部分,分别是仿真模型脚本中的仿真任务以及测试用例脚本中的测试任务,总线驱动模块中的通信任务。仿真和测试任务以脚本中注册的任务为调度单位,通信任务以数据帧为调度单位。下面通过实例讲述任务注册及调度模块的实现方式,如图3所示。1)所有的任务被添加到任务注册及调度模块中,如图3中,图中包含2个测试任务T1和T2,2个仿真任务S1和S2,以及两个通信任务F1和F2。2)将所有的任务按照周期分组,上述任务共分成4组,分别是5ms周期的T1,10ms周期的S1和F2,15ms周期的T2和S2,30ms周期的F1。3)求周期的最大公约数,然后以最大公约数为最小周期进行任务调度。此实例中5ms、10ms、15ms和30ms的最大公约数为5ms。以5ms为周期扫描所有任务,如果当前时刻所对应的毫秒数能够被任务的周期整除,则执行该任务。如图3中,在5ms时刻,T1的周期能够被5ms整除,此时执行T1。同理,在30ms时刻,T1、S1、F2和F1的周期都能够被30ms整除,此时,四个任务同时执行。
通过上述方式,任务注册及调度模块完成对所有仿真任务、测试任务及通信任务的管理。
步骤三、采用移植的方式在实时处理机中构建一个实时脚本解释器,解释执行仿真模型脚本和测试用例脚本。
仿真模型和测试用例具有不同的用途,仿真模型模拟了被测设备的外部交联设备,是被测设备正常运行的基础。仿真模型脚本接收被测件的仿真指令,通过脚本中描述仿真模型根据当前系统的信息进行仿真计算,最终获得仿真结果后发送给被测设备。当系统中仿真模型脚本与被测设备正常运行后,可以通过运行测试用例脚本对被测设备进行测试。仿真模型和测试用例虽然用途不同,但实现时都通过改变帧变量的方式对被测设备施加影响。底层实现原理相同,下面重点阐述测试用例脚本的实现方式。测试用例脚本中的测试激励主要完成测试输入值的改变,将输入值添加到输入帧变量列表,然后通过总线下发给被测系统。测试反馈主要完成测试结果的收集,被测软件的输出结果被接收并存放在输出帧变量列表,测试脚本需要查表获得需要的帧变量值。通过判断预期值与实际值是否相同,实现对被测软件功能、性能等指标的测试。最后阐述任务注册的实现过程,在实时处理机中,测试脚本承载的测试行为被封装成一个个独立的测试任务,测试任务分为两种,一种是周期型任务,另一种是事件型任务。周期型任务是在测试执行过程中按规定周期重复运行。事件型任务是在指定时间到达时执行一次。无论周期型任务和事件型任务,都需要接收任务注册及调度模块的统一调度,这就需要实现一个扩展的注册函数,将脚本任务注册到任务注册及调度模块中。注册函数主要将任务按照类型、执行时间以及周期等信息注册到任务注册及调度模块的任务列表。测试开始后,任务注册及调度模块根据任务的时间特性根据调度算法调用测试脚本函数。
为了清晰的描述测试脚本与实时处理器中其他模块之间的协作关系。图4中的示例展示了从测试脚本启动到测试激励发送到结果反馈的全过程。1)实时处理机中的主应用程序启动实时脚本解释器,根据路径通过FTP协议从主控机中加载测试脚本。2)启动脚本开始执行,执行脚本中的的reg_task函数。3)将测试任务注册到任务注册及调度模块,接收任务注册及调度模块的统一调度。4)调度模块按照调度策略在特定的时刻激活测试任务。执行脚本中定义的测试任务函数flap_slap_model。5)执行测试任务,调用inject_var函数,将测试输入帧变量通过总线驱动模块发送到被测系统完成测试激励。6)调用feedback_var函数,通知总线驱动模块,收集测试输出帧变量的值。7)将结果反馈获得的帧变量值发送给测试脚本模块。
通过上述步骤,脚本解释器、任务注册及调度模块以及总线驱动模块相互协作,完成了对被测系统的测试。最终实现了实时处理机模拟真实的测试设备。

Claims (4)

1.一种基于脚本的嵌入式软件仿真及测试一体化平台的构建方法,该方法的实现是基于主控机和实时处理机架构的嵌入式软件仿真测试环境,其中主控机是运行Windows系统的PC机,而实时处理机是运行VxWorks系统的工控机,其特征在于,
主控机部分,构建脚本开发模块及异常检测的模块,包括三个步骤:
步骤一、构建脚本开发模块,实现一个具备仿真模型导入功能的集成开发环境,用于开发测试用例脚本和仿真模型脚本;
首先在VisualStudio开发环境中导入SintillaNet窗体控件,然后基于该控件提供的API接口实现脚本编辑、脚本自动补全、代码折叠、语法高亮、代码注释功能,然后,使用混合编程技术实现模型导入功能,实现在脚本中调用C/C++语言编写的仿真模型;
步骤二、构建异常检测模块,包括脚本解释器和语义检查模块,
对Python标准解释器进行仿真和测试扩展获得一个用于语法检查的脚本解释器,仿真扩展包括扩展数据发送、数据接收以及任务注册的接口,测试扩展包括扩展测试激励、测试反馈和任务注册的接口,通过扫描脚本中的仿真及测试接口参数的有效性,实现语义检查;
步骤三、集成脚本开发模块与异常检测模块,将异常检测模块链接到脚本开发模块中;
实时处理机部分,采用Tornado开发环境构建总线驱动模块、任务注册及调度模块以及实时脚本解释器,并在运行前加载到实时处理机,具体包括以下三个步骤:
步骤一、采用总线、数据帧和帧变量的组织方式构建总线驱动模块;
首先,根据总线通信协议为每条总线设置通信参数,调用实时处理机板卡驱动提供的API实现数据收发;其次,将实时处理机与被测设备之间通信的数据以数据帧和帧变量的形式进行组织,并建立数据帧与总线的映射关系;最后,以数据帧为单位构建通信任务,在运行前将通信任务添加到任务注册及调度模块的任务容器中;
步骤二、构建任务注册及调度模块,
使用链表和数组实现容纳任务的容器,并提供一个仿真任务、测试任务以及通信任务注册的接口,接下来,实现任务调度算法,按照任务的周期和运行时间对任务进行调度;
步骤三、采用移植的方式在实时处理机中构建一个实时脚本解释器,解释执行仿真模型脚本和测试用例脚本;
对于仿真部分,数据发送、数据接收接口在实现时,调用总线驱动模块的功能实现与被测设备之间的信息交互;任务注册接口实现时,将仿真模型任务添加到任务注册及调度模块的任务容器中;对于测试部分,测试激励接口在实现时调用总线驱动模块向被测设备发送测试指令;测试反馈接口在实现时调用总线驱动模块接收被测设备的实际测试结果;任务注册接口在实现时,将测试任务添加到任务注册及调度模块的任务容器中;
所述一体化平台中的仿真模型和测试用例均采用脚本语言进行描述;
所述主控机和实时处理机中的两个解释器对脚本语言的语法支持能力一致;
所述主控机部分步骤二中在扩展任务注册接口时,注册任务包括仿真任务、测试任务以及总线通信任务三种,其中,每种任务都包括周期型和事件型两种类型,且能够指定任务的起止时间;
所述实时处理机中,仿真模型脚本和测试用例脚本的执行均通过实时脚本解释器,仿真模型和测试用例可以通过脚本解释器建立信息交互。
2.根据权利要求1所述的一种基于脚本的嵌入式软件仿真及测试一体化平台的构建方法,其特征在于,主控机部分步骤二中的异常检测模块不仅包括脚本语法检查,还包括仿真及测试相关的语义检查。
3.根据权利要求1所述的一种基于脚本的嵌入式软件仿真及测试一体化平台的构建方法,其特征在于,实时处理机中,实时脚本解释器的是通过移植的方式构建,在移植的过程中,删除了与仿真和测试无关的模块。
4.根据权利要求1所述的一种基于脚本的嵌入式软件仿真及测试一体化平台的构建方法,其特征在于,在实时处理机中构建实时脚本解释器时,将脚本解释器与系统映像模块分离。
CN201510885404.8A 2015-12-04 2015-12-04 基于脚本的嵌入式软件仿真及测试一体化平台的构建方法 Active CN105528290B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510885404.8A CN105528290B (zh) 2015-12-04 2015-12-04 基于脚本的嵌入式软件仿真及测试一体化平台的构建方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510885404.8A CN105528290B (zh) 2015-12-04 2015-12-04 基于脚本的嵌入式软件仿真及测试一体化平台的构建方法

Publications (2)

Publication Number Publication Date
CN105528290A true CN105528290A (zh) 2016-04-27
CN105528290B CN105528290B (zh) 2020-09-22

Family

ID=55770533

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510885404.8A Active CN105528290B (zh) 2015-12-04 2015-12-04 基于脚本的嵌入式软件仿真及测试一体化平台的构建方法

Country Status (1)

Country Link
CN (1) CN105528290B (zh)

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106326107A (zh) * 2016-07-27 2017-01-11 北京计算机技术及应用研究所 基于仿真环境的非侵入式嵌入式软件异常处理验证方法
CN107463434A (zh) * 2017-08-11 2017-12-12 恒丰银行股份有限公司 一种分布式任务处理方法与设备
CN108121657A (zh) * 2017-11-29 2018-06-05 北京京航计算通讯研究所 基于系统模型的可编程逻辑器件软件仿真验证系统
CN108169586A (zh) * 2017-11-30 2018-06-15 江西洪都航空工业集团有限责任公司 一种用于航空电子系统集成测试方法
CN108536125A (zh) * 2018-04-03 2018-09-14 北京航空航天大学 人工智能程序员书写数字飞行器源程序的自动检测方法
CN109976305A (zh) * 2018-12-28 2019-07-05 北京航天测控技术有限公司 一种飞行器自动控制系统实时闭环测试系统
CN110908296A (zh) * 2019-11-25 2020-03-24 深圳供电局有限公司 一种对虚拟电厂调控系统进行自动测试的方法及系统
CN111258889A (zh) * 2020-01-10 2020-06-09 北京航天测控技术有限公司 一种基于Qt的自动化测试测量方法
CN112162921A (zh) * 2020-09-15 2021-01-01 广州市方瞳科技有限责任公司 一种工业自动化测试与控制系统
CN112799968A (zh) * 2021-04-08 2021-05-14 湖南高至科技有限公司 一种基于脚本的测试驱动建模系统及方法
CN112866218A (zh) * 2021-01-07 2021-05-28 广州邦讯信息系统有限公司 远程收集系统信息的处理方法及相关设备
CN113051174A (zh) * 2021-04-14 2021-06-29 卡斯柯信号有限公司 基于xddl生成仿真协议消息的方法
CN113434255A (zh) * 2021-06-30 2021-09-24 青岛海尔科技有限公司 虚拟设备的创建方法及其装置
CN115685781A (zh) * 2022-10-13 2023-02-03 交控科技股份有限公司 一种在线仿真测试方法及装置
WO2024031553A1 (zh) * 2022-08-11 2024-02-15 西门子股份公司 实时控制方法、实时控制装置、计算设备及存储介质
CN117648263A (zh) * 2024-01-29 2024-03-05 苏州联芸科技有限公司 待测设计的测试方法、装置、电子设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102006060322A1 (de) * 2006-12-20 2008-06-26 Deutsche Telekom Ag Verfahren und Vorrichtung zum automatischen Testen von modellbasierten Funktionen
CN101719096A (zh) * 2009-12-29 2010-06-02 北京航空航天大学 一种提高实时嵌入式系统测试脚本执行速度的方法
CN101950157A (zh) * 2010-07-30 2011-01-19 北京航空航天大学 一种具有高实时性的飞行仿真系统
CN103995777A (zh) * 2014-05-29 2014-08-20 上海科梁信息工程有限公司 嵌入式软件黑盒自动化测试系统及测试方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102006060322A1 (de) * 2006-12-20 2008-06-26 Deutsche Telekom Ag Verfahren und Vorrichtung zum automatischen Testen von modellbasierten Funktionen
CN101719096A (zh) * 2009-12-29 2010-06-02 北京航空航天大学 一种提高实时嵌入式系统测试脚本执行速度的方法
CN101950157A (zh) * 2010-07-30 2011-01-19 北京航空航天大学 一种具有高实时性的飞行仿真系统
CN103995777A (zh) * 2014-05-29 2014-08-20 上海科梁信息工程有限公司 嵌入式软件黑盒自动化测试系统及测试方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
刘小军: ""基于VxWorks的实时仿真系统软件设计与开发"", 《中国优秀硕士学位论文全文数据库工程科技Ⅱ辑》 *
周汉清,刘畅: ""嵌入式软件仿真测试环境实时脚本技术的研究"", 《航空标准化与质量》 *
蒋崇武,刘斌,王轶辰,胡璇: ""基于Python的实时嵌入式软件测试脚本"", 《计算机工程》 *

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106326107B (zh) * 2016-07-27 2019-03-08 北京计算机技术及应用研究所 基于仿真环境的非侵入式嵌入式软件异常处理验证方法
CN106326107A (zh) * 2016-07-27 2017-01-11 北京计算机技术及应用研究所 基于仿真环境的非侵入式嵌入式软件异常处理验证方法
CN107463434B (zh) * 2017-08-11 2021-08-24 恒丰银行股份有限公司 一种分布式任务处理方法与设备
CN107463434A (zh) * 2017-08-11 2017-12-12 恒丰银行股份有限公司 一种分布式任务处理方法与设备
CN108121657A (zh) * 2017-11-29 2018-06-05 北京京航计算通讯研究所 基于系统模型的可编程逻辑器件软件仿真验证系统
CN108169586A (zh) * 2017-11-30 2018-06-15 江西洪都航空工业集团有限责任公司 一种用于航空电子系统集成测试方法
CN108536125A (zh) * 2018-04-03 2018-09-14 北京航空航天大学 人工智能程序员书写数字飞行器源程序的自动检测方法
CN108536125B (zh) * 2018-04-03 2020-12-29 北京航空航天大学 人工智能程序员书写数字飞行器源程序的自动检测方法
CN109976305A (zh) * 2018-12-28 2019-07-05 北京航天测控技术有限公司 一种飞行器自动控制系统实时闭环测试系统
CN110908296A (zh) * 2019-11-25 2020-03-24 深圳供电局有限公司 一种对虚拟电厂调控系统进行自动测试的方法及系统
CN111258889A (zh) * 2020-01-10 2020-06-09 北京航天测控技术有限公司 一种基于Qt的自动化测试测量方法
CN112162921A (zh) * 2020-09-15 2021-01-01 广州市方瞳科技有限责任公司 一种工业自动化测试与控制系统
CN112162921B (zh) * 2020-09-15 2023-08-25 广州市方瞳科技有限责任公司 一种工业自动化测试与控制系统
CN112866218A (zh) * 2021-01-07 2021-05-28 广州邦讯信息系统有限公司 远程收集系统信息的处理方法及相关设备
CN112799968A (zh) * 2021-04-08 2021-05-14 湖南高至科技有限公司 一种基于脚本的测试驱动建模系统及方法
CN113051174A (zh) * 2021-04-14 2021-06-29 卡斯柯信号有限公司 基于xddl生成仿真协议消息的方法
CN113051174B (zh) * 2021-04-14 2022-07-26 卡斯柯信号有限公司 基于xddl生成仿真协议消息的方法
CN113434255A (zh) * 2021-06-30 2021-09-24 青岛海尔科技有限公司 虚拟设备的创建方法及其装置
CN113434255B (zh) * 2021-06-30 2024-03-22 青岛海尔科技有限公司 虚拟设备的创建方法及其装置
WO2024031553A1 (zh) * 2022-08-11 2024-02-15 西门子股份公司 实时控制方法、实时控制装置、计算设备及存储介质
CN115685781A (zh) * 2022-10-13 2023-02-03 交控科技股份有限公司 一种在线仿真测试方法及装置
CN117648263A (zh) * 2024-01-29 2024-03-05 苏州联芸科技有限公司 待测设计的测试方法、装置、电子设备和存储介质
CN117648263B (zh) * 2024-01-29 2024-05-10 苏州联芸科技有限公司 待测设计的测试方法、装置、电子设备和存储介质

Also Published As

Publication number Publication date
CN105528290B (zh) 2020-09-22

Similar Documents

Publication Publication Date Title
CN105528290A (zh) 基于脚本的嵌入式软件仿真及测试一体化平台的构建方法
CN107273286B (zh) 针对任务应用的场景自动化测试平台及方法
CN102650966B (zh) 一种面向复用的嵌入式软件测试方法及其测试系统
CN107562969B (zh) 航空发动机控制系统软件的集成方法和装置
CN101241467A (zh) 一种面向Web应用的自动化白盒测试系统及方法
CN101739334A (zh) 嵌入式软件自动化测试方法
CN110362490B (zh) 融合iOS与Android移动应用的自动化测试方法及系统
KR20080065936A (ko) 동적 피드백 제어 시스템 시뮬레이팅 방법, 시뮬레이션동적 피드백 제어 시스템 준비 방법 및 동적 피드백 제어시스템 시뮬레이팅 시스템
CN102722440A (zh) 一种嵌入式系统可执行代码的调试装置、调试方法及嵌入式系统
CN111176984A (zh) 一种面向信号的自动测试实现方法
CN103412817B (zh) 自动化测试脚本脱机调试方法及系统
CN104461854B (zh) 一种舰船装备软件通用仿真测试平台
CN112306861A (zh) 一种基于Unittest和Jenkins工具的接口自动化测试体系及方法
CN116107893A (zh) 一种异构平台嵌入式软件测试验证系统及方法
CN102291274A (zh) 一种实现网络测试仪表自动适配的系统及方法
WO2017113848A1 (zh) 测试用例的测试方法及测试平台、模拟测试设备
CN202694145U (zh) 主控板的测试系统
Matalonga et al. Matching context aware software testing design techniques to ISO/IEC/IEEE 29119
CN100407663C (zh) 一种电信智能业务的通用测试系统及方法
CN103576667B (zh) 主控板的测试方法、装置及系统
CN113919158A (zh) 一种用于飞行控制面板的仿真方法、装置及存储介质
CN108009086B (zh) 基于用例分解和功能学习的系统自动化测试方法
CN109557898A (zh) 一种用于各型无人机地面控制站的通用系统综合验证设备
CN107317811B (zh) 一种模拟plc的实现方法
CN106354966B (zh) 芯片ide工程文件转换及快速配置仿真调试环境的方法

Legal Events

Date Code Title Description
C06 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